ros:study:04

4. 地図生成

# 2015-06-05 AND

kinetic環境の人は,
$ sudo apt-get install ros-kinetic-slam-gmapping
$ sudo apt-get install ros-kinetic-map-server
ターミナル1
$ roscore

ターミナル2(ロボットとPCを接続しておくこと)
$ ypspur-coordinator -p your_robot.param -d /dev/ttyACM0

ターミナル3
$ rosrun ypspur_ros_bridge ypspur_ros_bridge

ターミナル4
$ rosrun hokuyo_node hokuyo_node _port:=/dev/ttyACM1        または、    $ rosrun hokuyo_node hokuyo_node _port:=/dev/ttyACM0 _min_ang:=-2.08621382713 _max_ang:=2.08621382713

ターミナル5
$ rosrun sensor_tf_test sensor_tf_test

ターミナル6
$ rosrun gmapping slam_gmapping scan:=scan

ターミナル7
$ rosrun joystick_commander joystick_commander /dev/input/js0

ロボットを走らせる。 走らせ終わったら、今までのターミナルを止めずに新しくターミナルを作り、次のコマンドで地図を保存する。

ターミナル8
$ mkdir -p ~/ros_study
$ cd ~/ros_study
$ rosrun map_server map_saver -f map_name              //map_name は mapを作った場所、部屋名などにしておくとよい
ターミナル1
$ roscore

ターミナル2(ロボットとPCを接続しておくこと)
$ ypspur-coordinator -p your_robot.param -d /dev/ttyACM0

ターミナル3
$ rosrun ypspur_ros_bridge ypspur_ros_bridge

ターミナル4
$ rosrun hokuyo_node hokuyo_node _port:=/dev/ttyACM1        または、    $ rosrun hokuyo_node hokuyo_node _port:=/dev/ttyACM1 _min_ang:=-2.08621382713 _max_ang:=2.08621382713

ターミナル5
$ rosrun sensor_tf_test sensor_tf_test

ターミナル6
$ rosrun joystick_commander joystick_commander /dev/input/js0

上の6つのターミナルを実行させて準備が整ったら、また新しくターミナルを作り、次のコマンドでログデータを保存を始める。

ターミナル7
$ mkdir -p ~/ros_study/                              //ログデータを保存する場所を作っておく
$ cd ~/ros_study
$ rosbag record -o log_name -a                 //log_name はlogデータを取得した場所を入れるとよい

ログデータの保存が始まったら手動でロボットを走らせる。

走らせ終わったら、ターミナル7を Ctrl + C でログデータの保存を止める。

その後、ターミナル1〜6についても同様に Ctrl + C で止めること。

ターミナル1
$ roscore

ターミナル2
$ rosparam set use_sim_time true
$ rosrun gmapping slam_gmapping scan:=scan

上の2つのターミナルを実行させて準備が整ったら、また新しくターミナルを作り、次のコマンドでログデータを再生を始める。

ターミナル3
$ cd ~/ros_study
$ rosbag play log_name_timestamp.bag --clock

ログデータの再生が終わるのを暫く待つ。 スペックの低いPCを使う場合は、“$ rosbag play log_name_timestamp.bag –clock -r 0.3” のようにして、再生速度を遅くするとよい 追記:今どきのPCならば1倍速でも問題ないが、ゆっくり再生した方が綺麗に地図が作られる。(処理が間に合っていない場合、古いscanデータを読み飛ばして、最新のscanデータのみを使って地図を作るため)

再生が終わったら、さらに新しくターミナルを作り、次のコマンドで生成した地図を保存する。

ターミナル4

$ cd ~/ros_study
$ rosrun map_server map_saver -f map_name                   //map_name は mapを作った場所、部屋名などにしておくとよい

~/ros_studyに生成した地図が保存されているので、ファイルを開いて見てみると良い。

地図を生成している間($rosrun gmapping slam_gmappingを動作させている間)、rvizを立ち上げることで 地図生成の様子を見ることができる。

$rosrun rviz rviz

下記の画面のようにして、“/map”を追加する。

“Fixed Flame”を“map”か“odom”にすると地図が作られていく様子が表示される。(下記の画像は、“odom”だが“map”の方がよい)

<color red>rvizを閉じる前に、設定を保存しておくこと</color>

http://wiki.ros.org/gmapping の “4.14 Parameters”を参考に変更する。

例 つくばチャレンジ2014 robolin.jpで使用

$ rosrun gmapping slam_gmapping scan:=scan _particles:=50 _map_update_interval:=1.0 _srr:=0.001 _srt:=0.002 _str:=0.001 _stt:=0.002 _sigma:=0.2 _lstep:=0.2 _astep:=0.2 _iterations:=5 _delta:=0.2 _occ_thresh:=0.15
  • ros/study/04.txt
  • 最終更新: 2018/05/24 04:07
  • by tsukuchalle