-
Notifications
You must be signed in to change notification settings - Fork 32
motomanをV REPで動かすまでの軌跡
まだ動かせるか分かりませんが、やれるところまでやってみようと思います。
ちなみに、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はCoopelia Robotics が提供するマルチプラットフォーム対応のロボットシミュレータです。多種多彩なロボットモデルがすぐに利用可能な形態で配布されており、様々なAPIと連携できるようになっています。
そのAPIの一つとして、ROSが対応しています。
- OS: Ubuntu 16.04
- ROS: Kinetic
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ワークスペースを作ります。
$ 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/
これにて準備完了です。
まず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.so
とlibv_repExtRosSkeleton.so
を直接~/vrep_v340/
にコピーした時に起こります。
これらのモジュールについて、本エントリの手順に従ってソースコードからcatkin build
したものを使用すれば、問題は解決します。
メニューバーの「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 トピックとやり取りしているのが確認できます。