Robotics StackExchange | Archived questions

Predictability of cmd_vel

If I send 10 seconds worth of cmdvel x=0.1 to my TurtleBot3, how close to 1m travel should I expect? (I know that on paper it should be one meter (10 x 0.1) but I am wondering what a reasonable tolerance is. Just cmdvel, nothing fancy.

Asked by pitosalas on 2018-10-18 09:15:09 UTC

Comments

Are you talking about a simulation or a real robot ?

Asked by Delb on 2018-10-18 09:32:57 UTC

a real robot, a Robotis Turtlebot3 running kinetic. I don't think the model should matter, but just in case.

Asked by pitosalas on 2018-10-18 09:34:05 UTC

I think the underlying issue here is that using velocity control to achieve position control can work, but will need a closed loop to be anywhere near accurate. That's not TB-specific, just general control theory.

Things like "10 seconds worth of cmd_vel x=0.1" are strange things to say.

Asked by gvdhoorn on 2018-10-18 10:00:23 UTC

It is a bit strange I agree. The background is that we modified a robot (put different wheels on it) and we are trying to validate that the parameters we changed produce the correct result. Hence we would like to check pieces separately at lower level.

Asked by pitosalas on 2018-10-18 10:18:41 UTC

The background is that we modified a robot (put different wheels on it) and we are trying to validate that the parameters we changed produce the correct result.

So technically this is an xy-problem then.

Asked by gvdhoorn on 2018-10-18 10:20:42 UTC

Fair enough. I thought I was isolating the specific question that we were debating on this end which was was it correct to assume that 10 seconds at 0.1 should produce about 1 meter and not 3 meters which is what we were seeing. But I should have given the context.

Asked by pitosalas on 2018-10-18 10:22:17 UTC

Have you run the robot along a tape measure (just manually tele-opping) to make it drive 1 or 2 or 3m in a single direction and then checked the published Odometry? That should tell you whether you've configured things correctly.

Asked by gvdhoorn on 2018-10-18 10:23:07 UTC

Answers

I think your best option is to do it multiples time and get the average of the results. Estimating that with calculation seems pretty difficult given the number of parameters you would have to use :

  • The floor friction that can create shifts
  • If your robot is correctly built (not heavier on a side or unbalanced) that could induce a movement on the right/left
  • If you have a velocity smoother launched in one of your launch files (which is probably the case with a turtlebot3) that could lower the acceleration/deceleration hence the final position.
  • The battery state that could lower the performances (but that shouldn't be a big deal though)
  • The precision of your 10 seconds.

And so on...

I'm not familiar with the turtlebot3 but if I should guess I would say you should expect a tolerance of about 5~10cm.

Asked by Delb on 2018-10-18 09:52:57 UTC

Comments

Thanks Delb. The key question is "correctly built" ... see my comment to @gvdhoorn above as to what the story is of why we are doing this.

Asked by pitosalas on 2018-10-18 10:19:32 UTC