はじめに
ROS/ROS2 Advent Calendar 2020で12/24の記事としてmicro-ROSに関する記事を投稿することを予定していた.micro-ROS for ArduinoのToy ExampleとしてIMUデバイスを作っていたが,記事としてまとめるまでに大きく遅れてしまった.後からAdvent Calendarに投稿できるかのテストも兼ねて,Advent Calendarに紐付けて投稿する.
記事概要
一定時刻毎に並進加速度や角速度,および磁束密度を検出,ROS2のTopicとしてPublishするIMUデバイスを製作したので,使用しているテクニックについて報告する.
第1報ではまずゴールイメージとしてのデモンストレーションとIMUデバイスの仕様,および第2報以降の章立て(予定)について述べる.
linear_acceleration |
angular_velocity |
---|---|
動機
micro-ROS for Arduinoの習作として何か作りたいと考えていたことと,少し前にros2arduinoを使って今回と同様のデバイスを作っていたこともあり,micro-ROS for Arduino版のデバイスを作ることを思い立った(ros2arduino版についてはいずれ記事化するつもりであるが,その時には供養記事になっているかもしれない).
目的
- micro-ROS for Arduinoを用いたROS2対応IMUデバイスの作り方を公開し,他のセンサデバイスでも作ってみようという気運を高めること
- SBCをホストとしてその下にマイコンをぶら下げる構成に対し,ロボット制御用のスタンドアロンシステムとしての可能性を感じてもらうこと
本論
デモンストレーション
linear_acceleration |
angular_velocity |
---|---|
※GIF動画ではlinear_acceleration
とangular_velocity
をプロットしているが,magnetic_filed
も別のTopicとして実装されている
デモシステムの概要(詳細は第4報にて)
- IMUデバイスはホスト(RaspberryPi4B 2GB)とUSB接続(給電およびUSB-Serial通信)
- ホストではROS2 Foxy環境下で
micro-ROS Agent
が走っていて,USB-Serial経由でIMUデバイスと通信している -
micro-ROS Agent
はIMUデバイスからのデータをROS2 DDSネットワークにPublishしている -
rqt_plot
での可視化のため,ホストではTopicのReliability Policy
(QoS Profile
の一部)を変換するROS2 Nodeが走っている - Android端末はホストと同じネットワークに接続されていて,
USERLAND
内に構築されたrqt_plot(ROS2 Dashing)
でTopicを可視化している
数値データの確認
※RaspberryPi4Bにリモートログインしたターミナルで確認
Publishレートの確認
※RaspberryPi4Bにリモートログインしたターミナルで確認
IMUデバイスの仕様
第2報以降の章立て(予定)
- 第1報(本記事)
- ゴールイメージとしてのデモンストレーションとIMUデバイスの仕様
- 第2報
- IMUデバイスのハードウェア
- Schematics
- IMUデバイスのファームウェア
- 開発環境設定(ArduinoIDE)
- Arduino Sketch
- IMUデバイスのハードウェア
- 第3報
- センサデータ可視化のためのReliability Policy変換ノード
- ソースコード
- センサデータ可視化のためのReliability Policy変換ノード
- 第4報
- デモシステムの構成
- ホスト側コンピュータとしてのRaspberryPi4Bセットアップ
- USBメモリからのUbuntu20.04ブート
- micro-ROS Agentのビルド
- Reliability Policy変換ノードのビルド
- Android端末でのrqt_plot表示
- Android端末へのUbuntu18.04デスクトップ環境構築(USERLAND,VNC Viewer)
- ROS2 Dashingのインストール
- ホスト側コンピュータとしてのRaspberryPi4Bセットアップ
- デモシステムの構成
参考資料
1.ROS/ROS2 Advent Calendar 2020
2.micro-ROS
3.micro-ROS for Arduino
4.ros2arduino
5.@MAEHARA_Keisukeのポータル記事