# What is the correct tf configuartion for RGBDSLAM?

Hi, I want to use RGBDSLAM with an initial ground_truth, to map the trajectory to my cordinate system. Therefore I publish a tf from map to ground_truth_frame and set the parameter config/ground_truth_frame_name to ground_truth_frame. But I still get the following Warning: "openni_camera" passed to lookupTransform argument source_frame does not exist. - Using Identity for Ground Truth (This message is throttled to 1 per 5 seconds)

How can I set the pose for my initial Node?

edit: I use some kind of fake Camera to publish the Images from files, so there is actually noch openNI running.open

edit: As I can see from the openni_listener.cpp I need a tf from the bas_frame to some kind of depth_frame(I have no clue what this is) and also I need a tf from ground_truth_frame to openni_camera. I dont know the meaning of these tfs...could someone please help me on this?

edit retag close merge delete

Sort by » oldest newest most voted

My suggestion (July 19) with the static transform publisher from /newmap to /map helps when you use the /tf transformations online. But you seem to use the saved trajectory. To have the trajectory affected you would need to do it as follows.

Use a static transform publisher from yourbase to yoursensorframe set to your known static offset (you call it ground truth). You can choose yourbase as you wish but yoursensorframe needs to be set to the same as the frame_id set in the rgbd image (I'd guess of the color image, but maybe depth).

Then set rgbdslam's parameter base_frame_name to yourbase and fixed_frame_name to map (or whatever else).

Then rgbdslam should make the first position of yourbase (i.e. the inverse offset as seen from the camera) to the position of map.

I hope this works. If not, the relevant code is in the trajectory saving method

more

I haven't quite understood what you want to do, but here is what the frames mean:

• ground_truth_frame_name was used to compute error metrics, but hasn't been used in years (so might not work) as the error metric is now computed with external test scripts
• fixed_frame_name is how the origin of the map is called
• base_frame_name is only required if you have an existing tf tree that includes the sensor (e.g. on a robot) and want to specify the transformation from the map (i.e., fixed_frame_name) to the root of that tree (on a robot that's usually "base_link")

If the base_frame_name is not the frame of your sensor data as specified in your message's header->frame_id (e.g. "openni_rgb_optical_frame"), rgbdslam tries to get the transformation between the sensor frame and the base frame.

more

I still dont get it right. I explain more general what I want: I want to get a trajectory estimate for my Camera Poses. And at this Point I can get it, but it is relativ to the first pose. Which is set to Identity. I have the real first Pose and want the Trajectory to be relative to that.

( 2016-07-18 09:47:55 -0500 )edit

I would suggest using a static transform publisher from /yournewframe to /map with the known first pose as transformation

( 2016-07-19 06:08:22 -0500 )edit

Since I stoped using base_frame I dont get any warnings, but the tf you suggested doesnt do the job either. Still get this:

( 2016-07-19 09:46:54 -0500 )edit

Ground Truth Transform for First Node: Translation 0 0 0 Ground Truth Transform for First Node: Rotation 0 0 0 1

( 2016-07-19 09:47:48 -0500 )edit

http://answers.ros.org/question/65961... Here you suggest to use ground_truth_frame_name, therefore Im a little confused. Every Trajectory Estimate I save starts on identy. I really need to set the first Pose. Please help me.

( 2016-07-21 07:43:11 -0500 )edit

I came to the Point where the Ground Truth message for the first Node shows the correct Values. Therefore I had to dig througth the code an change it a little. But when I save the Trajectory estimate to file, the first Pose is different from the given!?!?!

( 2016-07-21 09:58:00 -0500 )edit