おおたfabさんでは、「素人でもロボットをつくりたい」という勉強会を定期的に行っています。前回はオドメトリ情報を使ってルンバ実機を動かしてみましたが、今回は新たにLiDARを使って地図の作成にチャレンジしてみます。

今回もdemura.netさんの記事を参考にして進めています。
Gazeboシミュレーターで地図を作ってみる
みなさんGazeboシミュレータにも慣れてきて、参考サイトの手順通りに操作を行うことができました。
地図の作成はキーボードでGazeboシミュレーターのルンバを動かすことで、シミュレーター搭載のLiDARの情報をもとに地図を作っていきます。ルンバを壁にぶつけてしまうと地図が乱れてしまうので、慎重に動かしていきます。

大体まわったところで、地図情報を保存します。モノクロ画像の形式であるpgmファイルと情報が含まれているyamlファイルが出力されます。pgmファイルを画像ビューアーで開くとこのような表示になりました。

きれいに地図ができました。
Gazeboシミュレーターで自律走行をしてみる
次はシミュレーターで自律走行をしてみます。先ほど作成した地図を使うこともできるのですが、参考サイトの手順通りに操作を行い、ゴールの地点までルンバが自動的に動くことを確認しました。
ルンバ実機で地図を作ってみる
シミュレーターで地図を作ることができたので、ルンバ実機と手持ちのLiDAR(RPLiDAR A1M8)で同様のことができないか実験をしてみました。探してみたところdemura.netさんの以下の記事を見つけました。
しかし、この記事はROS Melodicではなく、ROS kineticで、LiDARもHokuyo Lidar(UTM-30 LX)という異なる構成です。しかし、流れは同じと考えて手順を起こしました。
またROSのオフィシャルサイトでも同様の手順が掲載されています。
- 以下を参考にROSとcreate_autonomyをインストールしたRaspberry Pi 4(4GB)環境を準備する。 https://github.com/docofab/RoombaControlls/blob/main/ROS/instructions/setup-gazebo-rasppi.md
- Navigation & SLAM のインストール(もう入っているかも) $ sudo apt install ros-melodic-navigation $ sudo apt install ros-melodic-slam-gmapping
- 新しいRPLIDAR ROS パッケージに置き換えたいので ros-melodic-rplidar-ros がインストールされていたらアンインストールする。 $ sudo apt remove ros-melodic-rplidar-ros
- RPLIDAR ROS パッケージ rplidar_rosをクローンする。 $ cd ~/catkin_ws/src $ git clone https://github.com/Slamtec/rplidar_ros.git $ catkin build rplidar_ros $ source ~/.bashrc
- 新しいターミナルを開き、ルンバ実機のドライバを実行する $ roslaunch ca_driver create_2.launch
- 新しいターミナルを開き、ルンバをキーボードで操作できるようにする。 $ roslaunch ca_tools keyboard_teleop.launch
- 新しいターミナルを開き、RPLiDARのノードを起動する。 $ roslaunch rplidar_ros rplidar.launch
- 新しいターミナルを開き、全Topicデータを記録する $ mkdir -p ~/bag $ cd ~/bag $ rosbag record -a
- 6.のターミナルでキーボードを操作してロボットを動かし地図生成のためのデータを取得する。
- 取得が終わったら、忘れずに、Ctrl-Cでrosbagを止める。
- bagファイルを使って地図生成するための設定をする。 $ rosparam set use_sim_time true
- SLAMを実行します。 $ rosrun gmapping slam_gmapping
- 取得したtopicの再生 $ rosbag play –clock “bagファイル名”
- topicの再生が終了してから以下のコマンドを実行する。 $ mkdir -p ~/map $ cd ~/map $ rosrun map_server map_saver
- ~/mapディレクトリにmap.pgmとmap.yamlが生成される。
ルンバ実機+LiDARで地図データを取得している様子です。
実際に取得できた地図はこのようなものになりました。

思ったような地図は取れておらずもう少し確認が必要のようです。今回の実験では全Topicデータを取得しているので、LiDARのデータをRvizで確認したところ、scanトピックスはきちんととれているようにみえます。ルンバが回転するとレーザーが反射している赤い点も回転しているのがわかります。(少し見にくいですが)
他の部分で問題ないか、Topicsデータの内容の確認を進めてみます。
次回の予定
ルンバ実機での地図作成に再チャレンジしてみます。地図作成がうまくできれば自律走行にも少し近づきます。お楽しみに。
