小型移動ロボットによるRTミドルウェア学習教材
小型移動ロボットによるRTミドルウェア学習教材
投稿日時:
水, 2016-10-26 09:25
概要・特徴
- 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)
ソースコードおよびマニュアル
- Raspberry Piマウス
- LEGO Mindstorms EV3
- 共通
- ソースコード
概要スライド
ライセンス
- LGPL
注意点
- Raspberry Piマウス制御コンポーネントについては以下のソースコードを利用しています。
- ドキュメントについてはRTミドルウェアコンテスト2015の「LEGO Mindstorms EV3を用いたロボットプログラミング教材の開発」のマニュアルに追加する形で作成しています。以下のページについては著者が作成したものではないためコンテスト審査の際は注意してください。
動画
問合先(メールアドレス):
n-miyamoto[at]aist.go.jp
最終更新日時:
水, 2016-11-16 13:16
コメント
内容を確認させていただきました.こちらもマニュアル,RTC等非常に整備されており非常に見応えがありました.
ピンポイントな指摘で申し訳ございませんが,ControlEducatorVehicle について3点気になる箇所がありました.
ControlEducatorVehicle::onExecute()
・m_touchIn を2度isNewで評価している
・全てのセンサ処理を必ず実行している(例えば,タッチセンサで停止する場合などは他のセンサ入力処理はスキップできるのでは=処理の優先度)
・OnExecuteの中でsleepしている(ノンブロッキングな設計にするのは難しいでしょうか)
産総研の宮本です。 コメントありがとうございます。
m_touchを2度isNewで評価している件ですが、本来であれば以下のようにバッファのデータを全て読み込みたかったのですが、うっかりしていたみたいです。
この点については修正しました。ご指摘ありがとうございます。
全てのセンサ処理を必ず実行している件ですが、タッチセンサの処理内で後退、回転による回避運動は終了しているので、後のセンサ処理を実行しても問題はないと思います。
onExecute内でsleepしている件ですが、タッチセンサによる回避運動や超音波センサの回転運動の一連の動作を、例えばonExecute関数内で「今は後退運動のモードに遷移しているので以下の処理を実行する」などとした場合に処理が複雑化すると思います。 「一定時間後にある処理を実行したい」という場合に、onExecute内で逐一時間を計測して指定した時間を超えたかの判定が必要になるため、実装が難しくなりそうです。 onExecute内で処理を止めるのはあまり好ましくないのですが、簡単に実装するために一連の動作をまとめて実行するようにしています。
ご回答いただきありがとうございました.
こちらについても設計思想がよく理解できました.
また,追加のコメントなのですが,
静的解析ツールでチェックしたところ,コードのクリーニングができそうな箇所が何件か見つかりましたので,修正する際は下記を参考にして下さい.
(python の不要な import くらいでしょうか)
https://github.com/takahasi/RTM_Contest_2016/blob/master/scripts/report_20161121.txt
教えていただいてありがとうございます。 参考にします。
ただ、以下の警告についてはRTCビルダでPythonのソースコードを生成すると自分で修正しない限り警告が出てしまうようです。
timeのインポートについては、OpenRTM-aistの中で結局timeのインポートをしているので動作には影響しないとは思うのですが、一応修正はします。