0
$\begingroup$

I am trying to use the robot_localization library to fuse the pose information from a camera fixed to a wall and an IMU mounted on the robot itself. The robot has a base_link and attached to it are some aruco tags. These tags are detected from the camera and their pose is known. So on one side i have the pose of 4 aruco tags that are rigidly attached to the base_link and their transform is known. Additionally I have the IMU sensor that is also rigidly attached to the base_link and the transform is known.

I have been getting very confused by how the urdf and frame_ids must be set. Should I create a URDF with a odom_link to which the camera frame and the base_link are children. And should I transform as well all the poses of the aruco tags detected by the fixed transform (base_link->aruco_tag_n)⁻1 to get the estimated base_link according to the aruco tags?

Finally, should the world_frame=odom_frame="odom" and the base_link= "base_link".

Thanks in advance!

$\endgroup$

1 Answer 1

0
$\begingroup$

robot_localization is not well suited to applications where pose data is generated for some sensor (or in this case, fiducial) that is offset from the robot's centroid. It can work fine with velocity data that is generated from an offset sensor, but not pose data.

Any time pose data is received, the filter is assuming that a transform exists from the world frame of the pose data to the robot's world frame. In your case, that transform would have to be dynamic, because as the robot moves, then e.g., the transform that would get the pose data from one tag into the robot's body frame would change. What you'd need to do is get the tag offset from the robot's centroid, transform it to the world frame, then apply that to the measurement. And robot_localization doesn't support that.

$\endgroup$
2
  • $\begingroup$ Thank you for the answer Tom. The way I went was to create a listener that republishes the detected ArUco poses after having applied the fixed transform from the ArUco tags to the base_link and subscribe to those republished topics in the yaml file of robot_localization . A new question arose from looking at the diagnostic output, which gave a warning about using multiple absolute poses in the EKF. What would be the correct approach when trying to fuse multiple absolute poses? Once again, thanks in advance! $\endgroup$ Commented Oct 29, 2024 at 13:27
  • $\begingroup$ That warning isn't completely legitimate. If the two world-frame poses agree with one another, it should be fine. It's just that a lot of people fuse different wrold-frame pose data with frames that don't agree, and then the filter output starts jumping back and forth as the readings arrive. $\endgroup$ Commented Nov 12, 2024 at 14:04

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.