LoginSignup
2
0

More than 1 year has passed since last update.

VTC上のロボットをROSのnavigation_stackで動かす

Posted at

この記事について

Unreal Engine上で動く移動ロボットシミュレータVTC上のロボットをROSのnavigation stackで動かしたので、そのセットアップについて記載した。
追加したコードや各種ライブラリのinstall方法についてはここにある。

構成

構成としては下記のようにWindows PC上でVTCを動かし、別のLinux PC側のrvizにnav_goalを入力して、それをもとにmove_baseがcmd_velを決定して、cage_ros_stackに受け渡し、cage_ros_stackがcmd_velをVTCに受け渡して、VTC上のロボットがnav_goalまで移動するという風になっている。
構成.png

動作環境

 VTCはUnreal EngineをインストールしたWindows上で動かし、ROSはUbuntuをインストールした別のPCで動かす。

 Windows側の動作環境

  • Windows10 2004 64bit
  • Unreal Engine 4.254

Ubuntu側の動作環境

  • Ubuntu18.04
  • ROS Melodic

各種セットアップ

Windows側のセットアップ

VTCの製作者が基本的なセットアップ方法について書いているので、それを参考にセットアップする。
https://github.com/furo-org/VTC/blob/TC2020/docs/editor.md

Ubuntu側のセットアップ

  • ROS Melodic

    ROSのインストールについてはここを参照する

  • octomap

    point cloudからoccupancygridを生成するのに使用する

sudo apt-get install ros-${ROS_DISTRO}-octomap
  • move_base nav_goalを受け取り、occupancygridをもとにパスを生成して、制御信号であるcmd_velをpublsihする。
sudo apt-get install ros-${ROS_DISTRO}-move-base
  • vtc_move_base_test rvizのnav_goal入力後にpublsihされるgeometry_msgsのPoseStampedをmove_baseで利用されるmove_base_msgsのMoveBaseActionGoalに変換してpublishする。
cd ~/catkin_ws/src
git clone https://github.com/yuataka/vtc_move_base_test.git
cd ..
catkin_make
  • cage_ros_stack

    ubuntu PC側でVTCとのやりとりを行う。インストールに関してはリンク先を参照。

Move_baseの設定

navigation_stakの設定に関してはROS公式のTutrialをもとに行った。各種configファイルはここにある。Turtrialとは各種frameとcostmap_common_params.yamlで、laser_scan_sensorからpoint_cloud_sensorに変更したところが異なる。

実行

VTCを実行する

VTCのセットアップを終えた状態でVTC.uprojectをクリックすると下記のようになる。
VTC - Unreal Editor 2021_07_27 13_12_46 - コピー.png

右上のプレイを押すと下記のような画面になるので、Randomize Layoutを押す。
VTC - Unreal Editor 2021_07_27 13_06_49 - コピー.png
これでVTCの実行は完了。カラーコーンの先のロボットを別のPCからROSで動かす。
VTC - Unreal Editor 2021_07_27 13_15_09.png

cage_ros_stackを起動する

下記コマンドをLinux PC側で実行することでcage_ros_stackを起動する。Windows側のIPアドレスは調べて、パラメーターとして受け渡す必要がある。

roslaunch vtc_bringup bringup.launch ip:=[your Windows PC IP address]

octomap、move_base等を起動する

roslaunch vtc_move_base_test vtc_map_move.launch 

動作結果

VTC側の動作
vtc_output.gif

Rviz側の操作
rviz_output(2).gif

今後の改良点

今の構成だとoctomapが自己位置にIMUの情報のみを利用しているので、自己位置推定のために何らかのslamのライブラリをかませる必要がある。lio-samとLego-loamをとりあえず試してはいるが、Lego-loamは回転方向の蓄積誤差が多く問題がある。lio-samについては、おそらくVTC側のLiDARとIMUのタイムスタンプに問題があるのか、振動が起こるため、VTC側でどのようにタイムスタンプをつけているか確認する必要がある。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0