箱庭上で TurtleBot3 を制御する Open-EL サンプルプロジェクトです.
OpenELの設計としては,2種類の設計案があり,両方対応しています.
箱庭上で動作する Open-EL サンプルアプリはこちらの main 関数です.
https://github.com/tmori/hakoniwa-openel/blob/main/src/main.cpp
また,箱庭上で動作可能な Open-ELデバイスソースは,設計毎に以下に配置しています.
本リポジトリをクローンします.
git clone --recursive https://github.com/tmori/hakoniwa-openel.git
docker image を作成します.
sudo service docker start
cd hakoniwa-openel
bash docker/create-image.bash
docker 起動します.
bash docker/run.bash
docker コンテナ上で,hakoniwa-ros2sim ディレクトリへ移動します.
cd /root/workspace/openel/hakoniwa-ros2sim/ros2/workspace
hakoniwa-ros2sim のセットアップを以下の手順で実施します.
docker コンテナの端末を以下の手順でもう1個起動します.
bash docker/attach.bash
docker コンテナ上で,Open-EL 側のビルドを行います.
cd /root/workspace/openel/ros_ws/src
bash build.bash
シミュレーション手順は,基本的に,hakoniwa-ros2sim と同じです.
ただし,TB3の制御プログラムの実行は,Open-ELのサンプルを使います. そのため,Open-ELをビルドした docker コンテナ/ディレクトリ直下で以下のコマンドを実行してください.
bash run.bash openel_node TB3RoboModel
上記の一連の操作(インストール以外)の操作デモ内容です.
https://user-images.githubusercontent.com/164193/193765479-5c8db856-9829-4ba8-bf8c-7b9381b8c88f.mp4
C++版箱庭の場合は,箱庭用のモジュールをいくつか利用する必要があるため,若干,ROS2実装よりも手順が多いです.
docker コンテナの端末を以下の手順で4個起動します.
bash docker/attach.bash
bash docker/attach.bash
bash docker/attach.bash
cd /root/workspace/openel/hakoniwa-ros2pdu/workspace/
bash build.bash
bash docker/attach.bash
cd /root//workspace/openel/hako_ws/cmake-build
cmake ..
make
UnityおよびROS-TCP-ENDPOINTについては,hakoniwa-ros2sim と同じで手順です.
TB3の制御プログラムの実行については,C++版箱庭モジュール群とOpen-ELのサンプルを起動します. 以下の順番でシミュレーションを実行します(どこかで作業の手間を減らすための対応を行います)
hako-master 100 1000
成功すると以下のメッセージが出力されます.
START
INFO: shmget() key=255 size=12160
bash run.bash hako_pdu_proxy
成功すると以下のメッセージが出力されます.
START:hako_pdu_proxy_node
create_channel: id=1 size=3044
./hako-openel
成功すると以下のメッセージが出力されます.
create_channel: id=0 size=48
hako_pdu_write_init(0, 48) ret=1
ActuatorHako::fncInit()
OpenEL Motor L init OK
ActuatorHako::fncInit()
OpenEL Motor R init OK
SensorHako::fncInit()
OpenEL Sensor init OK
まずは,アセット一覧を確認してみましょう.
hako-cmd ls
以下の2個のアセットが表示されます.
hako_pdu_proxy_node
openel_node
次に,シミュレーション状態を確認してみましょう.
hako-cmd status
status=stopped
stopped となっていますので,シミュレーション停止状態です.
この状態で,Unity側のシミュレーションを開始した後,箱庭としてのシミュレーションを開始します.
hako-cmd start
シミュレーション開始するとTB3のロボットが動き出します.
上記の一連の操作(インストール以外)の操作デモ内容です.
https://user-images.githubusercontent.com/164193/194730736-885dd449-55c0-4ce7-b280-774f7705856d.mp4