1. はじめに
前回の記事[1]でROS2 Humble環境でDocker上でDocker上にROS Noetic環境を構築することで、Huskyの自律走行をシミュレーションすることができました。このシリーズの取り組みではOyediranらの論文[2]において、Huskyというロボットにマニピュレーターを搭載し、フレームなどの資材を把持して運搬する事例を再現していこうと考えています。それに向けて前回は自律走行ができましたので、この記事ではマニピュレータを搭載して動かすということについて取り組んだ内容を紹介したいと思います。
2. 実行環境
- CPU: CORE i7 7th Gen
- メモリ: 32GB
- GPU: GeForce RTX 2070
- OS: Ubuntu22.04(WSL2ではなくPCに直接インストール)
- Nvidia Driver: 535
3. 構築手順
まず最初は前回の記事[1]で構築したものに、以下のリポジトリのマニピュレータを搭載しようとしました。gazebo上のhuskyにUR5というマニピュレータを搭載することには成功したのですが、Moveit(ロボットアームなどを動かすためのライブラリ)からロボットアームを動かすことができませんでした。干渉が解消できないことや、ROS nodeを立ち上げられないなど、おそらく私の知識不足が原因のトラブル続きでここについてはあきらめました。
そこで以下のリポジトリを用いて構築し、gazebo上のHuskyにUR3というロボットアームを搭載して、シミュレーションを行うこととしました。
ほとんど👆のリポジトリのreadmeに従いましたが、トラブル対応もしましたので、その構築手順を以下に示します。
3.1 ROS ワークスペースの作成
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
source devel/setup.bash
3.2 依存パッケージのインストール
sudo apt update
sudo apt install -y \
ros-noetic-husky-* \
ros-noetic-ddynamic-reconfigure \
ros-noetic-imu-filter-madgwick \
ros-noetic-imu-transformer \
ros-noetic-moveit \
ros-noetic-ros-controllers
3.3 ar_track_alvarのインストール
cd ~/catkin_ws/src
git clone -b noetic-devel https://github.com/QualiaT/ar_track_alvar.git
ここでビルド(catkin make)をします。
cd ~/catkin_ws
catkin_make
そして、⚠️ 私の環境ではpcl_conversions
が不足しているとエラーが発生しました。これに対しては、以下のコマンドで対処した後に、再度でビルド(catkin make)をしました。
sudo apt install -y ros-noetic-pcl-conversions ros-noetic-pcl-ros
cd ~/catkin_ws
catkin_make
3.4 husky_ur3_simulatorのインストール
cd ~/catkin_ws/src
git clone -b noetic-devel https://github.com/QualiaT/husky_ur3_simulator.git
echo "export GAZEBO_MODEL_PATH=${HOME}/catkin_ws/src/husky_ur3_simulator/models" >> ~/.bashrc
source ~/.bashrc
cd ~/catkin_ws
catkin_make
3.5 Gripper 操作用の追加パッケージのインストール
cd ~/catkin_ws/src
git clone https://github.com/ROBOTIS-GIT/ROBOTIS-Framework-msgs.git
git clone -b noetic-devel https://github.com/ROBOTIS-GIT/DynamixelSDK.git
git clone https://github.com/ROBOTIS-GIT/ROBOTIS-Framework.git
cd ~/catkin_ws
catkin_make
3.6 RealSense のインストール
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key F6E65AC044F831AC80A06380C8B3A55A6F3EFCDE
sudo add-apt-repository "deb http://librealsense.intel.com/Debian/apt-repo focal main" -u
sudo apt install -y \
librealsense2-dkms \
librealsense2-utils \
librealsense2-dev \
librealsense2-dbg \
ros-noetic-realsense2-camera
cd ~/catkin_ws/src/
git clone https://github.com/IntelRealSense/realsense-ros.git
cd realsense-ros/
git checkout `git tag | sort -V | grep -P "^2.\\d+\\.\\d+" | tail -1`
cd ~/catkin_ws
catkin_make
4. 実行手順
Husky + UR3 の Gazebo 起動
roslaunch husky_ur3_gazebo husky_ur3_HRI_lab.launch
MoveIt の起動とrvizの起動
roslaunch husky_ur3_gripper_moveit_config Omni_control.launch
そしてrvizの設定画面から以下の動画のようにアームを動かすことができます。
Husky のナビゲーションの起動
roslaunch husky_ur3_navigation husky_ur3_in_HRI_lab_amcl.launch
これを実行しておくとrvizで目的地を指定すると自律走行ができます。
Gripper の開閉
次に以下のコマンドを打ってGripperを開閉させます
# 開く
rostopic pub -1 /rh_p12_rn_position/command std_msgs/Float64 "data: 0.0"
# 閉じる
rostopic pub -1 /rh_p12_rn_position/command std_msgs/Float64 "data: 1.05"
👆のコマンドでグリッパーを開閉させたのが、以下の動画になります。
5. まとめ
公開されているリポジトリを活用し、Huskyというロボットにマニピュレーターを搭載し、アームを動かすことやグリッパーを開閉することをシミュレーションできました。
次回以降は、このグリッパーで何か物をつかむことに取り組んでみたいと思います。
参考記事やサイト
[1]Docker で ロボットHusky の遠隔操作走行シミュレーションと自律走行シミュレーションをしてみる(ROS Noetic環境)
[2]Integration of 4D BIM and Robot Task Planning: Creation and Flow of Construction-Related Information for Action-Level Simulation of Indoor Wall Frame Installation