ドローンの姿勢とLiDARデータをROSでまとめる

AndroidのROS1のExampleがどうやっても動かない 
Androidの開発環境のアップデートが原因?
まだ試してないけどAndroid+ROS2は開発が活発だから動きそう
追記:Android+ros2_javaでROS2をビルドできなかった(Gradleプラグインがcolconでのビルドに対応していなかった:
ROS2でAndroidを使う(FoxyではなくDashingを使う必要あり)→結果的にビルドできず - how to code something

構成図
はじめに考えた図
f:id:seinzumtode:20210809180401p:plain
これだとRaspberry Pi Zeroの準備がめんどくさい

ROS2はマイコンに対応していることを思い出した
ESP32を使うと開発が楽になりそう
f:id:seinzumtode:20210809180437p:plain

ESP32→PC間はROS2で通信できたけど(PC上でMicro DDS XRCEのUDPサーバを起動して待ち受ける)、AndroidがROS2でビルドできなかったので、ROS1(ros_java)を再度試したところ、ボイラープレートとなるアプリをビルドすることができた。
f:id:seinzumtode:20210812144820p:plain
参考にしたレポジトリ:
GitHub - ROS-Mobile/ROS-Mobile-Android: Visualization and controlling application for Android
作成したボイラープレート:
GitHub - shohei/ros-android-example

さて、実際にはドローンは樹上で飛ばすので、Wifiでの通信は距離がおぼつかない。ESP32+LoRa+ROSを使えないか検討することにした。以下の図を参考。
f:id:seinzumtode:20210812145207p:plain

いろいろ調べたところ、ROSでLoRaを使うドライバは特に整備されていないようである。そもそもLoRaはペイロードが短いなど、ROSの通信プロトコルとして相性が悪いのかな?あとQ&AサイトでXBeeを使えといっている人もいて目を疑った。10年経ってもXBeeの上位互換はでてこないものなのか。

ここでひらめいたのが、Pixhawkをデータブローカーとして使うこと。PixhawkにはUARTもある(はず)ので、TF03からのデータを拾えると思う。以下の図のようになる。

f:id:seinzumtode:20210812145233p:plain