Home | Tutorials | Wiki | Issues
Ask Your Question

Wheeled mobile robot with GPS, accelerometer, magnetometer and odometry

asked 2016-11-08 11:23:50 -0600

guido_sanchez gravatar image

updated 2016-11-11 09:00:29 -0600

I came across Gazebo a week ago and I think it's just great. I would like to use for my project, where I need to estimate the position and control a wheeled mobile robot. For that, I would like to have measurements from a GPS, accelerometer, magnetometer and wheel position in order to estimate the robot position and orientation using the different sensors.

So far I followed the tutorial on how to build a differential drive robot [1] and the noisy IMU [2]. I added GPS and magnetometer measurements to the IMU successfully and then, following [3], attached the sensor to the differential drive robot. All the sensors topics are published correctly. Finally, I added the DifferentialDrive plugin to the robot and I was able to send linear and angular velocities.

How can I measure the wheel position?

How can I get the simulator to send me the sensor measurements without noise in order to have the "real" measurement and the noisy one?

How can I get the real position and orientation of the robot chassis?

Since I am using Python and I only need to get the noisy measurements and the real values, what would you describe it would be the best approach?

I tried using PyGazebo, so far I was able to subscribe to the sensor topics and send controls with the DifferentialDrive plugin. Should I stick with PyGazebo or try to connect via TCP/IP? Is there any benefit of using ROS on top of Gazebo?

Thanks in advance for any help.

[1] http://gazebosim.org/tutorials?tut=bu...

[2] http://gazebosim.org/tutorials?tut=se...

[3] http://gazebosim.org/tutorials?tut=ad...

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2016-11-09 10:17:57 -0600

nkoenig gravatar image

Wheel position & Chassis position

You have a couple options to get the position of objects in simulation.

  1. Subscribe to the /gazebo/default/pose/info topic and filter the messages on the desired links.
  2. Write a ModelPlugin for your robot that publishes wheel/chassis position.

Sensor noise

You can write a sensor plugin that outputs sensor data without noise, then apply noise and output it on a different topic. I like the idea of a simulation setting that makes it possible to output both data sources (noisy and noise-free) without writing a special plugin. Here is an issue to track this feature.


Ros is useful when you want to control a robot. There are numerous packages for localization, planning, motion control, etc. Whether you should use it or not depends on what you need to get done.

Hope this helps.

edit flag offensive delete link more


Sensor noise: I wrote a plugin that captures IMU data and then publish two topics (https://github.com/gmsanchez/gazebo_plugins/tree/master/imu_noise_plugin). The other sensors do not make it easy to do the same. I started writing the plugins but soon I realized that I was duplicating too much code. I think the best approach would be to rewrite the sensor files directly. How can I help and modify the sensor files? I forked Gazebo project but I can't get the CMakeFile to work. Any help?

guido_sanchez gravatar imageguido_sanchez ( 2016-11-11 08:59:30 -0600 )edit

How can i attach this plugin (https://github.com/gmsanchez/gazebo_plugins/tree/master/imu_noise_plugin) with my cat-vehicle in gazebo using autoware .

Asif gravatar imageAsif ( 2018-01-23 05:59:45 -0600 )edit
Login/Signup to Answer

Question Tools

1 follower


Asked: 2016-11-08 11:23:50 -0600

Seen: 855 times

Last updated: Nov 11 '16