c#/java & linux で始める et ロボコン

25
Copyright © 2015 ETロボコン実行委員会 All rights reserved. C#/Java & Linux で始める ET ロボコン ET ロボコン北海道地区大会 実行委員会

Upload: shin-ya-koga

Post on 30-Jul-2015

408 views

Category:

Software


0 download

TRANSCRIPT

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

Copyright © 2015 ETロボコン実行委員会 All rights reserved.

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

ET ロボコン北海道地区大会

実行委員会

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

Copyright © 2015 ETロボコン実行委員会 All rights reserved.

ETロボコン2015競技内容

1

プライマリー

アドバンスト

イノベーター部門

走行体 コース

難易度は2014年同様

ハイレベルな課題

指定なし

自由度向上

デベロッパー部門

ベーシック 難所 少

ベーシック 難所 多 ショートカット ダイナミック

パフォーマンス エリア

助走なし プレゼン重視

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

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)

どんなコンテスト?

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

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 @横浜)

どんなコンテスト?

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

Copyright © 2015 ETロボコン実行委員会 All rights reserved.

2015年 参加チーム

4

地区大会 参加チーム数 地区大会 参加可能チーム数

北海道 15 北陸 12

東北 25 関西 31

北関東 25 中四国 24

東京 83 九州北 24

南関東 31 九州南 10

東海 44 沖縄 22

2015年 参加チーム数 346

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

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

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

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(トライク型): アドバンストクラス

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

Copyright © 2015 ETロボコン実行委員会 All rights reserved.

ETロボコン2015競技内容

7

プライマリー

アドバンスト

イノベーター部門

走行体 コース

難易度は2014年同様

ハイレベルな課題

指定なし

自由度向上

デベロッパー部門

ベーシック 難所 少

ベーシック 難所 多 ショートカット ダイナミック

パフォーマンス エリア

助走なし プレゼン重視

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

Copyright © 2015 ETロボコン実行委員会 All rights reserved.

ETロボコン2015競技内容

8

プライマリー

アドバンスト

イノベーター部門

走行体 コース

難易度は2014年同様

ハイレベルな課題

指定なし

自由度向上

デベロッパー部門

ベーシック 難所 少

ベーシック 難所 多 ショートカット ダイナミック

パフォーマンス エリア

助走なし プレゼン重視

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

Copyright © 2015 ETロボコン実行委員会 All rights reserved.

ETロボコン2015競技内容

9

プライマリー

アドバンスト

イノベーター部門

走行体 コース

難易度は2014年同様

ハイレベルな課題

指定なし

自由度向上

デベロッパー部門

ベーシック 難所 少

ベーシック 難所 多 ショートカット ダイナミック

パフォーマンス エリア

助走なし プレゼン重視

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

Copyright © 2015 ETロボコン実行委員会 All rights reserved.

ETロボコン2015部門構成

10

プライマリー クラス

アドバンスト クラス

イノベーター部門

1.対象となる エンジニア明確に 2.学ぶステップを 明確に、 より教育効果を 高める

デベロッパ| 部門

基礎

応用

生み出す 部門名称変更

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

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等)

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

Copyright © 2015 ETロボコン実行委員会 All rights reserved.

サンプルコードとデモ

http://sourceforge.net/p/etroboev3/code/ci/master/tree/SampleCode/

12

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

Copyright © 2015 ETロボコン実行委員会 All rights reserved.

サンプルコードとデモ

http://sourceforge.net/p/etroboev3/code/ci/master/tree/SampleCode/

13

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

Copyright © 2015 ETロボコン実行委員会 All rights reserved.

RTOS について

Linux に比べて何かいいことあるの?

どんな特徴があるの?

14

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

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 周期で倒立振子制御動作を行わなければならない!

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

Copyright © 2015 ETロボコン実行委員会 All rights reserved.

C# (MonoBrick) の場合

16

