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

gmapping with vo and arbotix

asked 2013-07-13 09:05:20 -0500

boog gravatar image

updated 2013-07-13 09:05:45 -0500

Hi I am using gmapping with vo data and the vo data shows up fine but it is not connected to the robotmodel (fake turtlebot) so the model doesn't move on rviz. I would like the model to move as I move the kinect camera using the vo data. How can I achieve this transform? I have read the tutorials but I am still confused. I would upload my frames view but I dont have sufficient karma, thanks.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2013-07-15 05:37:53 -0500

hersh gravatar image

updated 2013-07-15 05:57:21 -0500

The RobotModel display in rviz moves based on input from /tf messages. You need to check your tf tree and the "fixed frame" in rviz. The default fixed frame in rviz is "map", which should work fine if it matches the map_frame you gave to gmapping (default is also "map", so should be OK). If you've set the "fixed frame" in rviz to "base_link" the robot won't move. If you set it to "odom" (or whatever you are calling the base frame for integrating your visual odometry data), you should see the robot move with the pose estimated only by vo.

There are several tools to investigate tf problems:

tf_monitor runs in a shell and displays all the tf transforms coming in:

rosrun tf tf_monitor

rqt_tf_tree is an rqt plugin which shows a graphical version of the tf tree:

rosrun rqt_tf_tree rqt_tf_tree

Then there's tf_echo, which just continuously spits out a single transform between two requested frames:

rosrun tf tf_echo map base_link

Whichever method you use, you need to get to a point where the tf tree includes both "map" and "base_link" (or whatever you are calling your map frame and your robot base frame) in a single tree.

gmapping by default publishes a transform between frame "odom" and frame "map", and listens to the transform from "odom" to "base_link". If you are using a different tf frame name for any of those, you'll need to tell gmapping by setting rosparams for it.

edit flag offensive delete link more

Comments

Thank you for the information, I ended up solving, (I still need to test) the problem by running a robot_pose_ekf to transform the vo information as the odom -> base_link tf was dodgy or maybe I just got the wrong end of the stick. Also view_frames is useful if anyone else needs it.

boog gravatar image boog  ( 2013-07-15 11:17:39 -0500 )edit

Question Tools

Stats

Asked: 2013-07-13 09:05:20 -0500

Seen: 242 times

Last updated: Jul 15 '13