🐥
RasberryPiでESP32につないだImuのデータを得る ft. micro-ROS
目的
- imu(LSM9DS1)をESP32につないでROS2通信でデータを得たい.
- 行った方法を記録として残しておこうと思う
- 初心者なのでお手柔らかに
結果
- 成功
RasberryPiでESP32につないだImuのデータを得る ft. micro-ROS
前提条件
参考にした記事は以下の通り
ざっくりした内容は,ラズパイにOS(Ubuntu 20.04)をいれて,ネットワーク設定,ROS2Foxyの環境構築を行う.ESP32用のツールを入れて,micro-ROS ビルドシステムのセットアップを行う.Micro XRCE-DDS Agent のインストールしてデモを行うといった内容.かなり手こずってやっとこさ成功した.つまずいたところはまとめておいた.
micro-ROSでArduino Libraryを使うために行うことが書かれている.
これらをやっとのことで乗り越えることができた.
Imuデータ取得のためにやること
- imuデータをpubするappを作らないと行けない
- micro-ROS アプリは
~/microros_ws/firmware/freertos_apps/apps
の下に配置されており
apps
|-- <app_name>
| |-- app.c
| +-- app-colcon.meta
のようになっている.サンプルに習って app.c
と app-colcon.meta
ファイルを含むディレクトリを作成すれば、自作アプリを追加することができる.
私はラズパイとesp32でデータを通信するものを作りたいのでpi_esp_comunicator
というものを作る.
- まず
~/microros_ws/firmware/freertos_apps/apps
以下に
apps
|-- pi_esp_comunicator
| |-- app.cpp
| +-- app-colcon.meta
と追加する.
-
app.cpp
及びapp-colcon.meta
は次のgithubにある. -
Imu(LSM9DS1)のためのArduino Libraryを使ったため参考記事を見てそれを入れる.
-
https://github.com/sparkfun/SparkFun_LSM9DS1_Arduino_Library を使う.
-
他のImuを使う人はそれぞれにあったものを選んでください
-
Arduino library を入れたあとapp.cppの編集をする.デモのint32_publisherを参考にする.imuのためのコードはArduinoLibraryのexampleのLSM9DS1_Basic_I2C.inoを見ながらやる.
-
ビルドしてesp32に書き込めむ,agentも起動すれば
ros2 topic echo /imu
でデータを読むことができる.
補足
単位が加速度はG,角速度はdeg/sとなっていてsensor_msgs/imuではm/s^2 rad/sでやるのが決まりなので変換しないと行けない
Discussion