Robotics StackExchange | Archived questions

robot pose slightly off when publishing to /cmd_vel

Hello,

I have been trying to build a very basic template of motion of a robot in a coordinate system. I want to implement basic functions like moveforward, moveback, moveright and moveleft giving in as parameters the distance for the robot to move.

I have two questions :- 1. When I try using basic actionlib communication architecture and publish 'Twist' messages and latch for a particular time (after adjusting speed to move a unit distance) , I am able to move the robot but the final pose of the robot is always slightly off than what is expected. For example - i expect the robot to move to (3,0) from (0,0) but the actual coordinates read (2.9,-1.6e-12). Whats going wrong ?

2.I am a newbie. Currently, I am using stage_ros with custom world files to model my robot, and a very simple actionlib server-client architecture for publishing to topics. Is there any better package i could use ? I would really appreciate any pointers.

Thanks

Asked by SSJ on 2015-03-13 17:53:31 UTC

Comments

Answers

I'm not sure why or how you're using actionlib; can you share a bit of your code?

The trouble here is that, due to the time it takes for the robot to accelerate and decelerate, friction, minor timing errors, and wheel slip, the robot won't move exactly 3 meters if you send it a velocity command of 1m/s for 3 seconds. What you're doing is called open-loop control.

The solution to this is to do closed-loop control; that is, to create a feedback loop between the desired and actual position of the robot, and to send velocity commands which reduce that error. For a first version, you can subscribe to the robot's position on the odometry topic. This will give you the robot's position according to the wheel encoders, which will compensate for acceleration, friction and timing errors, but won't compensate for wheel slip. Compensating for wheel slip is much harder, because you need some sort of map and localization or SLAM.

Asked by ahendrix on 2015-03-15 14:42:18 UTC

Comments