mros2 on Mbed
ROSCon JP 2021に行ってきました。
Mbedとは
• Arm社が提供するマイコン向け開発プラットフォーム
• Single Board Computer(SBC)御三家の一つ
• 核となるのはCortex M※1を搭載したMbed Enabled なボードで、※1 M以外稀にAもある
ソフトウェアスタックとツールチェイン、
クラウド環境などのインフラ全体を指す。
Mbed
Interface chip
Mbed Enabled ボード
USB接続
Cortex M
mbed Device connector
Peripherals
Peripherals
mbed Compiler
Peripherals
Mbedの開発環境 SBC御三家(個人の感想)
人気
出来ること
展示準備風景
Mbed Enabled Boards
• ARMの互換性認証をパスしたサードパーティが
提供している
• Armマイコンのチップベンダが各社強みを活かせる形のSBCを提供
• 最新のMbed OS6に対応しているものだけ
でも102枚あった。(2021/06/24時点)
• スイッチサイエンスさんからも出ています。
• Ethernetが初めから載っているボードも
多い。
→母屋乗取り系のEthernet Shieldは
必要なし
Mbed Eanbled Boardsの一覧
https://os.mbed.com/platforms/
明日おもしろいもの発表
するから見に来いよ!
お、、、おうっ。
思わぬところでLTのネタを拾う。
Mbed ソフトウェアスタック
• ネットワークスタックだけでなくOTAや暗号化通信等
が含まれ商用RTOS顔負けの重厚さをもつ。
• これらのソフトウェアスタックがApache 2.0ライセンスで無料で提供される。
Mbed OS 6の構成図
https://monoist.atmarkit.co.jp/mn/articles/2009/03/news027.html
mros2予習→移植開始
Mbedのクラウド環境
• Mbedのソフトウェアスタックとつながるクラウド環境(Pelion Device
Management)がインターネット上に用意されている。
• AWSのように無料アカウントから始めることができ、デバイスの
開発とクラウドアプリの開発を並行して即開始できる。
Pelion Device Managementの構成図
https://developer.pelion.com/docs/device-management/v4.1/introduction/index.html
開場
• クラウド上にオンラインコンパイラが用
意されておりPCへのインストールなし
で即開発できるようになっている。
• 作ったコードはWikiのようなシステムで
他のユーザと共有することもでき、また
公開されているコードをインポートする
ことができる。
• ボードを買ってくれば2分でLチカが出
来るらしい。
※"mbedでプログラミング"
ENJOY work Channel
https://www.youtube.com/watch?v=Roa5nCbcm0k
Mbed オンラインコンパイラ
Mbedのオンラインコンパイラ
オープニング
仕事で使うには良いところ/悪かったところ
[良いところ]
• ボードの種類が豊富で入手性が良い。
→ 展示会でタダでもらえることがよくあった。
• 各ボードベンダからデバイスドライバが提供されている。
→ いちいちUARTドライバとかを書かなくてもよい。
• C++によるインタフェースがボードの差異を隠蔽している。
→ 一度作ったプログラムが他のボードでも殆ど変更なしに動く。
[悪かったところ]
• コンパイラがオンラインでしか使えない。
→ Cmake等を多用するようなプロジェクトをインポートするのは骨が折れる。
• デバッグ環境がなかった。
→ デバッグは基本printfと気合と根性
さっと開発用の治具とかは作れちゃうけど、、、
デバッガ無しでターゲットボードとして開発ができるか?
コードをクラウドに置けない事情がある場合もある。
CIに使えないじゃん。
感染対策は大事
Mbed CLI/CLI2 と PyOCD
[Mbed CLI/CLI2]
• オフライン環境にインストールできるToolchain
• CLI(1)は比較的前からあったが独自色が強く、問題があったとき調査が難しかった。
• 去年CLI2がリリース、CMakeベースに移行して見通しが良くなった。
[PyOCD]
• CMSIS-DAP経由でJTAGデバッグができるOpen On-Chip DebuggerのPython版
• これ単体でGDB Serverとして動作する。
• CMSIS-DAPはMbedチップのファームに搭載されているの
で、これを使えばJTAG相当のデバッグができる。
CMSIS-DAPインターフェース
https://os.mbed.com/users/MACRUM/notebook/cmsis-dap-interface-firmware/
展示説明はマスクで対応
仕事でも使えそうな開発環境
• 開発環境はなるべくDocker Containerの中に収め
たい。
• エディタやラインレベルのデバッガとしては
VS Codeを使う。
• USBをDockerに見せようとすると碌なことが
無いのでPyOCDはホストで動作
• VS Codeから普通に開発・デバッグができる
環境が用意できた。
→ で、これを使って何するか?
Mbed
Interface chip
Mbed Enabled ボード
USB
Cortex M
Peripherals
Peripherals
Peripherals
Linux PC
PyOCD
/dev/ttyACM0
Docker Container
VS
Code
Mbed
CLI2
TCP/IP
Port 3333
Sharing
Workspace
仕事で使える?Mbed CLI開発環境
簡単な動作確認結果
登壇者もマスク着用
で、これを使って何をするか?
• 会社で推しているのでROSで何かしたい。
• 最近micro-ROSのチームがMbed版を提供し始めた。
https://github.com/micro-ROS/micro_ros_mbed
(ただしUART通信)
• ただ、IoTネイティブなMbedなんだから
直接RTPSを話すROS2環境を構築した
い。
• XRCE-DDSにニーズが有ることは理解
できる。
ただ、マイコンベースでリアルタイム
が求められるROS2 ノードの用途も有
るはず。
micro-ROS のソフトウェアスタック
https://micro.ros.org/img/micro-ROS_architecture.png
豪華弁当ごちそうさまでした。
そうだmros2がある!
• ROSCon JP 2021(9月16日)で発表された
”agent無用のROS 2軽実行環境”
• 通信ミドルウェアにembeddedRTPS
+ lwIPを使っている。
• 現状TOPPERS上で動作しているが
他のプラフォームへの移植も検討
しているらしい。
• lwIPはMbedではバックエンドで
動作しているので簡単に移植
できるのでは?
ROSCON JP 2021でのmROS2の発表資料
https://www.slideshare.net/takasehideki/ros-2-client-library-for-e2-250206371
ドリンク・スナックもあります。
移植しました&動きました。
• ビルドだけなら割と簡単(色々ズル修正は必要)
• 動作させるためにはlwIPのパラメタ調整が必要だった。
• ROSCon JPデモ程度の動作
Dashing(PC) ⇔ Mbedボード
• PC側: 公式Dashingコンテナ
• Mbed側: NUCELO F429ZI
• 若干embedded RTPSが怪しい
挙動をしている。
(例: Locator 周り) ROSCon JP 2021のデモレベルの動作確認
両国なのでちゃんこ鍋です。
次はどうする?
• Mbedにはセンサやモータを使ったロボットの作例がたくさんある。
→ Mbedで動いているデバイスで ロボットをROSで制御したい。
• mros2の応答性が必要なのがいい。
→ 倒立振子(PID制御)にチャレンジ
• Mbed単体で制御できることを確認
→ mros2化&PIDをPCに移動
• 本質的にはAgentlessなのでPCは
Mbedで置き換え可能なはず。
参考にしたページ
倒立振子をサクッと作る | Natural Days (hirotakaster.com)
mros2の特性を生かした?デモ案
IMU
Motor
PID
PC
Mbedなロボット
こっちはMbed単体
でも無理でしたOrz
mros2 on Mbedが立ちました!
【結果】
• フラフラしているもののなんとか立ちました。
→ PIDスキルの問題
• 油断していると不意にコケます。
→ PCにRT patchを当ててないから?
• Pub/SubがString型なのは内緒
【まとめ】
• Mbedで普通に開発できるように
なってきました。
• mros2を使えばMbedアプリは
AgentlessにROS2化可能です。
• Mbedなデバイスを使った
ROS2ノードが増えるといいですね。 なんとか立ったmros2 on Mbed
こっちはMbed単体
でも無理でした。
ベタなお土産

mros2 on Mbed