Skip to content

motomanをV REPで動かすまでの軌跡

Mori edited this page Jul 31, 2018 · 4 revisions

まだ動かせるか分かりませんが、やれるところまでやってみようと思います。

ちなみに、2018年7月に研究室で購入したMASTERING ROS FOR ROBOTICS PROGRAMMING 2nd Editionの第5章Simulation Robots Using ROS and V-REPの通りにセットアップしても、うまく行きません笑。

ちゃんと本家のチュートリアルに従ってセットアップしましょう。 → http://www.coppeliarobotics.com/helpFiles/en/rosTutorialIndigo.htm

Indigoと書いてありますが、Kineticでも今のところは問題ありません。

はじめに

V-REPの概要

V-REPはCoopelia Robotics が提供するマルチプラットフォーム対応のロボットシミュレータです。多種多彩なロボットモデルがすぐに利用可能な形態で配布されており、様々なAPIと連携できるようになっています。

そのAPIの一つとして、ROSが対応しています。

環境

  • 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.

トラブルシューティング

V-REP起動時に以下のようなエラーメッセージが出る場合があります。

symbol lookup error: ~/vrep_v340//libv_repExtRosInterface.so: undefined symbol: _ZN3ros4initERiPPcRKSsj

これは、~/vrep_v340/compiledRosPlugins\以下のlibv_repExtRosInterface.solibv_repExtRosSkeleton.soを直接~/vrep_v340/にコピーした時に起こります。

これらのモジュールについて、本エントリの手順に従ってソースコードからcatkin buildしたものを使用すれば、問題は解決します。

Scene ファイルの読み込み

メニューバーの「File」→「Open」→「Scene」からファイル選択ダイアログを開き、「rosInterfaceTopicPublisherAndSubscriber.ttt」を選択します。

その後、ツールバー上の「Play」ボタンを押します。すると、カメラから取得したイメージをPublish した画像が上方に、Subscribe した画像が下方に表示されます。

V-REP_Hello

トピックの一覧を見ると、下記のようになります。/image が画像のトピックです。

$ rostopic list
/image
/rosout
/rosout_agg
/tf
/vrep/info
/vrep_ros_interface/addStatusbarMessage
/vrep_ros_interface/objectCount

rqt_graphも確認してみます。/vrep_ros_interfaceが/image トピックとやり取りしているのが確認できます。

V-REP_rqt_graph

To Be Continued