1. はじめに
前回の記事[1]では自律施工技術開発基盤OPERAのリポジトリで公開されているサンプルファイルにて、ROS2 topicを投げて建機を動かしてみることに成功しました。そしてその記事の中で「次回はREADMEでも紹介されているunity用launchファイルから動かす方法を試してみたい」と述べましたので、それに取り組んでみたのが、この記事の内容になります。
なお、この記事のシミュレーション環境は前回の記事[1]で構築した内容となります。このことを前提に記事を記載していきます(つまり細かいことは省きます)。
2. 実行環境
- CPU: CORE i7 7th Gen
- メモリ: 32GB
- GPU: GeForce RTX 2070
- OS: Ubuntu22.04(WSL2ではなくPCに直接インストール)
- ROS2: Humble
3. シミュレーション環境
シミュレーション環境は前回の記事[1]で構築した以下の環境をベースとします。
そして、前回作成したワークスペースの"/Opera_test"に、以下で公開されている"OPERA 対応油圧ショベル zx200 の土木研究所公開 ROS2 パッケージ群"のリポジトリをクローンして構築していきます。
👆のリポジトリのREADMEを参考に、以下のコマンドでクローンや関連パッケージのインストールやビルドをしました。
source /opt/ros/humble/setup.bash
cd ~/Opera_test/src
git clone https://github.com/pwri-opera/zx200_ros2.git
sudo apt update
sudo apt install python3-rosdep2
rosdep update
rosdep install -i --from-path src --rosdistro humble -y
colcon build
source ~/Opera_test/install/setup.bash
4. シミュレーション結果
まずUnityでAsset/Scenes/SampleScene.unityを開きます。
そして、ROS-TCP-Connectorの設定について、"Robotics" > "ROS Setting"の順でクリックして出てきた画面の"Protocol"のところを"ROS1"->"ROS2"に変更します。そのほかの設定はそのままとしました。
そしてUnityの再生ボタンをクリックしてシミュレーションを開始します。
次にターミナルを開き以下のコマンドを入力し、ROS2とUnityの連携を開始します。
なお、以下のコマンドで出てくる"/Opera_test"は私が設定したワークスペースの名前なので、環境によって変える必要があります。
source ~/Opera_test/install/setup.bash
ros2 launch ros_tcp_endpoint endpoint.py
次に以下のlaunchファイルを実行し、rviz2を起動します。
source ~/Opera_test/install/setup.bash
roslaunch zx120_unity zx120_standby.launch
このlaunchファイルを実行したときのrviz2の画面は以下です。
ちなみにこの状態で以下のコマンドでROS2 topicのメッセージを送信しても、zx120_standby.launchファイルによって別のROS2 topicメッセージが投げられていて「メッセージが上書きされる」ような状態なので、油圧ショベルのアームは動きません。
source ~/Opera_test/install/setup.bash
ros2 topic pub /zx120/arm/cmd std_msgs/Float64 "data: 0.2"
そのため、以下の動画のようにrviz2上で角度を指定して"Execute"ボタンを押すことで油圧ショベルのアームを動かすことができます。ただ、動かし方が私もまだよくわかっておりませんので、現時点ではまずとりあえず動かしてみたという段階です。
5. まとめ
今回は国立研究開発法人の土木研究所 技術推進本部 先端技術チームがgithubで公開している自律施工技術開発基盤OPERAのサンプルファイル内の建機をROS2 launchファイルから動かすことに成功しました。
今後はクローラダンプや他の建機も動かせるかや、土砂の粒子シミュレーションについても試していきたいと考えています。