OpenRAVE 環境構築および簡単な使い方
[履歴] [最終更新] (2018/12/07 01:27:43)
1
作品
407
技術情報
最近の投稿
ここは
趣味の電子工作を楽しむ人のためのハードウェア情報共有サイト

技術情報や作品の投稿機能、リアルタイム遠隔操作 API をご利用いただけます。
新着作品

概要

ロボットアプリケーションの開発環境の一つ OpenRAVE (Open Robotics Automation Virtual Environment) の環境を構築するための手順を記載します。ここでは特に Debian9 を利用します。

インストール

依存パッケージ

ビルドツール関連

sudo apt install git build-essential cmake

Python モジュール

sudo apt install python-ipython python-dev python-numpy python-scipy python-sympy python-h5py

Boost 関連

sudo apt install libboost-all-dev libboost-date-time-dev

Qt 関連

sudo apt install qt4-dev-tools libqt4-dev libsoqt-dev-common libsoqt4-dev

3D モデル関連、その他ライブラリ

sudo apt install minizip rapidjson-dev libassimp-dev libavcodec-dev libavformat-dev libbullet-dev libcairo2-dev libccd-dev libfaad-dev libglew-dev libgsm1-dev liblapack-dev liblog4cxx-dev libminizip-dev libmpfr-dev libode-dev libogg-dev libpcre3-dev libpcrecpp0v5 libpoppler-glib-dev libqhull-dev libsdl2-dev libswscale-dev libtiff5-dev libvorbis-dev libx264-dev libxml2-dev libxrandr-dev libxvidcore-dev

collada-dom

COLLADA ファイルを C++ から扱うためのライブラリをインストールします。Git tag v2.5.0 をチェックアウトします。

git clone https://github.com/rdiankov/collada-dom.git
cd collada-dom
git checkout v2.5.0

CMake でビルドします。

mkdir build && cd build
cmake ..
make
sudo make install

以下のような場所にインストールされます。

ls -ltr /usr/local/include/collada-dom2.5/
ls -ltr /usr/local/lib/

OpenSceneGraph (OSG)

git clone https://github.com/openscenegraph/OpenSceneGraph.git
cd OpenSceneGraph
mkdir build && cd build
cmake .. -DDESIRED_QT_VERSION=4
make
sudo make install

以下のような場所にインストールされます。

ls -ltr /usr/local/lib64/
ls -ltr /usr/local/include/osg*

Flexible Collision Library (fcl)

git clone https://github.com/flexible-collision-library/fcl.git
cd fcl
git checkout 0.5.0
mkdir build && cd build
cmake ..
make
sudo make install

以下のような場所にインストールされます。

ls -ltr /usr/local/include/fcl
ls -ltr /usr/local/lib/

OpenRAVE

ソースコードのダウンロード

git clone https://github.com/rdiankov/openrave.git
git checkout master

本ページで利用するハッシュは以下のとおりです。

$ git log --oneline -1
7c5f5e27 Merge pull request #557 from rdiankov/verification

CMake でビルドします。

mkdir build && cd build
cmake .. -DOSG_DIR=/usr/local/lib64/
make
sudo make install

以下のような場所にインストールされます。

ls -ltr /usr/local/include/openrave-0.9/
ls -ltr /usr/local/share/openrave-0.9/
ls -ltr /usr/local/lib/
ls -ltr /usr/local/lib/python2.7/dist-packages/openravepy/
ls -ltr /usr/local/lib/openrave0.9-plugins/
ls -ltr /usr/local/bin/

インストールされた実行ファイルは以下のとおりです。

openrave-config
openrave
openrave.py
openrave-robot.py
openrave-createplugin.py

openrave-config を用いて so ファイルpython モジュールへのパスを追加しておきます。

echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(openrave-config --python-dir)/openravepy/_openravepy_
export PYTHONPATH=$PYTHONPATH:$(openrave-config --python-dir)' >> ~/.bashrc
source ~/.bashrc

以下のようなサンプルを実行できることを確認します。

openrave.py --example hanoi

Uploaded Image

openrave.py --example graspplanning

Uploaded Image

サンプル名の一覧は以下のコマンドで取得できます。

openrave.py --listexamples

サンプルコード

COLLADA ファイルの読み込み

OpenRAVE で読み込めるファイル形式の一つに COLLADA (.dae) があります。ただし、バージョンは 1.5 であることが必要です。ソースコードからビルドしてインストールした際に作成されたディレクトリに v1.5 の dae ファイルが格納されています。

$ ls /usr/local/share/openrave-0.9/data/*.dae
/usr/local/share/openrave-0.9/data/mug1.dae
$ grep 'version' /usr/local/share/openrave-0.9/data/mug1.dae
<?xml version="1.0" encoding="UTF-8"?>
<COLLADA xmlns="http://www.collada.org/2008/03/COLLADASchema" version="1.5.0">

これを読み込むためには以下のようにします

from openravepy import Environment, with_destroy
from numpy import eye
env = Environment()
env.SetViewer('qtcoin')
body = env.ReadKinBodyXMLFile(filename='data/mug1.dae')
env.AddKinBody(body)
body.SetTransform(eye(4))

SetTransform() では同次変換行列を指定します。ワールド座標系に対して、物体の座標系における各メッシュの頂点座標を回転も平行移動もさせない、ということになります。

Uploaded Image

このように、OpenRAVE では環境 env に物体の body を追加していきます。

In [9]: env.GetBodies()
Out[9]: []

In [10]: env.AddKinBody(body)

In [11]: env.GetBodies()
Out[11]: [RaveGetEnvironment(1).GetKinBody('mug')]

In [12]: env.Reset()

In [13]: env.GetBodies()
Out[13]: []

最初から物体を環境に読み込んだ状態で起動することもできます。

openrave.py -i 'data/mug1.dae'
In [1]: env.GetBodies()
Out[1]: [RaveGetEnvironment(1).GetKinBody('mug')]

平行移動

http://openrave.org/docs/latest_stable/tutorials/openravepy_beginning/
http://openrave.org/docs/latest_stable/tutorials/openravepy_examples/
http://openrave.org/docs/latest_stable/command_line_tools/
http://openrave.org/docs/latest_stable/tutorials/tutorial_002/

回転

http://openrave.org/docs/latest_stable/tutorials/tutorial_003/
http://openrave.org/docs/latest_stable/tutorials/tutorial_004/

関連ページ