🛸
ドローンシミュレーション環境の構築 (PX4, ROS2, gazebo)
Intro
ドローンをシミュレーションする方法は多数ありますが、本記事では最終的に実機でシミュレーションと同じコードを使って自律飛行ドローンを作ることを目的とした構成をとっています。
- PX4: オープンソースのフライトコントローラ、pixhawkなどのハードウェアを使って簡単に使える
- ROS2: オープンソースのロボット用フレームワーク、ROSでもOK
- gazebo: オープンソースの3Dシミュレーター、軽めなのでラップトップで使える
pixhawkとubuntuのオンボードコンピュータを使えば理論上は実機ドローンに簡単に移植できるはずです。
Setup
Installation
まずはubuntu22.04を入れます。
次にPX4, ROS2, gazeboを入れます。
ここまで来たらすでにROS2とPX4を使ってgazebo上のドローンをサンプルスクリプトで動かせるはずです。
Development
camera data stream
カメラ画像のデータをgazeboのトピックからROS2に持ってくるには一手間必要です。
ros-humble-ros-gzgardenをインストールして、
sudo apt install ros-humble-ros-gzgarden
ros_gz_imageもしくはros_gz_bridgeでブリッジしてあげる必要があります。
ros2 run ros_gz_image image_bridge /camera
ros2 run ros_gz_bridge parameter_bridge /camera@sensor_msgs/msg/Image@ignition.msgs.Image
ros_gz_bridgeはimageだけでなく他のトピック(depthなど)にも使えるのでこちらの方が汎用性がありそうです。
ros2 run ros_gz_bridge parameter_bridge /camera@sensor_msgs/msg/Image@ignition.msgs.Image
/camera_info@sensor_msgs/msg/CameraInfo@ignition.msgs.CameraInfo /depth_camera/points@sensor_msgs/msg/PointCloud2@gz.msgs.PointCloudPacked /depth_camera@sensor_msgs/msg/Image@ignition.msgs.Image
keyboard control
PX4のサンプルコードはウェイポイント形式だったのでキーボードでの操作をするにはドローンの速度などをコントロールする様なコードが必要です。
ここに載っているコードを使うと簡単にキーボードが使える様になります。
ただこのコードではmavsdkを使っているので、px4_ros_comのサンプルコードとは異なる点に注意です。
Trouble Shooting
自分が使っている中でこのデバッグに時間取られたので一応のせておきます。
PX4をスタートさせようとするとこんなエラーが出て
ERROR [gz_bridge] timed out waiting for clock message
ERROR [gz_bridge] Task start failed (-1)
ERROR [init] gz_bridge failed to start
ERROR [px4] Startup script returned with return value: 256
このコマンドで治りました
pkill -9 ruby
unset GZ_IP
unset GZ_PARTITION
参考:
PX4のユーザーフォーラムは活発なのでデバッグで詰まったら相談するのがおすすめです。
(副代表 廣津)
Discussion