ROS2を使ってみる その4(OpenManipulatorのシミュレーション、WSL2 Ubuntu 22.04)

はじめに

 今回はROS2でOpenManipulatorのシミュレーションを実行してみました。

 WSL2で新しくROS2の環境を構築しましたが、具体的なロボットのシミュレーションは行っていなかったので、改めて動作確認です。WSL2のネットワーク周りで少し引っかかるところがありました。

▼実行環境は前回構築したものを利用しています。

ROS2を使ってみる その3(環境構築、WSL2 Ubuntu 22.04)

はじめに  最近WSL2でUbuntu環境を複数インストールできるようになったので、ROS2の環境を改めて構築してみました。  大学の研究でロボットの遠隔操作にも取り組み始め…

▼以前の記事はこちら

WSL2を使ってみる その4(Ubuntu 16.04、ROS Kinetic、Open Manipulator)

はじめに  これまでWSL2にUbuntu 18.04、20.04、22.04をインストールして、ROS/ROS2の環境を構築しました。今回はUbuntu 16.04です。  オンラインドキュメントや書籍の…

Unityを使ってみる その2(ROS#、カメラ映像のSubscribe)

はじめに  今回はUnityにROS#をインストールし、ROSでPublishされているカメラ映像をSubscribeできるようにしてみました。  ロボットの遠隔操作をするときに用いようと…

必要なパッケージのインストール

 ROS1と同様に、OpenManipulatorのページに従ってパッケージをインストールします。

▼ROS2 Humble用のページを参考に進めます。

https://emanual.robotis.com/docs/en/platform/openmanipulator_x/quick_start_guide

 ROS2の環境は構築したうえで、以下のコマンドを実行していきました。

sudo apt install \
  ros-humble-ros2-control \
  ros-humble-moveit* \
  ros-humble-gazebo-ros2-control \
  ros-humble-ros2-controllers \
  ros-humble-controller-manager \
  ros-humble-position-controllers \
  ros-humble-joint-state-broadcaster \
  ros-humble-joint-trajectory-controller \
  ros-humble-gripper-controllers \
  ros-humble-hardware-interface \
  ros-humble-xacro

 ワークスペースはcolcon_wsとして新しく作成されます。

mkdir -p colcon_ws/src
cd ~/colcon_ws/src/
git clone -b humble https://github.com/ROBOTIS-GIT/DynamixelSDK.git
git clone -b humble https://github.com/ROBOTIS-GIT/open_manipulator.git
git clone -b humble https://github.com/ROBOTIS-GIT/dynamixel_hardware_interface.git
git clone -b humble https://github.com/ROBOTIS-GIT/dynamixel_interfaces.git
cd ~/colcon_ws && colcon build --symlink-install

 .bashrcにセットアップ用のコマンドが追加されます。以前構築した環境とは異なることには注意してください。

echo 'source /usr/share/gazebo/setup.sh' >> ~/.bashrc
echo 'source ~/colcon_ws/install/local_setup.bash' >> ~/.bashrc
source ~/.bashrc

シミュレーションを実行する

 GazeboでOpenManipulatorのシミュレーションを起動します。

▼シミュレーションに関するページはこちら

https://emanual.robotis.com/docs/en/platform/openmanipulator_x/ros_simulation/#launch-gazebo

 以下のコマンドを実行しました。

ros2 launch open_manipulator_x_bringup gazebo.launch.py

▼起動はできたのですが、画面が真っ暗です。

 モデルがちゃんと表示されるように、原因を探していきました。

▼ターミナルにはエラーが出ず、モデル自体は読み込めているようでした。

▼トピックも出ていました。

 過去にWSL2の環境ではstlファイルが表示されず、以下のコマンドを実行すると表示されることがありました。しかし、今回はこのコマンドでは解決しませんでした。

export LIBGL_ALWAYS_SOFTWARE=true

ROS1を使ってみる その4(URDFファイルの作成、Open Manipulator)

はじめに  今回はOpen ManipulatorのURDFファイルを作成してみました。  これまではROSですでに用意されていたOpen Manipulatorのモデルを利用していましたが、URDFファ…

 --verboseオプションをつけてgazeboとgzserverを実行したところ、アドレスが重複しているようでした。

▼Address already in useというエラーが出ていました。

▼他のアプリケーションなどを閉じたりしてもう一度実行したところ、別のエラーが起きていました。

[Err] [Scene.cc:227] Service call[/shadow_caster_material_name] timed out
[Err] [Scene.cc:249] Service call[/shadow_caster_render_back_faces] timed out

 今回の根本的な原因は、私がWSL2のネットワーク設定をミラーモードにしていたからだと思われます。Windows環境と、WSL2環境でIPアドレスを共通にするというものです。Windows側のアプリとアドレスが重複していたのかもしれません。

 ネットワークモードをNatに変更して、WSL2を再起動してみました。

▼WSL Settingsというアプリで変更できます。

 再度先程のコマンドを実行しました。

ros2 launch open_manipulator_x_bringup gazebo.launch.py

▼GazeboにOpenManipulatorが表示されました。

 この状態で別のターミナルを開き、操作用のGUIを起動するコマンドを実行してみたのですが、また別のエラーが起きていました。

ros2 launch open_manipulator_x_gui open_manipulator_x_gui.launch.py

▼moveitやmove_group_interfaceの読み込みなどに失敗しているようでした。

 そもそもMoveItが必要なのではないかと思い調べていると、Simulationのページには書いていなかったのですが、OperationのページにはMoveItの起動コマンドが書かれていました。

▼以下のページです。

https://emanual.robotis.com/docs/en/platform/openmanipulator_x/ros_operation/#gui-program

 以下のコマンドでRVizとMoveItを起動しました。

ros2 launch open_manipulator_x_moveit_config moveit_core.launch.py

▼問題なく起動しました。

 RViz上に表示されている矢印でグリッパを移動し、MotionPlanningの欄でPlan &Executeを選択すると、動かすことができました。

 この状態であれば、以下のコマンドで操作用のGUIを起動できました。

ros2 launch open_manipulator_x_gui open_manipulator_x_gui.launch.py

▼操作用のGUIが起動しました。

 これで操作用のGUIアプリでグリッパの開閉や角度の変更などを行うことができました。

 なお、Gazeboを起動せずにRVizのシミュレーションだけ起動して動かそうとしたところ、エラーが起きていました。

▼Plan & Executeを選択すると、Failedと表示されて失敗していました。

 RViz+MoveItとGazeboが必要なようです。

最後に

 WSL2関連でネットワーク周りの問題はありましたが、シミュレーションを起動することができました。これでROS2の環境としてはある程度利用できるかと思います。

 Node-REDのノードもROS2に対応しているのか気になるところです。

▼ROS1では以下の記事で試していました。

ROS1を使ってみる その3(Open Manipulatorの操作、Node-RED)

はじめに  今回はOpen ManipulatorのROS Serviceでの制御を確認し、Node-REDのノードでも操作してみました。  ROS Serviceを扱うのははじめてです。データ形式がややこ…

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です