時間応答性が正確ではない: - 仮想マシン方式のプログラム実行(C#, Java) - 汎用OS (Linux) の特性

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

Copyright © 2015 ETロボコン実行委員会 All rights reserved.

RTOS (EV3RT, nxtOSEK) Real Time Operating System

17

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

Copyright © 2015 ETロボコン実行委員会 All rights reserved. 18

代表的な仕組み

RTOS とは

特徴:リアルタイム応答性能

一定時間内に、指定した動作を実行

倒立振子制御など、時間制約の厳しい処理に適している

アプリケーションプログラムの実行

アプリケーションが OS と一体になるものも

アプリケーションを一つしか動かせない場合も

汎用 OS (Linux, Windows, OS X, etc.) との比較

動作の「軽さ」(起動時間、応答時間): ◎

マルチプロセス、動的ロード、仮想記憶の有無:△

メモリ保護、カーネル(OS 本体)保護の有無: △

タスク(スレッド)切り替えや割り込み応答の時間をなるべく短くするために、汎用 OS に比べると、機能に制限があります。

汎用 OS に比べると制限がある反面、低機能なプロセッサでも十分動く!

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

Copyright © 2015 ETロボコン実行委員会 All rights reserved. 19

代表的な仕組み

リアルタイム制御

実現要素

タスクと割り込み通知

タスク:汎用 OS のスレッドに相当

定周期動作:一定の時間間隔で動作を実行

実現方策(定周期動作)

ループ内でのスリープ

一定の時間間隔になるようスリープ関数で調整

周期起動タスク・周期ハンドラ

一定周期で繰り返し起動(実行)されるタスク

周期アラームによる起床 + ループ中での休止

ハードウェアによる割り込みを OS が応答処理。OS が、必要に応じてアプリケーションのタスクに通知(アラームやイベントフラグの発火)。

汎用 OS とは異なり、RTOS では、このタイミングが極めて正確です。

RTOS でのプログラミング:タスクが実行する処理を、関数として実装

複数の定周期動作を行う場合(例:倒立振子制御とBluetooth 通信)、一つのタスクでスリープ関数を使うだけでは、正確なタイミング合わせが難しい。

複数のタスクを動かす時の方策

RTOS は、タスク起動のオーバーヘッドが小さいので、数[ms]おきでも問題ない。

スリープ関数なしでも大丈夫。

複数のタスクが存在する場合、最も優先度の高いタスクに CPU が割り当てられて実行され、そのタスクが終了したり待ち状態になるまで、それより低い優先度のタスクは実行されません:絶対優先度(RTOS の特徴)

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

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 比)

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

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 で生成。

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

Copyright © 2015 ETロボコン実行委員会 All rights reserved.

モデル審査について

22

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

Copyright(c) ETロボコン実行委員会 All rights reserved. 23

機能実現

表現

指定された機能を実現する ための構成・方法が 正しく記載されているか?

モデルの内容が、正しく・分かりやすく記載されているか?

「ソフトウェアの内容をモデルで正しく表現」

することを重視した審査を行います • 選択した機能を実現するための方法が、

モデルで正しく分かり易く提示できていることを

審査します

プライマリークラスの審査基準

ここが大事⇒

⇐ここは前提

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

Copyright(c) ETロボコン実行委員会 All rights reserved. 24

「技術を応用するスキル」を競うために、高性能を実現する制御技術と、それをソフトウェアとして実現するための設計技術を評価します

• 「未確定仕様への対応」では、段階的に確定される仕様に対して、迅速に対応するための工夫がなされているか、を評価します

アドバンストクラスの審査基準

⇐ここに期待! 未確定

仕様への

対応

設計技術

制御技術

制御技術で記載された内容をソフトウェアとして実現するためのアーキテクチャが十分に検討されているか? 機能を実現するために必要な

要素技術と、それらを使ってコースをどのように走行するかの手順・方法が十分に検討されているか?

段階的に確定される仕様に対応して、ソフトウェアを効率的に修正可能とするための工夫がなされているか?