#ROS

JSKのプログラムをインストールして動かすところまでのメモ

必要なPC環境

  • Ubutnu 14.04
  • ROS indigo

http://wiki.ros.org/indigo/Installation/Ubuntu にしたがって,indigoが入っていることを想定.

sudo apt install ros-indigo-desktop 的なことを既にやってあるという意味.

Install

本当は https://github.com/jsk-ros-pkg/jsk_common のREADME.mdに書いてあるコマンドを打てば良い(==jsk.rosbuildをそのまま実行すれば良い)が,今回必要ないものも大量に入ってきて時間がかかりすぎるので,最小構成でインストールを進めるよう微修正する.

手順としては
1. 何も入っていないUbuntuに,一発で環境構築してくれる便利スクリプトjsk.rosbuildをダウンロードする
2. その便利スクリプトを最小構成でインストールできるように微修正する
3. そのスクリプトを実行する
4. catkin buildをする

で,30分くらい?かかる.

STEP 1: 何も入っていないUbuntuに,一発で環境構築してくれる便利スクリプトをダウンロードする

何も入っていない,というのはROSのインストールもやってくれるという意味だけで,ROSが既に入っていたり何か変なソフトが入っていたりしても大丈夫(なはず).

wget -q -O /tmp/jsk.rosbuild https://raw.github.com/jsk-ros-pkg/jsk_common/master/jsk.rosbuild

をして,jsk.rosbuildという名前のスクリプトを/tmp以下にダウンロードする.

STEP 2: 最小構成でインストールできるようにjsk.rosbuildを微修正する

emacs -nw /tmp/jsk.rosbuild

して,一番下の# main programのところを見る.
微修正せずに実行すると

  • setup-ros
  • install-jsk-ros-pkg
  • compile-jsk-ros-pkg

の順に呼ばれるが,setup-roscompile-jsk-ros-pkgを省きたいので,コメントアウトする

bashスクリプトなので#をつけたらコメントアウトできる

setup-rosを省く理由は,既にROSが入っているPCのためROSを入れる過程をスキップしたい+javaを入れたくないから.
compile-jsk-ros-pkgを省く理由は,ビルドは自分でやりたいから.

次に,function install-pkgという関数のところに移動して,関数の先頭に,

read -p "hoge"
read -p "hoge"
read -p "hoge"
read -p "hoge"
read -p "hoge"

と5行くらいキー入力を待つようにする.

微修正は以上の2つでおしまい.

STEP 3: 修正したjsk.rosbuildを実行する

まず

sudo easy_install pip
sudo pip install --upgrade pip setuptools
sudo apt install python-rosdep python-wstool python-catkin-tools
sudo rosdep init
rosdep update

をしておく.(本来はこれらはjsk.rosbuildsetup-rosという関数の内部で呼ばれていたが,今回はその関数をコメントアウトしたので手動で行う.)

で,

source /opt/ros/indigo/setup.bash
bash /tmp/jsk.rosbuild --from-source --rtm indigo

をする.

最初の方はY or Nを聞かれるかもしれないので,聞かれたらyes.

何分か待つと,STEP2で仕込んだread -p "hoge"のところに到達して,キー入力待ちになる.
先ほど5行ほど追加したのは,ここで急いで1回Enterしてしまっても大丈夫なように保険をかけただけ.
ここで一旦別のことをするので,このターミナルは一旦放置.

別ターミナルで/tmpを見るとrosinstall.xxxというファイルがいくつか出来ている.

rosinstall.xxxというファイルは3つくらいあるので,その中で一番行数が長いやつを開いて,

#\n
- git:
    uri: https://github.com/start-jsk/rtmros_tutorials.git
    local-name: rtm-ros-robotics/rtmros_tutorials
- git:
    uri: https://github.com/start-jsk/rtmros_gazebo.git
    local-name: rtm-ros-robotics/rtmros_gazebo
# rosinstall file for https://github.com/jsk-ros-pkg
# use #@# for special comment out, due to jsk.rosbuild specification
#

# jsk-ros-pkg
- git:
    uri: https://github.com/jsk-ros-pkg/jsk_roseus.git
    local-name: jsk-ros-pkg/jsk_roseus
    version: master
- git:
    uri: https://github.com/jsk-ros-pkg/jsk_robot.git
    local-name: jsk-ros-pkg/jsk_robot
    version: master
- git:
    uri: https://github.com/jsk-ros-pkg/jsk_pr2eus.git
    local-name: jsk-ros-pkg/jsk_pr2eus
    version: master
