でみっこの備忘録☆Chu

でみっこの備忘録です。てきとーなのです。ごりょうしょうあれ。

備忘録: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