メカトロニクスにうってつけの日

ロボット開発や研究活動に関するメモ

V-REPとROSの連携(V-REP Ver3.4.0版)

V-REPが3.4にバージョンアップして,ROSとの連携の勝手が変わった.連携のためにしたことをメモしておく.環境はubuntu14.04のROS indigo.従来の方法,および私流のremoteAPIの使い方は以下の記事を参照.

tattatatakemori.hatenablog.com

 

ここで紹介するやり方は概ね公式のチュートリアルに従っている.

http://www.coppeliarobotics.com/helpFiles/en/rosTutorialIndigo.htm

 

1 V-REPの最新版をダウンロード

下記サイトから,適切なV-REPをダウンロードし,展開して適当な場所に置く.私の場合はV-REP PRO EDU V3.4.0 rev1のLinux64bit版.

Coppelia Robotics V-REP: Create. Compose. Simulate. Any Robot: Downloads

以下では,V-REPのrootフォルダは ~/V-REP としている.

2 V-REP用ROSパッケージのビルド

2.1  RosInterfaceのプラグイン?を配置

V-REP/compiledRosPlugins/ にある

  • libv_repExtRosInterface.so
  • libv_repExtRosSkeleton.so

を V-REP/ にコピー.

2.2 パッケージを取ってくる

V-REP/programming/ros_packages/ から以下のパッケージをROSのsrcフォルダにコピー.

  • ros_bubble_rob2
  • v_repExtRosInterface
  • vrep_skeleton_msg_and_srv
  • vrep_plugin_skeleton

2.3 V-REPのrootフォルダへのパスを設定

V-REPのrootフォルダへのパスを通す.

export VREP_ROOT=~/V-REP

bashrcに書いておくとよい?

2.4 ビルド

catkin build コマンドでビルドする.catkin_make では不可.

2.5 連携の確認

roscore したあと,別ターミナルで~/V-REPに移動して

./vrep.sh

でV-REPが起動する.このときにV-REPのノードとかが立ち上がる.

rostopic list で確認すると以下の結果に.

$ rostopic list 
/rosout
/vrep_ros_interface

3 時刻の同期

V-REP上の時刻をROS上の時刻にする.

ros::Rateやros::Timeのいろいろをシミュレーション時刻にするにはこれが必要.

3.1 sceneファイルから時刻情報をPub

sceneファイルから適当なオブジェクトを選んで,[Menu bar --> Add --> Associated child script --> non threaded] によってスクリプトを追加.このスクリプトの編集画面を開き,中身を以下の内容に置き換える.

if (sim_call_type==sim_childscriptcall_initialization) then
    -- The child script initialization
    -- Check if the required RosInterface is there:
    moduleName=0
    index=0
    rosInterfacePresent=false
    while moduleName do
        moduleName=simGetModuleName(index)
        if (moduleName=='RosInterface') then
            rosInterfacePresent=true
        end
        index = index+1
    end

    if rosInterfacePresent then
        -- add publisher /clock
        clockPub=simExtRosInterface_advertise('/clock','rosgraph_msgs/Clock')
    end
end

if (sim_call_type==sim_childscriptcall_actuation) then
    -- Send an updated simulation time message, and send the transform of the object attached to this script:
    if rosInterfacePresent then
        simExtRosInterface_publish(clockPub,{clock=simGetSimulationTime()})
    end
end

if (sim_call_type==sim_childscriptcall_cleanup) then
    -- Following not really needed in a simulation script (i.e. automatically shut down at simulation end):
    if rosInterfacePresent then
        simExtRosInterface_shutdownPublisher(clockPub)
    end
end

ここでは'rosgraph_msgs/Clock'型の'/clock'というトピックにシミュレーション時間を詰めてPubしている.次の設定により,ROSのシステムがこれを受け取ってくれる.

3.2 シミュレータ時刻を使うように設定

以下のコマンドでそのように設定.

rosparam set use_sim_time true

V-REPを立ち上げた後にしても前にしても特に問題はなかった.以下の様にlaunchファイルに書いておくと楽.

<param name="use_sim_time" value="true" />

 

以上.

シミュレーション時間の刻みがros::Timeの分解能になるのが荒くて嫌なので改善できるなら改善したい.

eclipceでROS開発 catkin build版

ROSにおいて,catkin_makeではなくcatkin build を使う場合のEclipse用プロジェクトの作成方法についてメモ.ubuntu14.04のros indigoである.

 

はじめに

ROSでの開発のためのIDEEclipseを使っている.色々うれしいところがあって,例えばctrl+Bでビルドできるし,エラー箇所に跳べるのは便利である.環境構築は以下の記事に従っていた.

coffeegkgk.hatenablog.com

 

しかしながら,今までcatkin_makeでビルドしていたが,catkin buildを使う必要性が出てきた.その差については詳しくないが,catkin buildの方が新しくていろいろ良いらしい.catkin buildではbuildフォルダやdevelフォルダを作り直す必要があるので,上記記事に従って作ったeclipceのプロジェクトの設定的なものがなくなってしまった.

catkin build版のEclipseでの環境構築方法をメモしておく.

 

1. Eclipseのインストールや設定

上記の記事と同じ.私はEclipseのバージョンはMarsを使っている.新しすぎるとうまく起動せず,特に闘わずにバージョンを下げて対応した.

 

2. Eclipse用のプロジェクトを生成

下記ページの2.3に従う.

IDEs - ROS Wiki

まずビルド.

catkin build  --force-cmake -G"Eclipse CDT4 - Unix Makefiles"

次にプロジェクト生成

ROOT=$PWD
cd build
for PROJECT in `find $PWD -name .project`; do
    DIR=`dirname $PROJECT`
    echo $DIR
    cd $DIR
    awk -f $(rospack find mk)/eclipse.awk .project > .project_with_env && mv .project_with_env .project
done
cd $ROOT

これでEclipseからROSで生成されたbuildフォルダをプロジェクトとしてImportすればよい.

 

catkin_makeで作ったものと違ってパッケージごとにしっかり分かれていた.あたらしいパッケージを追加した場合はプロジェクト生成の部分をやり直す必要があるかも.

V-REPでVortexを有効化(ubuntu 14.04)

物理シミュレータのV-REPがバージョンアップして,今まで有料?だった物理エンジンのVortexが,登録すれば無料で使えるようになったらしい.ubuntu 14.04にて,そのためにやったことをメモ.

 

1. 最新のV-REPをダウンロード

V-REP PRO EDU V3.4.0 rev1をダウンロード.V3.4.0から今回の機能がついたっぽい.今回はFor Linux

www.coppeliarobotics.com

 

2. VortexのActivation Keyを取得

以下のページのStep 2までによって,Activation Keyを取得する.Keyはどこかにメモしておく.

www.cm-labs.com

 3. Vortexのダウンロード

上記ページのStep 3になんとなく従いつつ,Optional DownloadsからVortex Studio (Linux)をダウンロードして,適当な場所に展開.

 

4. ライセンスを有効化

ターミナルを開いてダウンロードした中のbinフォルダに移動.

.../bin$ sudo ./VortexLicenseManager --activate (2で取得したActivation Key)

 

以上でV-REPでVortexで使えるようになった.V-REP上では特になにもしていない.

まだあまりさわってないが,コンプライアンスの設定ができるのが良さげ.