ubuntu mate 18.04 ros melodic で orb_slam_2_ros を試してみました。#2
です。
前回は、モノカメラで試してみて、あまり認識が良くないのかったので、
今回は、Gazebo/Turtlebot3 Burger にマルチカメラをつけて試してみました。
Burger にマルチカメラをつける作業は、改めて掲載します。
Gazebo turtlebot3 burger stereo camera plugin
Burger にマルチカメラをつける作業が終わったことを前提に書きます。
1. orb_slam_2_ros/ros/launch/orb_slam2_slam2_r200_stereo.launch を修正します。
2. 実行
1) $ roscore
2) $ roslaunch turtlebot3_gazebo turtlebot3_house.launch
3) $ roslaunch orb_slam2_ros orb_slam2_r200_stereo.launch
4) $ rviz
5) $ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
3. テストした感想
1) モノカメラよりすぐにマーカーが現れる。
2) しかし、マーカーが出るのは、やはり、赤レンガの壁ばかりで、
茶色の壁には、反応しない。
3) バーガーは、 IMU がついていないみたいだ。
そのせいで、PointCloud2 が正しく描けていないようだ。
残念!!
注) これは、間違いで、オリジナルのバーガーには、 IMU は入っていましたが。
今回、マルチカメラ用に公開されていて、使用したサンプルに入っていなかった事が原因のようです。
IMU を有効にして、再度、試してみないといかんぞね。
4. IMU を有効にして試した結果。
PointCloud2 の表示には、起動時点の、前後の赤レンガの壁の点描が出るようになりました。
気が付いた点。
1) 左右の茶色い板壁には、ほとんど反応しません。
これが、一番の問題点か?
誰か、改善策を教えてくれないだろうか。
2) 前後の赤レンガのZ軸の位置がずれている。
特に、後ろ側の壁が、Z 軸上で、かなり上に位置しています。これは、もしかして、 IMU の精度に問題があるのか?
IMU のプラグインは、2種類あるそうで、現在は、 libgazebo_ros_imu.so をつかっているみたいです。
libgazebo_ros_imu_sensor.so の方を使ってみては、どうか?
ROS講座45 車輪ロボットを作る6(IMUのシミュレーション)
3) 壁が少し湾曲しているのかも。
これは、カメラの補正(キャリブレーション)の問題か?
5. IMUプラグインを替えて、試してみました。
Burger の IMU プラグインを替える作業は、改めて掲載します。
今回は、その実行結果の報告です。
1) Rviz の PointCloud2 の描画での判断ですが、起動時の前後の赤い壁の、Z軸のズレは、
ほとんど改善されましでした。
どうやら、ORB_SLAM2 の XY平面が傾いている気がします。
前が沈んで、後ろが浮かぶので、 y軸で回転している気がします (x軸が傾斜している)。
これを補正できれば良いのだが!
と言うのも、バーガーを teleop_key.launch で部屋中を動かし回っても、前後の赤壁の点描
が一致しているので、IMU 自体はそれなりの性能が出ていると思います。
もしかして、IMU 筐体のy軸の回転の調整が必要なのかも?
どうも、バーガーのシャーシ自体が、前に傾いているのでは、と思う。
IMU の取り付けは、鉛直にしろ、と言うことか?
<pose>0 0 0 0 -0.02 0</pos>
y軸回転: -0.02 から微調整して試します。
ステレオカメラも下向いているようなので、こちらも調節が必要か?
どうも、これではないようです。
収穫もありました。
PointCloud2 の描画 を上部から俯瞰すると、かなり明瞭に前後の赤い壁が、
並行して立っている様に見えるようになりました。
2) マイナス要素としては、バーガーが以前より直進性が悪くなった気がします。
3) /tf_static で、turtlebot3_house.launch のワールドが傾いていないかチェックできないか?
何故か、 /tf_static が出ていないので、出るようにしてみます。
turtleboot3_house.launch へ下記を追記します。
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
これで、/tf_static がPublish されるので、このあと、ターミナルから、下記コマンドを叩けば、何か判るか?。
$ rostopic echo /tf_static
robot_state_publisher を有効にしたら、Rviz の Fixed Frame: で、 map 以外も選択できるようになった。
(Rviz との連携には、robot_state_publisher が必要とのことです。)
ROS講座40 車輪ロボットを作る4(gazeboの位置をrvizに取り出す)
base_footprint, base_link 等を表示してみると、バーガーの車体に対して水平線が、
正しく表示されるのが確認できます。
PointCloud2 の表示は、map の時なので、orb_slam2 の map 作成のロジックに問題がありそうです。
こうなると、この問題解決は、おんちゃんには無理ぞね!
実際の、 Turtlebot3 で、ステレオカメラで試すと、どうなんだろうか?
orb_slam2 の map 作成に問題があるのであれば、実機でも無理だと言う事か。