Rejected loop closure 93 -> 173: Too large rotation detected!

asked 2020-07-22 08:07:03 -0500

leodomitrovic gravatar image

updated 2020-07-31 04:57:56 -0500

Hi,

I am doing 3D mapping with Kinect 360 camera using RTABMAP. Mapping starts well and then I start getting this two errors:

  1. "[ WARN] (2020-07-22 14:50:09.654) Rtabmap.cpp:2144::process() Rejected loop closure 93 -> 173: Too large rotation detected! (pitch=0.000000, yaw=0.000000) max is -1.628242"

  2. [ WARN] (2020-07-22 14:57:33.872) Rtabmap.cpp:2144::process() Rejected loop closure 57 -> 99: Not enough inliers after bundle adjustment 0/20 (matches=70) between 57 and 99

They occur in between lots of successful readings. For moving a robot I use:

rostopic pub -1 cmd_vel geometry_msgs/Twist '[0.1, 0, 0]' '[0, 0, 0]'

and for rotation I use:

rostopic pub -1 cmd_vel geometry_msgs/Twist '[0, 0, 0]' '[0, 0, 0.1]'

I am using Pioneer 3-AT with ROS Melodic.

Here is my Gazebo world: https://imgur.com/a/B1bPeDE Here are my map when it is still correct: https://imgur.com/a/4Iqg4Tg, and when error occurs: https://imgur.com/a/vv7x60W

Here is my rtabmap.launch file:

<launch>
<param name="/use_sim_time" value="true"/>
<node pkg="nodelet" type="nodelet" name="rgbd_sync" args="standalone rtabmap_ros/rgbd_sync" output="screen">
      <remap from="rgb/image"        to="/camera/rgb/image_raw"/>
      <remap from="depth/image"      to="/camera/depth/image_raw"/>
      <remap from="rgb/camera_info"  to="/camera/rgb/camera_info"/>
      <remap from="rgbd_image"       to="rgbd_image"/> <!-- output -->
      <!-- Should be true for not synchronized camera topics 
       (e.g., false for kinectv2, zed, realsense, true for xtion, kinect360)-->
      <param name="approx_sync"       value="true"/> 
    <param name="queue_size"  type="int"  value="10"/>
    </node>

<!-- Odometry -->
<node pkg="rtabmap_ros" type="rgbd_odometry" name="rgbd_odometry" output="screen">
    <!--param name="subscribe_rgbd" type="bool"   value="true"/-->
    <remap from="rgb/image"       to="/camera/rgb/image_raw"/>
    <remap from="depth/image"     to="/camera/depth/image_raw"/>
    <remap from="rgb/camera_info" to="/camera/rgb/camera_info"/>
    <param name="frame_id"       type="string" value="base_link"/>
    <remap from="rgbd_image" to="rgbd_image"/>
    <param name="publish_tf"  type="bool"   value="false"/>
    <param name="queue_size"  type="int"  value="10"/>
</node>

<node pkg="robot_localization" type="ekf_localization_node" name="ekf_localization" clear_params="true" output="screen">

  <param name="map_frame" value="map"/>
  <param name="odom_frame" value="odom"/>
  <param name="base_link_frame" value="base_link"/>
  <param name="world_frame" value="map"/>

  <param name="odom0" value="odom"/>
  <param name="pose0" value="rtabmap/localization_pose"/> 

  <!-- The order of the values is x, y, z, roll, pitch, yaw, vx, vy, vz, vroll, vpitch, vyaw, ax, ay, az. -->
  <rosparam param="odom0_config">[true, true, false,
                                  false, false, true,
                                  false, false, false,
                                  false, false, false,
                                  false, false, false]</rosparam>

  <rosparam param="pose0_config">[
                                 true,   true,  false,
                                 false,  false, true,
                                 false,  false, false,
                                 false,  false, false,
                                 false,  false, false] </rosparam>  

  <param name="odom0_differential" value="true"/>
  <param name="pose0_differential" value="false"/>

  <param name="odom0_relative" value="true"/>
  <param name="pose0_relative" value="false"/>

  <param name="odom0_queue_size" value="5"/>
  <param name="pose0_queue_size" value="2"/> ...
(more)
edit retag flag offensive close merge delete