Fiducial Slam with Lidar and URDF - TF issue

I’m doing something a little different with fiducial_slam, specifically trying to record both fiducials and lidar scanning in the same run. I created a sensor setup that I’m pushing around on a cart - this defines a “robot” that has a pi cam and a lidar sensor. I’ve recorded a bag file with the camera images and lidar, and am trying to run fiducial_slam on it to create the map.

My URDF file defines base_footprint -> base_link -> camera, and also base_link -> laser frame. I am launching fiducial_slam with the following command:

roslaunch fiducial_slam fiducial_slam.launch map_frame:=“map” odom_frame:=“odom” base_frame:=“base_link” publish_6dof_pose:=“true” publish_tf:=“true” future_date_transforms:=“0.5”

This is giving me a separate transform tree of map -> odom, with no connection to the “robot”. It’s also giving me a massive headache. For the life of me, I can’t get the transform tree to acknowledge that the “robot” is on the map, so fiducial_slam can’t place anything but the initial two aruco markers. Can anyone offer some insight? I’m really at a loss.

1 Like

Hey @WayTooManyHobbies,

Thanks for your question. fiducial_slam assums that there is some other source of odometry providing the odom->base_link transform. On most robots this data is provided by wheel odometry.

In your case it sounds like there is nothing providing that transform, so you could a static transform publisher that published a constant 0 transform for odom->base_link. Note that this will mean that you will have no source of position data in between fiducial_slam updates, which may cause issues.

Rohan

Thanks for the information - that’s very helpful, and gives me some ideas to try. I’ll report back on how things work out.

Chuck

OK, looks like what I wanted to do short term will not work. I’ll have to work on an odometry source and try again. Thanks for your help!

I’m now trying to use slam_toolbox in concert with the lidar to provide odometry to use with fiducial_slam. The transforms look better, but I still don’t get the other fiducials on the map. My tf frames are shown here - anyone spot where I’m being dense?

Just updating - I’m getting marginally smarter as the days go by. Finally rammed through my skull that the transform is not the same as the topic, and that I need a topic. I’m now working on another part of my project to get odometry going, and then I’ll take another stab at an integrated mapping solution with lidar-based mapping and fiducial_slam for localization.