概要
ロボット向けのシミュレーション環境として,ROSに特化したものとマイコンに特化したものがあります.
本記事では,ROS2/マイコン制御のシミュレーションを1つのシミュレーション環境で同時に行えるヘテロシミュレータを紹介します.
TOPPERS/箱庭プロジェクトでは,ROS2向けのシミュレータとマイコン制御シミュレータを一般公開しており,これらを統合したシミュレータを製作しました.
ROS2シミュレータの例
マイコン制御シミュレータの例
前提とする環境
基本的には,以下の動作環境に準じます.
ただし,現時点では,Windows11/wsl2 環境で動作確認しています.
手順
ヘテロ環境の構築手順は以下のステップで行います.
- 箱庭 マイコン制御シミュレーション環境を構築
- 箱庭 ROS シミュレーション環境を構築
- 箱庭コンフィギュレータでロボットをカスタマイズ
- ヘテロシミュレーション環境をインストール
- ヘテロシミュレーションを実行
箱庭 マイコン制御シミュレーション環境を構築
まずは,以下の手順に従って,マイコン制御でのシミュレーションを実行してください.
ヘテロシミュレータでは,マイコン制御シミュレーション(dockerでのAthrill実行)のみを使用します.
※本環境で提供しているUnityアプリは利用しません.
箱庭 ROS シミュレーション環境を構築
次に,以下の手順に従って,ROS2制御でのシミュレーションを実行してください.
箱庭コンフィギュレータでロボットをカスタマイズ
hakoniwa-ros2sim
の箱庭コンフィギュレータを起動してください.
こんな感じで,TB3が1個あるはずです.
ここに,EV3ロボットを追加しましょう.
ProjectビューのAssets/Resources/Hakoniwa/Robots
を選択すると,EV3RoboModel
が見えます.
TB3の場合と同じ要領で,EV3RoboModelをドラッグ&ドロップしましょう.
HierarchyビューのConfigurator/Hakoniwa/Robot
配下に配置します.
次に,InspectorビューのEV3 Micon Config
を開いてください.
Udp_proxy に Athrill
が見えます.Ipaddr
を docker のIPアドレスを設定してください.
docker の IPアドレスの確認方法は以下の通りです.
root@DESKTOP-7UPRUP4:~/workspace/hakoniwa-ros2sim/ros2/workspace# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.31.175.6 netmask 255.255.240.0 broadcast 172.31.175.255
:
こんな感じで,IPアドレス設定しましょう.
設定後,箱庭のコンフィグ情報を以下の要領で生成してください.
ヘテロシミュレーション環境をインストール
hakoniwa-ros2simのdocker端末上で,以下の要領でインストールを行ってください.
cd /root/workspace/hakoniwa-ros2sim/ros2/workspace
bash hako-install.bash opt all
bash build.bash
ヘテロシミュレーションを実行
Unityエディタに戻り,シーンを Toppers_Course
に変更しましょう.
hakoniwa-ros2sim の docker 端末で,ROS2のシミュレーション準備をします.
# bash launch.bash
IP_ADDR is 172.31.175.6 (eth0)
Unityエディタのシミュレーション開始ボタンを押下します.
TB3とEV3の2つのロボットが見えますね!
次に,箱庭マイコン制御シミュレータの方で,箱庭プロキシを起動します.
bash run-proxy.bash base_practice_1
起動成功すると,開始
ボタンが有効になります.
最後に,hakoniwa-ros2sim 側で,TB3のロボット制御プログラムを起動します.
# bash run.bash tb3 TB3RoboModel
START: TB3RoboModel
さー,準備完了です.開始
ボタンを押しましょう.
デモ
EV3 とTB3 が動きだしまた.
ロボットの動きだけだとわからないかもしれませんが,EV3の方(マイコン側)はUDP通信でマイコンシミュレータAthrillで制御しています.TB3の方(ROS2側)はROSトピックで制御しています.
お知らせ:箱庭もくもく会
TOPPERS箱庭WGでは,もくもく会を不定期に開催しています.
本記事の内容を実際に試してみたい方や試してみたけど詰まっている方は,ぜひご参加ください.画面共有しながら参加者同士でサポートしたり,一緒に新しい機能を実装したりと”もくもく”しましょう.