- git:
    uri: https://github.com/jsk-ros-pkg/jsk_model_tools.git
    local-name: jsk-ros-pkg/jsk_model_tools
    version: master
- git:
    uri: https://github.com/jsk-ros-pkg/jsk_common.git
    local-name: jsk-ros-pkg/jsk_common
    version: master
- git:
    uri: https://github.com/jsk-ros-pkg/jsk_common_msgs.git
    local-name: jsk-ros-pkg/jsk_common_msgs
    version: master
- git:
    uri: https://github.com/jsk-ros-pkg/jsk_3rdparty.git
    local-name: jsk-ros-pkg/jsk_3rdparty
    version: master

- git:
    uri: https://github.com/start-jsk/rtmros_common.git
    local-name: rtm-ros-robotics/rtmros_common
- git:
    uri: https://github.com/start-jsk/rtmros_hironx.git
    local-name: rtm-ros-robotics/rtmros_hironx
- git:
    uri: https://github.com/tork-a/rtmros_nextage.git
    local-name: rtm-ros-robotics/rtmros_nextage

となるように修正する.
ここでやったことは,git cloneする数を減らしているイメージ.これをしないと最小構成にならない.

で,jsk.rosbuildを走らせていてread -p "hoge"で止まっているターミナルに戻ってEnterを連打してreadを抜けてjsk.rosbuildを続ける.

ちょっと待つと終わる.
正常に終わるはず.

これでソースコードをゲット出来た.
$HOME/ros以下にいろいろあるはず.

次に,これらのソースコードが依存しているpackgeをaptやpipで入れるためにrosdep installをする.

source /opt/ros/indigo/setup.bash
cd ~/ros/indigo/src
rosdep install -q -y -n -r --ignore-src --from-paths $HOME/ros/indigo_parent/src $HOME/ros/indigo/src .

で,手元に落としてきたソースが依存しているパッケージをaptやpipで入れてくれる.
何個かエラーが出るが,気にしなくて良い(プライベートレポジトリにアクセスできないから,とかそんな感じの理由でエラーは出るけど問題ない)

STEP 4: ビルドする

source /opt/ros/indigo/setup.bash
cd ~/ros/indigo_parent/
catkin build
# 待つ
cd ~/ros/indigo/
source ~/ros/indigo_parent/devel/setup.bash
catkin build
# 待つ

でok.

parentが付くほうが,ROS非依存のもの(hrpsys / openhrp3 / euslispなど)で,parentが付かない方が普通のros package.

/opt/ros/indigo/setup.bashをソースしてからparentの方をまずビルドして,parentのdevelのsetup.bashをソースしてから普通の方をビルドすることで,チェーンが出来ていろいろと良いことがある.

ビルドがエラー無く終わったら,完成.

emacs -nw ~/.bashrcをして,最後にsource $HOME/ros/devel/setup.bashを書いておく.

動かしてみる

用語を説明すると

  • hrpsys: 歩行軌道生成とか安定化制御とかのRTCを持っている人
  • hrpsys-simulator:動力学シミュレータその1
  • roseus: ipythonみたいなやつ
  • choreonoid:動力学シミュレータその2
  • gazebo:動力学シミュレータその3

hrpsys + hrpsys-simulatorを試す

roscd hrpsys
cd launch
roslaunch samplerobot.launch

でシミュレータが起動する.

roscd hrpsys
cd sample/SampleRobot
ipython -i samplerobot_auto_balancer.py

でロボットがいろいろと動く.

samplerobot_auto_balancer.pyの中身やそのディレクトリにあるhoge.pyを試してみると,いろいろ動く.

hrpsys + hrpsys-simulator + roseusを試す

rtmlaunch hrpsys_ros_bridge samplerobot.launch RUN_RVIZ:=false

したらシミュレータが起動する.

別ターミナルで

emacs -nw -f shell
roscd hrpsys_ros_bridge
cd euslisp
roseus samplerobot-interface.l

するとeuslispでロボットを動かせる.

http://wiki.ros.org/rtmros_common/Tutorials に比較的詳し目に書いてある

euslispで可視化しつつ姿勢を作って,それをhrpsys-simulatorに送ると,動きが簡単に作れて楽しい.

a.gif

hrpsys + choreonoid + roseusを試す

choreonoid hrpsysでググるとやり方が出てくる気がする.

hrpsys + gazebo + roseusを試す

http://wiki.ros.org/rtmros_common/Tutorials に比較的詳し目に書いてある.