おおた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データの内容の確認を進めてみます。
次回の予定
ルンバ実機での地図作成に再チャレンジしてみます。地図作成がうまくできれば自律走行にも少し近づきます。お楽しみに。