Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

C#/Java & Linux で始める ET ロボコン

2,849 views

Published on

6/13(土)の OSC 2015 Hokkaido で行った ET ロボコンの紹介セミナーで使ったスライド。

Published in: Software
  • Be the first to comment

C#/Java & Linux で始める ET ロボコン

  1. 1. Copyright © 2015 ETロボコン実行委員会 All rights reserved. C#/Java & Linux で始める ET ロボコン ET ロボコン北海道地区大会 実行委員会
  2. 2. Copyright © 2015 ETロボコン実行委員会 All rights reserved. ETロボコン2015競技内容 1 プライマリー アドバンスト イノベーター部門 走行体 コース 難易度は2014年同様 ハイレベルな課題 指定なし 自由度向上 デ ベ ロ ッ パ ー 部 門  ベーシック  難所 少  ベーシック  難所 多  ショートカット  ダイナミック パフォーマ ンス エリア  助走なし  プレゼン重視
  3. 3. Copyright © 2015 ETロボコン実行委員会 All rights reserved.  目的  若手技術者や学生向けの学習の場を提供・育成  開催概要  自律走行ロボットの、走行実技と設計を競う  年間スケジュール  実施説明会(3/B)~参加申し込み(4/M)  技術教育1、2 (5/M~6/B)  試走会1、2(8、9月)  モデル提出~モデル審査(9/M~10/B)  地区大会実技コンテスト(一般公開)(9/M~10/B) どんなコンテスト?
  4. 4. Copyright © 2015 ETロボコン実行委員会 All rights reserved.  目的  若手技術者や学生向けの学習の場を提供・育成  開催概要  自律走行ロボットの、走行実技と設計を競う  年間スケジュール  実施説明会(3/B)~参加申し込み(4/M)  技術教育1、2 (5/M~6/B)  試走会1、2(8、9月)  モデル提出~モデル審査  地区大会実技コンテスト(一般公開)(9/M~10/B)  全国チャンピオンシップ大会(11/M @横浜) どんなコンテスト?
  5. 5. Copyright © 2015 ETロボコン実行委員会 All rights reserved. 2015年 参加チーム 4 地区大会 参加チーム数 地区大会 参加可能チーム数 北海道 15 北陸 12 東北 25 関西 31 北関東 25 中四国 24 東京 83 九州北 24 南関東 31 九州南 10 東海 44 沖縄 22 2015年 参加チーム数 346
  6. 6. Copyright © 2015 ETロボコン実行委員会 All rights reserved. 部門構成と変遷  2013: アーキテクト部門の創設(※2015名称変更)  2014: ディベロッパー部門のクラス分け  新走行体(トライク型)を導入  2015: 新プラットフォームの導入(移行)  LEGO Mindstorms NXT から EV3 へ  ARM7 48MHz → ARM9 300MHz (64KB → 16MB)  Linux ベースのプラットフォームにも対応  公式プラットフォーム: RTOS (TOPPERS EV3RT)  認定プラットフォーム: leJOS (Java), MonoBrick (C#) 5
  7. 7. Copyright © 2015 ETロボコン実行委員会 All rights reserved. 部門構成と変遷  2013: アーキテクト部門の創設(※2015名称変更)  2014: ディベロッパー部門のクラス分け  新走行体(トライク型)を導入  2015: 新プラットフォームの導入(移行)  LEGO Mindstorms NXT から EV3 へ  ARM7 48MHz → ARM9 300MHz (64KB → 16MB)  Linux ベースのプラットフォームにも対応  公式プラットフォーム: RTOS (TOPPERS EV3RT)  認定プラットフォーム: leJOS (Java), MonoBrick (C#) 6 EV3way(二輪倒立振子): プライマリークラス ETrikeV(トライク型): アドバンストクラス
  8. 8. Copyright © 2015 ETロボコン実行委員会 All rights reserved. ETロボコン2015競技内容 7 プライマリー アドバンスト イノベーター部門 走行体 コース 難易度は2014年同様 ハイレベルな課題 指定なし 自由度向上 デ ベ ロ ッ パ ー 部 門  ベーシック  難所 少  ベーシック  難所 多  ショートカット  ダイナミック パフォーマ ンス エリア  助走なし  プレゼン重視
  9. 9. Copyright © 2015 ETロボコン実行委員会 All rights reserved. ETロボコン2015競技内容 8 プライマリー アドバンスト イノベーター部門 走行体 コース 難易度は2014年同様 ハイレベルな課題 指定なし 自由度向上 デ ベ ロ ッ パ ー 部 門  ベーシック  難所 少  ベーシック  難所 多  ショートカット  ダイナミック パフォーマ ンス エリア  助走なし  プレゼン重視
  10. 10. Copyright © 2015 ETロボコン実行委員会 All rights reserved. ETロボコン2015競技内容 9 プライマリー アドバンスト イノベーター部門 走行体 コース 難易度は2014年同様 ハイレベルな課題 指定なし 自由度向上 デ ベ ロ ッ パ ー 部 門  ベーシック  難所 少  ベーシック  難所 多  ショートカット  ダイナミック パフォーマ ンス エリア  助走なし  プレゼン重視
  11. 11. Copyright © 2015 ETロボコン実行委員会 All rights reserved. ETロボコン2015部門構成 10 プライマリー クラス アドバンスト クラス イノベーター部門 1.対象となる エンジニア明確に 2.学ぶステップを 明確に、 より教育効果を 高める デ ベ ロ ッ パ | 部 門 基礎 応用 生み出す 部門名称変更
  12. 12. Copyright © 2015 ETロボコン実行委員会 All rights reserved. 公式サポートする開発環境 11 項目 NXT EV3 名称 nxtOSEK EV3RT MonoBrick leJOS OS種別 TOPPERSリアルタイム Linux 言語 C、C++ C、C++ C# Java 統合 開発環境 - - Mono- Develop Eclipse デバッガ - - ◯ ◯ プログラム 転送 USB cable SDカード Bluetooth USB cable Bluetooth WiFi USB cable Bluetooth WiFi EV3開発環境構築ガイド https://sourceforge.net/p/etroboev3/wiki/ ※実行委員会によるサポートは行われないが、上記以外の環境でも参加は可能(Ruby、Python等)
  13. 13. Copyright © 2015 ETロボコン実行委員会 All rights reserved. サンプルコードとデモ  http://sourceforge.net/p/etroboev3/code/ci/m aster/tree/SampleCode/ 12
  14. 14. Copyright © 2015 ETロボコン実行委員会 All rights reserved. サンプルコードとデモ  http://sourceforge.net/p/etroboev3/code/ci/m aster/tree/SampleCode/ 13
  15. 15. Copyright © 2015 ETロボコン実行委員会 All rights reserved. RTOS について  Linux に比べて何かいいことあるの?  どんな特徴があるの? 14
  16. 16. Copyright © 2015 ETロボコン実行委員会 All rights reserved. C# (MonoBrick) の場合 15 // 2輪倒立振子ライントレースロボットの MonoBrick 用 c# サンプルプログラム。 namespace ETTobocon.EV3.Sample { class MainClass { ... static void run(EV3body body, NetworkStream connection){ int battery = Brick.GetVoltageMilliVolt(); float forward = 0.0F; float turn = 0.0F; ... while (! body.touch.IsPressed()) { ... int gyroNow = body.gyro.Read(); // gyro right int thetaL = body.motorL.GetTachoCount(); int theTaR = body.motorR.GetTachoCount(); sbyte pwmL, pwmR; Balancer.control( (float)forward, (float)turn, (float)gyroNow, (float)GYRO_OFFSET, (float)thetaL, (float)theTaR, (float)battery, out pwmL, out pwmR); body.motorL.SetPower(pwmL); body.motorR.SetPower(pwmR); // バランス制御のみだと3msecで安定 // 尻尾制御と障害物検知を使用する場合2msecで安定 Thread.Sleep(2); } } ... } } 本来は、4ms 周期で倒立振子制御動作を 行わなければならない!
  17. 17. Copyright © 2015 ETロボコン実行委員会 All rights reserved. C# (MonoBrick) の場合 16 時間応答性が正確ではない: - 仮想マシン方式のプログラム実行(C#, Java) - 汎用OS (Linux) の特性
  18. 18. Copyright © 2015 ETロボコン実行委員会 All rights reserved. RTOS (EV3RT, nxtOSEK) Real Time Operating System 17
  19. 19. Copyright © 2015 ETロボコン実行委員会 All rights reserved. 18 代表的な仕組み  RTOS とは  特徴:リアルタイム応答性能  一定時間内に、指定した動作を実行  倒立振子制御など、時間制約の厳しい処理に適している  アプリケーションプログラムの実行  アプリケーションが OS と一体になるものも  アプリケーションを一つしか動かせない場合も  汎用 OS (Linux, Windows, OS X, etc.) との比較  動作の「軽さ」(起動時間、応答時間): ◎  マルチプロセス、動的ロード、仮想記憶の有無:△  メモリ保護、カーネル(OS 本体)保護の有無: △ タスク(スレッド)切り替えや割り込み 応答の時間をなるべく短くするために、 汎用 OS に比べると、機能に制限があり ます。 汎用 OS に比べると 制限がある反面、低 機能なプロセッサで も十分動く!
  20. 20. Copyright © 2015 ETロボコン実行委員会 All rights reserved. 19 代表的な仕組み  リアルタイム制御  実現要素  タスクと割り込み通知  タスク:汎用 OS のスレッドに相当  定周期動作:一定の時間間隔で動作を実行  実現方策(定周期動作)  ループ内でのスリープ  一定の時間間隔になるようスリープ関数で調整  周期起動タスク・周期ハンドラ  一定周期で繰り返し起動(実行)されるタスク  周期アラームによる起床 + ループ中での休止 ハードウェアによる割り込みを OS が応答処理。 OS が、必要に応じてアプリケーションのタスクに 通知(アラームやイベントフラグの発火)。 汎用 OS とは異なり、 RTOS では、このタイ ミングが極めて正確で す。 RTOS でのプログラミング:タスクが 実行する処理を、関数として実装 複数の定周期動作を行う場合(例:倒立振子制御と Bluetooth 通信)、一つのタスクでスリープ関数を 使うだけでは、正確なタイミング合わせが難しい。 複数のタスクを 動かす時の方策 RTOS は、タスク起動のオーバーヘッドが 小さいので、数[ms]おきでも問題ない。 スリープ関数なし でも大丈夫。 複数のタスクが存在する場合、最も優先度の高いタスクに CPU が割り当 てられて実行され、そのタスクが終了したり待ち状態になるまで、それよ り低い優先度のタスクは実行されません:絶対優先度(RTOS の特徴)
  21. 21. Copyright © 2015 ETロボコン実行委員会 All rights reserved. 20 EV3RT と nxtOSEK  EV3RT の特徴  カーネル保護/メモリ保護  アプリケーションの動的ローディング  実行開始点(エントリポイント)  nxtOSEK  特徴  カーネル保護/メモリ保護:無し  アプリケーションと OS が結合  開発環境とハードウェア(NXT)  C/C++ コンパイラのバージョン  搭載メモリ量による制約(Flash メモリ、RAM) 一般的な C/C++ プログラムとは違い、main() ルーチンでは なく、(メインタスクの)タスク関数から実行が始まります。 より正確に言うと、コンフィグレーショ ンファイル(.cfg)で設定されたタスク のうち、起動状態での生成を指定された ものの中で、最高優先度のタスクが最初 に実行されます。EV3RT では、API 内 部の初期化タスクが最初に実行されます。 サンプルコードでは、main_task() を メインタスクのタスク関数として設定し ています(初期化タスクより低優先度)。 nxtOSEK に比べて良い点 少し古いバージョン(GCC 4.0)です。 サイズが大きいプログラムや、 メモリを多く使うプログラム は動きません。(EV3RT 比)
  22. 22. Copyright © 2015 ETロボコン実行委員会 All rights reserved. 21 EV3RT での開発  汎用 OS との違い  タスク(スレッド)を動的に生成できない  他のカーネルオブジェクトも同様(アラームやイベントフラグ)  コンフィグレーションファイル(.cfg)  静的 API の呼び出しを .cfg ファイルに記述して設定  .cfg ファイルをコンフィグレータで処理  アプリケーションの作成に必要なもの  ソースファイルとヘッダファイル(.c, .cpp, .h, .hpp)  コンフィグレーションファイル(.cfg)  makefile(Makefile.inc, Makefile.app, Makefile.appmod) OS の動作を「軽く」するための制限。 全て、アプリケーション(や OS)の初期化時にしか生成できない! コンフィグレータが、.cfg の内容に従って初期化処理のコードを生成する。 make コマンドを使って ビルドします。 静的 API で生成。
  23. 23. Copyright © 2015 ETロボコン実行委員会 All rights reserved. モデル審査について 22
  24. 24. Copyright(c) ETロボコン実行委員会 All rights reserved. 23 機能実現 表現 指定された機能を実現する ための構成・方法が 正しく記載されているか? モデルの内容が、正しく・ 分かりやすく記載されてい るか? 「ソフトウェアの内容をモデルで正しく表現」 することを重視した審査を行います • 選択した機能を実現するための方法が、 モデルで正しく分かり易く提示できていることを 審査します プライマリークラスの審査基準 ここが大事⇒ ⇐ここは前提
  25. 25. Copyright(c) ETロボコン実行委員会 All rights reserved. 24 「技術を応用するスキル」を競うために、高性能 を実現する制御技術と、それをソフトウェアとし て実現するための設計技術を評価します • 「未確定仕様への対応」では、段階的に確定される 仕様に対して、迅速に対応するための工夫がなされ ているか、を評価します アドバンストクラスの審査基準 ⇐ここに期待! 未確定 仕様への 対応 設計技術 制御技術 制御技術で記載された内容をソ フトウェアとして実現するため のアーキテクチャが十分に検討 されているか?機能を実現するために必要な 要素技術と、それらを使って コースをどのように走行する かの手順・方法が十分に検討 されているか? 段階的に確定される仕様に対 応して、ソフトウェアを効率 的に修正可能とするための工 夫がなされているか?

×