屋外での自律移動ロボットシミュレーション環境のまとめ
屋外走行のシミュレーション環境
屋外走行ロボットのシミュレータとしていいものがないかなとがした記録。
結論:
あんまちょうどいいものはない。
- gazeboで頑張って歩行者やワールドを作りこむ
- LGSVLかCARLAで、機体操作部分を自分でロボット対応に書き換える
あたりしか手がなさそう。
gazebo
開発者: OSRF
ゲームエンジン: 無し
githubスター数: 150
ROS標準のシミュレーション環境。
物理シミュレーション付きでホイールオドメトリの誤差なども取得できる。
利用シーンとしては屋外や広くても倉庫程度のものが多い。
環境を作りこむのが大変なのかな?多分。
gazeboで屋外環境を作りこんでいるものも一部ではある。
https://github.com/chapulina/dolly
ロボット自体の動作確認がメインで、歩行者や自動車を追加したシーンでのテスト、などは弱い。
CARLA
開発者: Intelなど出資が複数社
githubスター数: 4k
Intelなど大御所が出資する、OSSとしては最大手と思われる自動運転シミュレータ。
UE4を使っているだけあって画面は綺麗。
専用のros_bridgeを利用してROSと接続可能。
トピック型はステアリング、アクセルなどロボットでなく自動車操作に特化している。
ドキュメントによるとvhicleモデルとしてバイクも使えるらしい。
それだったら2駆動輪ロボットも追加できるようにして欲しかったなぁ・・・。
参考:
https://github.com/carla-simulator/ros-bridge
https://carla.readthedocs.io/en/latest/tuto_A_add_vehicle/#add-a-2-wheeled-vehicle
LGSVL
開発者: LG シリコンバレー研究所, Tier4など
ゲームエンジン: Unity
githubスター数: 1k
自動運転用のOSSとして有名なAutoware, Apollo対応のシミュレーション環境。
Autowareを開発するTier4では、LGSVLをシミュレーション環境として利用しているらしい。
ROSとの接続にはROS標準?のros_bridgeのwebsocketのノードを利用する。
roslaunch rosbridge_server rosbridge_websocket.launch
で普通に立ち上げるだけでOK。
ただし、機体操作のコマンドはAutoware用のメッセージ型になってしまう。
また、中身も自動車に特化している。
ROS標準のgeometry_msgs/Twistに変更できないかコードを追ってみたが、rosbrigdeのデータを取り込む処理で自動車専用のステア角度、アクセルなどのデータ構造に変換されていた。
物理シミュレーションの界面でも、ブレーキやギア状態を計算に利用している。
YoutubeにLGSVLでDuckieBotを走らせる動画が上がっていたので2駆動輪ロボット対応かと思って掘ってみたけど、2019.07のリリースでDuckieBot対応が削除されていました・・・。
※ ROS kineticでのrosbridge_websocketは標準でインストールされるpythonパッケージが間違っていて動かないので注意。下記でインストール。
sudo apt install ros-kinetic-rosbridge-suite
sudo pip2 uninstall autobahn | sudo pip2 install autobahn
sudo pip2 uninstall txaio | sudo pip2 install txaio
参考:
https://tech.tier4.jp/entry/2019/02/22/171052
https://github.com/lgsvl/simulator/blob/master/Assets/Scripts/Sensors/VehicleControlSensor.cs
https://github.com/lgsvl/simulator/releases/tag/2019.07
RoboSim
開発者: ZMP
ゲームエンジン: 不明(見た感じではUnity?)
ZMPが最近公開した屋外ロボット用のシミュレータ。
歩行者なども追加できる模様。
利用は問い合わせ必要。