ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

No, the node doesn't care what the data source is, as long as it's in one of the accepted ROS messages and conforms to REP-103 and REP-105.

The topic name can be whatever you want it to be. Just set the <param name = "pose0" value = "/my_pose"/> parameter to whatever the topic name is.

Looking at your pose data, the first thing that jumps out at me is that its pose is given in the /head/camera frame, which is the base_link_frame for your robot. Pose data should not be reported in the base_link_frame (or a child frame of that frame). It should be in the world_frame or a frame that is a child of that frame (other than the base_link_frame). See my ROSCon presentation at around 4:20 or so. I'd change your base_link_frame to base_link, and then create a static transform from map to /head/camera. Also, do you have some other node publishing the odom->base_link transform? If you don't, this setup won't work.

No, the node doesn't care what the data source is, as long as it's in one of the accepted ROS messages and conforms to REP-103 and REP-105.

The topic name can be whatever you want it to be. Just set the <param name = "pose0" value = "/my_pose"/> parameter to whatever the topic name is.

Looking at your pose data, the first thing that jumps out at me is that its pose is given in the /head/camera frame, which is the base_link_frame for your robot. Pose data should not be reported in the base_link_frame (or a child frame of that frame). It should be in the world_frame or a frame that is a child of that frame (other than the base_link_frame). See my ROSCon presentation at around 4:20 or so. I'd change your base_link_frame to base_link, and then create a static transform from map to /head/camera. Also, do you have some other node publishing the odom->base_link transform? If you don't, this setup won't work.

EDIT 1

I publish a static transform from imu_f(imu frame) to vo(camera frame)

First, yes, what you surmised about the transforms must be causing at least some of your problems. robot_localization has two outputs: an odometry message with your current vehicle state, and a transform from your world_frame to your base_link_frame. In your case, your world_frame is vo and your base_link_frame is imu_f, so r_l is going to publish a vo->imu_f transform. Therefore, you have some kind of strange circular relationship in your transform tree, and I have no clue how tf will handle that.

Second, are you fusing the pose of the marker with your robot's IMU, or is some node giving you your robot's pose based on the known marker pose, and you're fusing that value with the IMU?