備忘録:ubuntu 18.04+ROS Melodicでslam実行時トラブルシュート(シミュレータ環境)
注意:完全自分用メモなので特に編集なしです
・事の発端
お仕事でROSを使ったロボット用SWの開発を行うようになった
→お盆休みを利用して自前PCにUbuntu18.04+ROS Melodic環境を構築し、slamのおべんきょうをしようと。。。
→基本的にはROS公式のいんすとれーしょんに従ったけど、SLAMに必要なパッケージがなくて動かないじゃん!!!ってなった。。。
→今後一から環境構築する機会があった時用のかんp・・・もといメモとして残しておこう!
→UbuntuからネイティブにOneNoteは使えない?ので、仕事中でも見れるブログにアップしておこ〜
→今にいたぁーる
・やりたいこと
gazeboでstage4を立ち上げ、作成したマップでnavigationを行いたい
・fullパッケージ以外でインストールが必要なもの
基本的にはROBOTISのセットアップ手順に準拠するかんじ!
https://emanual.robotis.com/docs/en/platform/turtlebot3/pc_setup/
1,依存パッケージ関連
なにもかんがえずにとりあえずぜんぶぶっこむ!!!
sudo apt-get install ros-melodic-joy ros-melodic-teleop-twist-joy ros-melodic-teleop-twist-keyboard ros-melodic-laser-proc ros-melodic-rgbd-launch ros-melodic-depthimage-to-laserscan ros-melodic-rosserial-arduino ros-melodic-rosserial-python ros-melodic-rosserial-server ros-melodic-rosserial-client ros-melodic-rosserial-msgs ros-melodic-amcl ros-melodic-map-server ros-melodic-move-base ros-melodic-urdf ros-melodic-xacro ros-melodic-compressed-image-transport ros-melodic-rqt-image-view ros-melodic-gmapping ros-melodic-navigation ros-melodic-interactive-markers
★1つ1つ確認しながら入れたいという人向け
sudo apt-get install ros-melodic-joy
sudo apt-get install ros-melodic-teleop-twist-joy
sudo apt-get install ros-melodic-teleop-twist-keyboard
sudo apt-get install ros-melodic-laser-proc
sudo apt-get install ros-melodic-rgbd-launch
sudo apt-get install ros-melodic-depthimage-to-laserscan
sudo apt-get install ros-melodic-rosserial-arduino
sudo apt-get install ros-melodic-rosserial-python
sudo apt-get install ros-melodic-rosserial-server
sudo apt-get install ros-melodic-rosserial-client
sudo apt-get install ros-melodic-rosserial-msgs
sudo apt-get install ros-melodic-amcl
sudo apt-get install ros-melodic-map-server
sudo apt-get install ros-melodic-move-base
sudo apt-get install ros-melodic-urdf
sudo apt-get install ros-melodic-xacro
sudo apt-get install ros-melodic-compressed-image-transport
sudo apt-get install ros-melodic-rqt-image-view
sudo apt-get install ros-melodic-gmapping
sudo apt-get install ros-melodic-navigation
sudo apt-get install ros-melodic-interactive-markers
rosserial系はシミュレータでSLAMやる分には多分ひつようないとおもう
2,Turtlebot3関連パッケージ
ROS作業フォルダのソースフォルダ内(catkin_init_workspaceを行った場所)で実行
git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
git clone https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver
最後のhls_lfcd_lds_driverっているのかはわかんにゃい〜
3,Rviz
sudo apt install ros-melodic-rviz
sudo apt install ros-melodic-dwa-local-planner
rvizはひっす!
4,Slam関係
sudo apt install ros-melodic-slam-gmapping
多分gmappingインストールしてればいらないのかも?
・ナビゲーション実行に必要な2D地図の作成
1,ワールド立ち上げ
roslaunch turtlebot3_gazebo turtlebot3_stage_4.launch
→gazeboが立ち上がる
2,(別ターミナル)マップ作成
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
→Rvizが自動的に立ち上がる
3,(別ターミナル)シミュレータ上のTurtlebot3を動かしてマップを作る
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
→一番時間がかかる。。。
4,(別ターミナル)作ったマップを保存
mkdir ~/maps
rosrun map_server map_saver -f ~/maps/stage4_map
→保存前にRviz消すともれなくやりなおーし
・作った地図でナビゲーション!
1,ワールド立ち上げ
roslaunch turtlebot3_gazebo turtlebot3_stage_4.launch
→gazeboが立ち上がる
2,さっきつくった2Dまっぷでーたを読み込む!
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/maps/stage4_map.yaml
→Rvizが立ち上がる
3,初期位置の調整
Rviz画面上部の2D Pose EstimationからTurtolebot3の初期位置をレーザーレンジファインダの点群とマップ上の壁の位置が合うようにちょーせー
4,ナビゲーションしちゃう!
2D Nav Goalで指定した位置及び向きにTurtlebot3が動くはず〜
番外編
1,ロボットが今ワールドマップのどこの座標にいるかしりたい!
→座標変換ならtfにおまかせあれ!
rosrun tf tf_echo /map /base_link
/map:マップ全体のワールド座標系(マップが変わらない限り更新されない)
/base_link:ロボットの位置を原点としたローカル座標系(ロボットが移動する度に更新される)
2,実際のTurtlebot3を使った場合との違い
作成時もナビゲーション時もgazeboはいらない
Turtlebot3搭載側で以下コマンドが必要
roslaunch turtlebot3_bringup turtlebot3_robot.launch