Using known position information to improve RTABMAP accuracy

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Using known position information to improve RTABMAP accuracy

Eva88
Hi,

I'm a beginner using Rtabmap, and I have a question about improving its accuracy. In my current setup, I have access to precise positional information of my robot. Is it possible to utilize this information to enhance the accuracy of Rtabmap? If so, could you provide some guidance or resources on how to implement this?

Thank you for your help!
Reply | Threaded
Open this post in threaded view
|

Re: Using known position information to improve RTABMAP accuracy

matlabbe
Administrator
If it is more accurate than rtabmap's visual/icp odometry, you may use it directly as odometry input to rtabmap node (remap odom input topic to your topic or set "odom_frame_id" to use corresponding TF fixed frame). Otherwise, other option is to make rtabmap's visual/icp odometry using that pose as "guess_frame_id" through TF. Are you looking for examples on ros1 or ros2? For reference, there are some examples for ros1 on this page: http://wiki.ros.org/rtabmap_ros/Tutorials/SetupOnYourRobot

Reply | Threaded
Open this post in threaded view
|

Re: Using known position information to improve RTABMAP accuracy

Eva88
Hi,

Thank you for your previous response. I have a follow-up question regarding using odom_frame_id.

I have access to the robot's positional information, and based on the robot's TF and design, I can also obtain the camera's TF. In this case, should I set the camera's TF as the odom_frame_id for Rtabmap? Is this the correct approach to improve accuracy in my setup?

Thank you for your help!
Reply | Threaded
Open this post in threaded view
|

Re: Using known position information to improve RTABMAP accuracy

matlabbe
Administrator

Is it a mobile robot or a robotic arm? Is the robot's positional information attached to a fixed frame? The "odom_frame_id" should be a fixed frame not on the robot. "frame_id" should be set as the base frame of the robot (e.g., base_link).
Reply | Threaded
Open this post in threaded view
|

Re: Using known position information to improve RTABMAP accuracy

Eva88
Thank you for your reply.

My robot is a mobile robot, and its positional information is attached to a fixed frame. I would like to confirm the following points:

I am planning to set the "odom_frame_id" as a fixed frame using the "/world" coordinate system. Is this the correct configuration? Also, for the "frame_id," it should be set as the base frame of the robot (e.g., base_link). As a beginner, I am a bit unsure about how to set this up correctly. Could you please confirm if my understanding is correct?

additionally, since the robot's initial position is not at the origin, I would like some guidance on how to specify the initial position relative to the /world coordinate system and how to proceed with map creation from there.

I would appreciate any detailed explanations you could provide, as this would be very helpful.
Reply | Threaded
Open this post in threaded view
|

Re: Using known position information to improve RTABMAP accuracy

matlabbe
Administrator

If your positional transform is defined by /world -> /base_link TF, then yes, use odom_frame_id=world and frame_id=base_link.

On your setup, if you don't use "base_link", you should use the frame on the robot that is linked to /world frame.

If /world -> /base_link restart at (0,0,0) everytime, but not at origin of the room, if you know that the robot is starting at a specific position, you could make your positional information starting at that position, or add a TF frame before world with the offset:
/real_world -> /world -> /base_link
and use /real_world as odom_frame_id.

Note that you may change the "world" frame name if it is not a fixed frame in the real world, like with ground truth systems (e.g., VICON, optitrack). If it restarts to (0,0,0) anywhere the robot is started, you may probably rename it "odom" instead.

See frame convention here: https://www.ros.org/reps/rep-0105.html