LoginSignup
16
15

More than 3 years have passed since last update.

micro-ROS for ArduinoによるROS2対応IMUデバイス(第1報)

Last updated at Posted at 2021-02-07

はじめに

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
linear_acceleration.gif angular_velocity.gif

動機

micro-ROS for Arduinoの習作として何か作りたいと考えていたことと,少し前にros2arduinoを使って今回と同様のデバイスを作っていたこともあり,micro-ROS for Arduino版のデバイスを作ることを思い立った(ros2arduino版についてはいずれ記事化するつもりであるが,その時には供養記事になっているかもしれない).

目的

  • micro-ROS for Arduinoを用いたROS2対応IMUデバイスの作り方を公開し,他のセンサデバイスでも作ってみようという気運を高めること
  • SBCをホストとしてその下にマイコンをぶら下げる構成に対し,ロボット制御用のスタンドアロンシステムとしての可能性を感じてもらうこと

本論

デモンストレーション

linear_acceleration angular_velocity
linear_acceleration.gif angular_velocity.gif

※GIF動画ではlinear_accelerationangular_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 PolicyQoS Profileの一部)を変換するROS2 Nodeが走っている
  • Android端末はホストと同じネットワークに接続されていて,USERLAND内に構築されたrqt_plot(ROS2 Dashing)でTopicを可視化している

数値データの確認

※RaspberryPi4Bにリモートログインしたターミナルで確認

sensor_msgs/msg/Imu
imu_echo.gif

sensor_msgs/msg/MagneticField
mag_echo.gif

Publishレートの確認

※RaspberryPi4Bにリモートログインしたターミナルで確認

sensor_msgs/msg/Imu
imu_hz.gif

sensor_msgs/msg/MagneticField
mag_hz.gif

IMUデバイスの仕様

外観 ae-bmx055_xiao.png
サイズ W : 18[mm] x D : 33[mm] x H : 10[mm]
センサモジュール AE-BMX055@(株)秋月電子通商
センサチップ BMX055@Bosch Sensortec GmbH
マイコンモジュール Seeeduino XIAO@Seeed Technology Co., Ltd.
マイコンチップ SAMD21G18@Microchip Technology Inc.
ホストとの接続方式 USB2.0 Type-C
給電方式 USBバスパワー
並進加速度検出範囲(各軸) ±16[g]
角速度検出範囲(各軸) ±2000[deg/s]
磁束密度検出範囲 XY-axis : ±1300 x 10-6 [T], Z-axis : ±2500 x 10-6 [T]
Type of Topic sensor_msgs/msg/Imu, sensor_msgs/msg/MagneticField
サンプルレート( = Publishレート) 200[Hz]
ホスト要件 ROS2 Foxy環境下でmicro-ROS Agentを動かせること

第2報以降の章立て(予定)

  • 第1報(本記事)
    • ゴールイメージとしてのデモンストレーションとIMUデバイスの仕様
  • 第2報
    • IMUデバイスのハードウェア
      • Schematics
    • IMUデバイスのファームウェア
      • 開発環境設定(ArduinoIDE)
      • Arduino Sketch
  • 第3報
    • センサデータ可視化のためのReliability Policy変換ノード
      • ソースコード
  • 第4報
    • デモシステムの構成
      • ホスト側コンピュータとしてのRaspberryPi4Bセットアップ
        • USBメモリからのUbuntu20.04ブート
        • micro-ROS Agentのビルド
        • Reliability Policy変換ノードのビルド
      • Android端末でのrqt_plot表示
        • Android端末へのUbuntu18.04デスクトップ環境構築(USERLAND,VNC Viewer)
        • ROS2 Dashingのインストール

参考資料

1.ROS/ROS2 Advent Calendar 2020
2.micro-ROS
3.micro-ROS for Arduino
4.ros2arduino
5.@MAEHARA_Keisukeのポータル記事

16
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
15