12
組込みデバイス向け ROSノードの軽量実行環境 高瀬 英希・森 智也 (京都大学) [email protected]

mROS:組込みデバイス向けROSノードの軽量実行環境

Embed Size (px)

Citation preview

Page 1: mROS:組込みデバイス向けROSノードの軽量実行環境

組込みデバイス向けROSノードの軽量実行環境

高瀬 英希・森 智也

(京都大学)

[email protected]

Page 2: mROS:組込みデバイス向けROSノードの軽量実行環境

github.com/tlk-emb/mROS

まずはじめに

これはROS1のネタです,,,

2

でも,ROS1ノードが組込みデバイスで動いたら

面白くないですか??(絶賛開発中なので言ったもの勝ちのところもあります)

そんな方はLet’s pull!!

Page 3: mROS:組込みデバイス向けROSノードの軽量実行環境

github.com/tlk-emb/mROS

なぜROSを使うのか??

• ロボットシステムの開発支援フレームワーク

1. 分散システムを容易に構築できるPub/Sub通信

2. 強力かつ高機能なビルドシステムとツール群

3. オープンソースの豊富なパッケージ

4. 活発なコミュニティ活動

3

これはとっても使いやすい!!

ROS1ならこれも手軽に使いたい! でも高機能な

デバイスとLinuxが必要,,,

Page 4: mROS:組込みデバイス向けROSノードの軽量実行環境

github.com/tlk-emb/mROS

ということでmROSを作ってます

4

オープンソースの既存パッケージが使えるかも!?

ROSノード

ROSノード

ROSmROS

ROSの通信プロトコルをサポート!ITRONでROS!

ROSの関数を使ってプログラミング可能

mROSが提供する機能 ROSマスタとの通信 ノード間でのpub/sub通信

ミッドレンジ組込みデバイス

Page 5: mROS:組込みデバイス向けROSノードの軽量実行環境

github.com/tlk-emb/mROS

mROSの構成

5

ハードウェア

mbed

TOPPERS/ASPカーネル

mROS通信ライブラリ

アプリケーションアプリケーション

アプリケーションは組込み記述を気にせずにROS記述可能!

ITRON仕様の設計を行うことでリアルタイム性の確保も容易!?

ROSのAPIをそのまま使える(advertise, publish,

subscribe等)

マルチタスク化(複数ノード化)はITRONプログラミングで実現できる

lwIPを使用

mbedライブラリでデバドラも開発できる

Page 6: mROS:組込みデバイス向けROSノードの軽量実行環境

github.com/tlk-emb/mROS

mROSの提供する機能

• ROS1の通信フローに準拠

(1) ノード情報の登録

(2) publisher情報の送信

(3) トピックリクエストの送信

(4) TCPポート情報の送信

(5) コネクションヘッダ送信

(6) コネクションヘッダ返信→ データ転送の開始

6

TCPROSのPub/Sub通信によってROS1ノードとして振る舞える!

Page 7: mROS:組込みデバイス向けROSノードの軽量実行環境

github.com/tlk-emb/mROS

TOPPERSタスクによるROSノード間通信の実現

7

• ホストPC上にあるROSシステムとの通信は専用に生成されるタスクによって実現される

• 複数ユーザタスクに対しても通信タスクは1つずつ

それぞれのタスクはITRON仕様に則る

mROS通信ライブラリで生成される

タスク間通信は共有メモリ+データキュー

Page 8: mROS:組込みデバイス向けROSノードの軽量実行環境

github.com/tlk-emb/mROS

TOPPERSタスクによるROSノード間通信の実現

• データキューによる同期制御

−8bitのノード識別IDと24bitのデータ長(最大16MB)からなるデータを格納

• 共有メモリを介したトピック通信

8

ID length

Page 9: mROS:組込みデバイス向けROSノードの軽量実行環境

github.com/tlk-emb/mROS

現在の開発対象

• Renesas GR-PEACH

−mbedライブラリ対応

オンラインコンパイラ有り

−Arduino互換ピン

−純正カメラシールドあり

OpenCVも使える!??

9

http://gadget.renesas.com/ja/product/peach.html

搭載マイコン RZ/A1H

ROM/RAM 外部FLASH 8MB内蔵10MB

動作周波数 400MHz

動作電圧 3.3V/1.18V

画像認識ROSノードが

きびきび動く,かも!?

Page 10: mROS:組込みデバイス向けROSノードの軽量実行環境

github.com/tlk-emb/mROS

今はこんなふうに動いています

10

Page 11: mROS:組込みデバイス向けROSノードの軽量実行環境

github.com/tlk-emb/mROS

今はこんなふうに動いています

11

パブリッシュサブスクライブ トピックを介してLチカ

超音波センサの取得データを送信

green メッセージ受信

red メッセージ受信

緑に光る

赤く光る

ホストから

std_msgs/Stringのデータ出版

センサの値をパブリッシュコールバック関数LEDの発光

コールバック関数標準出力

Page 12: mROS:組込みデバイス向けROSノードの軽量実行環境

github.com/tlk-emb/mROS

おわりに

• 組込みデバイス向けROSノードの軽量実行環境

−既存ROSパッケージをそのまま使える,かも!

−ROS1ノードの省電力化に使える,かも!?

−リアルタイム性能の向上に使える,かも!?

• ユーザ様募集中!!

−ROS1を使っているけど資源制約が厳しい方

−開発済みのROS1資産を組込み化したい方

−結局ROSマスタ必要やん?時代はROS2!!という方

一緒にROSマスタ組込み化/ROS2対応に取り組みませんか!??

12

そんな方はLet’s pull!!