RTABMap ICP odometry CPU usage is too high
I am using RTABMap ICP odometry with the default parameters. I am using Intel Core i5 8th generation and sometimes the node consumes almost 100%! Why is that? And is there something I can do?
EDIT:
Not default parameters but these (I think scan_normal_k
is not used anyway as PointToPlane
is false):
<param name="scan_normal_k" type="int" value="10"/>
<param name="Icp/PointToPlane" type="string" value="false"/>
<param name="Icp/VoxelSize" type="string" value="0"/>
<param name="Icp/PM" type="string" value="true"/>
<param name="Icp/PMOutlierRatio" type="string" value="0.65"/>
<param name="Odom/GuessMotion" type="string" value="true"/>
<param name="Odom/ResetCountdown" type="string" value="1"/>
Asked by EdwardNur on 2019-12-11 15:25:55 UTC
Answers
What kind of lidar are you using? With Icp/VoxelSize
to 0, all points will be used for scan matching. I would set it between 0.05 (indoor mapping with 2d lidar), 0.2 (indoor mapping with 3d lidar) and 0.5 (autonomous car with 3D lidar) depending on the lidar and the application. Note also that icp_odometry
computes as fast as possible, if the lidar rate is 60 Hz, odometry will try to go as fast as 60 Hz, taking 100% of one CPU core if it cannot process all them at same frame rate.
Asked by matlabbe on 2019-12-12 12:02:45 UTC
Comments
@matlabbe is it possible to provide IMU as when turning the odometry gets lost
Asked by EdwardNur on 2019-12-16 08:53:41 UTC
It is possible to provide an orientation guess with IMU before doing ICP (see guess_frame_id
on rtabmap_ros). However, if there are not enough matches between scan, the resulting transform could still be rejected.
Asked by matlabbe on 2020-01-07 11:50:31 UTC
Comments