Ask Your Question

Ground truth from the jackal robot

asked 2017-04-06 17:15:21 -0500

rsmitha gravatar image


I have a simulation environment using the jackal in gazebo without using the laser scanner. I have a small program that publishes the velocity commands and subscribes to the odometry topic to get odometer readings. I have to get the exact position of the robot in order to calculate the shift in the odometry readings. Is there a topic I can subscribe to, to get the position at any time of the robot? Would it be the base_link frame which should be considered for this?

In the absence of the laser scanner, how does the jackal calculate its ground truth?

Thanks and regards,

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2017-04-07 10:11:53 -0500

You can use the p3d plugin, it publishes the ground truth pose of the robot via a odometry message. Example use in this Q/A.

edit flag offensive delete link more

answered 2017-04-07 08:44:48 -0500

agbj gravatar image

You can create a model plugin for jackal. Through this plugin you can easily extract the real pose of the model pose and publish this information to a ROS topic.

See this link: gazebo model plugin

edit flag offensive delete link more


Shouldn't this be possible by using the tf library in ROS without a plugin as described in their tf tutorials? I am a little confused about the transformation between frames. For the real pose of the robot which frames should we be transforming between?

rsmitha gravatar image rsmitha  ( 2017-04-07 15:04:44 -0500 )edit

Normally in a scenario with localization you have at least two frames that are the map and base_link frame and if you are using odometry i have the odom frame as well. The map frame is fixed in the world and the base_link is fixed to your robot. Read the next comment please

agbj gravatar image agbj  ( 2017-04-10 04:08:36 -0500 )edit

What you want is the real pose of the robot that gazebo can give you. That being said, the position that the robot think it is is given by the transform between the map and the base_link frame.

agbj gravatar image agbj  ( 2017-04-10 04:12:39 -0500 )edit

Hi jbga, Thanks for your answer. The jackal does not have a map frame. It has a odom frame and a chassis_link frame. I think, I need to replace the map frame with the odom frame. How will this work on the real jackal?

rsmitha gravatar image rsmitha  ( 2017-04-10 04:40:16 -0500 )edit

Let me explain the process: Normally the map frame appear when you have a localization node like amcl that publishes a transform from the map frame to the odom frame. The odom frame is typically created by the node that publish the odometry. Next comment please

agbj gravatar image agbj  ( 2017-04-10 05:26:53 -0500 )edit

This odometry node publish the transform between the odom frame and the chassis_link as well. So, from what you said i think that you need a localization node as well as a map. Think about it before pass the code to the real robot. Any doubt just ask

agbj gravatar image agbj  ( 2017-04-10 05:27:24 -0500 )edit

Hi Jbga, I have code that runs the robot in simulation with a certain velocity. I subscribe to the odometry frame to get the odometry pose values. I want to know the position of the robot to compare with the odometry values to plot and show the shift in pose values.

rsmitha gravatar image rsmitha  ( 2017-04-10 05:47:01 -0500 )edit

The tf_echo command shows that the odom frame is the parent of the base_link frame. It says there is no map frame. So how do I get a transform? I probably need to run the jackal with gmapping.

rsmitha gravatar image rsmitha  ( 2017-04-10 05:47:48 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2017-04-06 17:15:21 -0500

Seen: 737 times

Last updated: Apr 07 '17