玉川大学認知発達ロボティクス研究室 (RoboCup@Home 参加チーム) で開発されている移動マニピュレータ "SPUR" の ROS パッケージです.
メインのドキュメントは こちら を参照下さい.本日本語ドキュメントはインストール方法のみ記載します.
Table of Contents
下記がインストール済であると仮定します.
__(May 9, 2015) apt でのインストールは推奨に違いないのですが,今日現在, ソースインストールを行って下さい (omni 用 joystick ノードがまだ作業中のため.このチケット (#16) がクローズされたら,ソースインストールは不要になります).__
以下,簡便のために ROS Indigo と SPUR ROS パッケージ両方をインストールするコマンドを記載します. ROS のインストール詳細は, wiki をご覧下さい.
Ubuntu$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu trusty main" > /etc/apt/sources.list.d/ros-latest.list' Ubuntu$ wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add - Ubuntu$ sudo apt-get update && sudo apt-get install ros-indigo-desktop-full ros-indigo-spur Ubuntu$ sudo rosdep init && rosdep update Ubuntu$ echo "### For ROS setting" Ubuntu$ echo "source /opt/ros/indigo/setup.bash" >> ~/.bashrc Ubuntu$ source ~/.bashrc
ソースインストールは開発目的でのみ推奨されます. ~/catkin_ws/ ディレクトリにインストールすることを想定しています.
- catkin workspace を設定し SPUR ROS パッケージをダウンロード.
$ mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/src && catkin_init_workspace $ git clone https://github.com/tork-a/spur.git
1-1. joy stick を設定 (暫定).
全方位移動ロボット用の ROS の joystick ドライバはまだ開発が進んでいる最中なので,ソースでインストールします (April, 2015.関連するチケット).
$ cd ~/catkin_ws/src $ git clone https://github.com/130s/teleop_twist_joy.git && cd teleop_twist_joy && git checkout add/omnidir
1-2. scan_tools を設定 (暫定).
$ cd ~/catkin_ws/src $ git clone https://github.com/ccny-ros-pkg/scan_tools.git && cd scan_tools && git checkout b5efb32268911cada4bf5144af3578a5561dcfef -b 20150711
- 依存するライブラリのインストール.コンパイル.
$ cd ~/catkin_ws $ rosdep install --from-paths src --ignore-src -r -y $ catkin_make install && source install/setup.bash
タスクを作った都度,必ず実機で動作させる前にシミュレーションで確認するようにして下さい.
$ roslaunch spur_gazebo spur_world.launch # Simulation $ roslaunch spur_bringup minimal.launch # 実機
以下は PS3-Elecom で確認済みの手順です.
- joystick をペアリング.
- joystick ROS ノード起動.
$ roslaunch spur_bringup joy_teleop.launch $ roslaunch spur_bringup joy_teleop.launch joy_port:=/dev/input/js1 # If joy is found on a different port
- PS3-Elecom を使うためには, "Mode" ボタンを二回押して,アナログ入力を有効化する.動作を行う際はボタン 9 を押し下げ続ける.
$ roslaunch spur_bringup kb_teleop.launch
台車と共に次のサービスを,下に示すコマンドで起動する;RViz, gmapping.
term-1a$ roslaunch spur_bringup minimal.launch # Real robot term-1b$ roslaunch spur_gazebo spur_world.launch visualize_laser:=true # Simulation term-2$ roslaunch spur_description rviz.launch term-3$ roslaunch spur_2dnav gmapping.launch
起動したら,既存チュートリアルを参考にしてロボットを移動して地図を作成する (e.g. one from Turtlebot).
このロボット運用の際に最もよく使うコマンドかも知れないので,1行のコマンドで実行できるようにしてあります.注意点:
- シミュレーション・モードは Willow Garage 社の地図をデフォルトで用います
- 実機では map_file 引数指定が**必須**です
次の1行のコマンドで move_base 等自律移動に必要なノードを (台車,RViz 等地図作成時に使用したノード群と共に) 起動します:
.. code-block::
term-1-sim$ roslaunch spur_2dnav amcl.launch sim:=true term-1-real$ roslaunch spur_2dnav amcl.launch map_file:=%PATH_MAPFILE%
(Ex.) term-1-real$ roslaunch spur_2dnav amcl.launch map_file:=`rospack find spur_2dnav`/launch/mysweethome.yaml
(Gazebo と) RViz が表示されたら,RViz 上で次の操作で自律移動を開始します:
- 2D Pose Estimate ボタン (通常 RViz の最上部に表示されている) で正しいロボットの現在位置を指定する.
- ロボットの位置が合ったら 2D Nav Goal ボタンを押し,ゴール位置姿勢を指定する.
Image. 2D pose of the robot is matched using 2D Pose Estimate feature on RViz.
その他操作の詳細は既存チュートリアルを参照 (e.g. Using rviz with the Navigation Stack).
ゴール位置姿勢をプログラムで与えたい場合,geometry_msgs/PoseWithCovarianceStamped トピックを発行する (詳細:this QA).