小型移動ロボットによるRTミドルウェア学習教材

小型移動ロボットによるRTミドルウェア学習教材

投稿者: 
Miyamoto Nobuhiko
小型移動ロボットによるRTミドルウェア学習教材

概要・特徴

  • Raspberry Piマウス、LEGO Mindstorms EV3によるRTミドルウェア教材
    • ロボットを制御するRTCの作成手順、作成例、講習会用チュートリアル、各デバイスを操作するプログラムの作成手順、無線LANアクセスポイント化の手順などをドキュメントに記載

仕様

  • Raspberry Piマウス
    • 言語: C++、Python
    • OS:Windows、Raspbian
    • RTミドルウェア:OpenRTM-aist-1.1.2-RELEASE(Windows)、OpenRTM-aist-1.1.1-RELEASE、OpenRTM-aist-Python-1.1.0-RELEASE(Raspbian)
  • LEGO Mindstorms EV3
    • 言語: C++、Python
    • OS:Windows、ev3dev
    • RTミドルウェア:OpenRTM-aist-1.1.2-RELEASE(Windows)、OpenRTM-aist-1.1.1-RELEASE、OpenRTM-aist-Python-1.1.0-RELEASE(ev3dev)

ソースコードおよびマニュアル

概要スライド

ライセンス

  • LGPL

注意点

  • ドキュメントについてはRTミドルウェアコンテスト2015の「LEGO Mindstorms EV3を用いたロボットプログラミング教材の開発」のマニュアルに追加する形で作成しています。以下のページについては著者が作成したものではないためコンテスト審査の際は注意してください。

動画

問合先(メールアドレス): 
n-miyamoto[at]aist.go.jp
Resources
Project Information
OS: 
Windows
Linux
言語: 
C++
OpenRTM ver.: 
1.1
Average: 
5
Average: 5 (2 votes)
最終更新日時: 
水, 2016-11-16 13:16

コメント

投稿者: 
産総研の高橋です.
内容を確認させていただきました.こちらもマニュアル,RTC等非常に整備されており非常に見応えがありました.
ピンポイントな指摘で申し訳ございませんが,ControlEducatorVehicle について3点気になる箇所がありました.

ControlEducatorVehicle::onExecute()
・m_touchIn を2度isNewで評価している
・全てのセンサ処理を必ず実行している(例えば,タッチセンサで停止する場合などは他のセンサ入力処理はスキップできるのでは=処理の優先度)
・OnExecuteの中でsleepしている(ノンブロッキングな設計にするのは難しいでしょうか)
投稿者: 

産総研の宮本です。 コメントありがとうございます。

m_touchを2度isNewで評価している件ですが、本来であれば以下のようにバッファのデータを全て読み込みたかったのですが、うっかりしていたみたいです。

 while(m_touchIn.isNew())m_touchIn.read();

この点については修正しました。ご指摘ありがとうございます。

全てのセンサ処理を必ず実行している件ですが、タッチセンサの処理内で後退、回転による回避運動は終了しているので、後のセンサ処理を実行しても問題はないと思います。

onExecute内でsleepしている件ですが、タッチセンサによる回避運動や超音波センサの回転運動の一連の動作を、例えばonExecute関数内で「今は後退運動のモードに遷移しているので以下の処理を実行する」などとした場合に処理が複雑化すると思います。 「一定時間後にある処理を実行したい」という場合に、onExecute内で逐一時間を計測して指定した時間を超えたかの判定が必要になるため、実装が難しくなりそうです。 onExecute内で処理を止めるのはあまり好ましくないのですが、簡単に実装するために一連の動作をまとめて実行するようにしています。

投稿者: 
産総研の高橋です.
ご回答いただきありがとうございました.
こちらについても設計思想がよく理解できました.

また,追加のコメントなのですが,
静的解析ツールでチェックしたところ,コードのクリーニングができそうな箇所が何件か見つかりましたので,修正する際は下記を参考にして下さい.
(python の不要な import くらいでしょうか)
https://github.com/takahasi/RTM_Contest_2016/blob/master/scripts/report_20161121.txt
投稿者: 

教えていただいてありがとうございます。 参考にします。

ただ、以下の警告についてはRTCビルダでPythonのソースコードを生成すると自分で修正しない限り警告が出てしまうようです。

  • 'time' imported but unused
  • local variable 'comp' is assigned to but never used

timeのインポートについては、OpenRTM-aistの中で結局timeのインポートをしているので動作には影響しないとは思うのですが、一応修正はします。

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2159
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク