ROSとV-REP(v3.4.0)を連携させて、ロボットシミュレーションをしてみたのですが、少しハマった箇所もあるので、その手順を記します。
はじめに
V-REPの概要
V-REPとは、Coopelia Robotics が提供するマルチプラットフォーム対応のロボットシミュレータです。多種多彩なロボットモデルがすぐに利用可能な形態で配布されており、様々なAPIと連携できるようになっています。
そのAPIの一つとして、ROSが対応しています。
今回の記述範囲
デフォルトでV-REPに搭載されている「rosInterfaceTopicPublisherAndSubscriber.ttt」を動作させるところまでです。
環境
- OS: Ubuntu 16.04
- ROS: Kinetic
セットアップ
V-REP の取得
V-REP v.3.4.0 をダウンロードします。保存先のディレクトリを「~/vrep_v340」とします。
$ wget http://coppeliarobotics.com/files/V-REP_PRO_EDU_V3_4_0_Linux.tar.gz -P ~/vrep_v340 $ tar -zxvf V-REP_PRO_EDU_V3_4_0_Linux.tar.gz $ mv V-REP_PRO_EDU_V3_4_0_Linux/* ./ $ rm -rf V-REP_PRO_EDU_V3_4_0_Linux
V-REPのルートディレクトリを環境変数VREP_ROOT
として登録するよう、~/.bashrc にアペンドします。
$ echo "export VREP_ROOT=~/vrep_v340" >> ~/.bashrc $ source ~/.bashrc
ROSパッケージのビルド
ROSワークスペースを作ります。
$ mkdir -p ~/catkin_ws/src $ cd ~/catkin_ws/src $ catkin_init_workspace
先にダウンロードしたV-REPのディレクトリにあるROSプラグインのパッケージを、ROSのワークスペースにコピーします。
$ cd ~/vrep_v340/programming/ros_packages/ $ cp -r ros_bubble_rob2 v_repExtRosInterface vrep_plugin_skeleton vrep_skeleton_msg_and_srv ~/catkin_ws/src/
ビルドはcatkin build
で行う必要があるようです。catkin_make
ではダメだそうです。python-catkin-tools
をインストールしていない場合は、インストールしましょう。
$ sudo apt update $ sudo apt install python-catkin-tools
ビルドします。
$ cd ~/catkin_ws $ catkin build
ビルドされたモジュールをV-REPのルートディレクトリにコピーします。
$ cd ~/catkin_ws/devel/lib $ cp libv_repExtRosInterface.so libv_repExtRosSkeleton.so ~/vrep_v340/
これにて準備完了です。
V-REPによるシミュレーション
起動
まずroscore
を立ち上げます。
roscore
次に、別シェルでV-REPを立ち上げます。
$ $VREP_ROOT/vrep.sh
シミュレータが立ち上がります。以下のようなメッセージが出ていればROSのプラグインが読み込まれています。
Plugin 'RosInterface': loading... Plugin 'RosInterface': load succeeded. Plugin 'RosSkeleton': loading... Plugin 'RosSkeleton': load succeeded.
Scene ファイルの読み込み
メニューバーの「File」→「Open」→「Scene」からファイル選択ダイアログを開き、「rosInterfaceTopicPublisherAndSubscriber.ttt」を選択します。
その後、ツールバー上の「Play」ボタンを押します。すると、カメラから取得したイメージをPublish した画像が上方に、Subscribe した画像が下方に表示されます。
トピックの一覧を見ると、下記のようになります。/image が画像のトピックです。
$ rostopic list /image /rosout /rosout_agg /tf /vrep/info /vrep_ros_interface/addStatusbarMessage /vrep_ros_interface/objectCount
rqt_graph
も確認してみます。/vrep_ros_interface
が/image トピックとやり取りしているのが確認できます。
トラブルシューティング
以下のようなエラーメッセージが出る場合があります。
symbol lookup error: ~/vrep_v340//libv_repExtRosInterface.so: undefined symbol: _ZN3ros4initERiPPcRKSsj
これは、~/vrep_v340/compiledRosPlugins\
以下のlibv_repExtRosInterface.so
とlibv_repExtRosSkeleton.so
を直接~/vrep_v340/
にコピーした時に起こります。
これらのモジュールについて、本エントリの手順に従ってソースコードからcatkin build
したものを使用すれば、問題は解決します。
おわりに
チュートリアルレベルの最低限のサンプルを動作させました。