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

motors different speeds

asked 2015-04-02 05:49:31 -0500

maha gravatar image

updated 2015-04-02 05:52:56 -0500

hello, I'm implementing SLAM using ROS. and i'm using my SuperDroid platform ( a square robot with 4 wheels). and i'm controlling it using Roboteq SDC21xx. this controller, controls each two motors together. So, the two left motors are treated as one. The same for the right ones. and i'm doing this because my motor controller have only two channels and i'm forced to combine the motors.

Anyhow, Now, when I want to implement Odometer, i'll have to bring the left and right encoder. but the problem is that each motor brings up different traveled distance (or number of revolutions) because each motor has a different speed.

to overcome the problem of the different speeds of motors, people suggested that i give different power to each motor. (in my case, i give each two motors the same power).

this solution still doesn't provide exact solutions (which in odometer it is very important to get PRECISE results).

any suggestions? ideas? help? how about getting another controller?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2015-04-02 16:44:15 -0500

l0g1x gravatar image

Two things to note:

1- Your robot is a skid-steer system (as you described). Any turning or zero radius turn will show wheel slippage (already your pure wheel odometry wont be 100% perfect). Its hard to get wheel odometry to naturally not have error, but a differential diff system would get you the closer to that point.

2- It also depends on what type of encoders your have; how much resolution does it have? Do they have hardware noise filters?

Bottom line is, having one feedback source (like wheel encoder data) for the location of your robot is not ideal; I would recommend that you use a kalman filter like for example the ROS package robot_localization and let it fuse your wheel odometry data, imu data, gps data, etc..

One thing more thing to keep in mind, I posted a question similar to this topic a while back (you can view it here) about assigning covariance values to your wheel odometry. In the post you will see in one of the answers on how you model how much error you are expecting with every increment of data. Your raw wheel odometry will need to be sending the covariances values in your setup for robot_localization.

If you set that up, you'll have a filtered odometry estimate ALOT closer then you would have with just pure wheel odometry, which you can then use as a input into SLAM (but from my own experience, i dropped slam after seeing how well of a odometry estimate robot_localization gave me)

Hope this helps a bit

edit flag offensive delete link more

Question Tools

1 follower


Asked: 2015-04-02 05:49:31 -0500

Seen: 679 times

Last updated: Apr 02 '15