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

How to make keyboard_teleop in TurtleBot more "fluid"

asked 2011-09-12 01:35:04 -0600

Marco gravatar image

updated 2011-09-12 19:10:12 -0600

I am noticing that when controlling my 'turtlebot' from my workstation using keyboard_teleop, the movement is not fluid. When for example pressing left-arrow constantly on the workstation the robot rotates, stops shortly, starts rotating again etc.. Of course this influences my results slightly, so I would like to fix it.

My turtlebot-pc is under quite high CPU load, so that might be the problem. Can I increase fluent movements by altering teleop software somewhere?

I noticed that when I use the roomba remote to control the turtlebot it already moves more fluid, even when the IR-sensor goes out of range: the Icreate comes to a halt without shocks (something like no commands being sent to the motors?), and not with a shock like when using the keyboard_teleop.

edit retag flag offensive close merge delete

3 Answers

Sort by ยป oldest newest most voted

answered 2011-09-12 02:30:18 -0600

dornhege gravatar image

High CPU load, network delays, etc. can result in jerky movements for the reasons @Guido pointed out.

You can test what is responsible by using rostopic pub with a high enough rate. This eliminates any keypress delays. If that works nicely, it is the keypresses. If you see problems running that on the robot, it probably is the CPU load. If that works and you run it from the workstation and see problems there, it is the network.

The only thing you should be aware of is that it will continue sending motion commands until you kill it.

edit flag offensive delete link more


Ok, I assume it was network problems then, though I think its weird the network delay does pose problems for node communication and doesn't when using ssh...?
Marco gravatar image Marco  ( 2011-09-12 02:54:13 -0600 )edit
This could also be a timestamp problem and when using ssh it should run on the other machine already.
dornhege gravatar image dornhege  ( 2011-09-12 03:22:47 -0600 )edit

answered 2011-09-12 01:56:39 -0600

Guido gravatar image

Hi Marco,

According to the turtlebot teleop wiki page:

Note: If a new command has not been recieved recently enough the robot will stop. Depending on the keyboard repeated key press speed, holding a button down may be jerky because of this. If this is the case you can either increase the key repeat speed or the timeout.

Hope this helps,


edit flag offensive delete link more


Increasing key repeat speed did not change performance. I assume you mean the parameters in turtlebot_key.cpp under watchdog() ? I found an alternative fix though: instead of running the teleop node on the workstation, I ran it via ssh on the turtlebot. This removed any jerky action!
Marco gravatar image Marco  ( 2011-09-12 02:47:07 -0600 )edit

answered 2011-09-12 08:49:20 -0600

mkopack gravatar image

I think you mean "more fluid" (ie, less jerky).

We've had similar issues with our Turtlebot and have basically given up. The joystick works MUCH better, and allows for more fine-grained control. I'd suggest giving that a try.

edit flag offensive delete link more


We will be fixing this in the next TurtleBot release (we hope to release this week)
mmwise gravatar image mmwise  ( 2011-09-12 09:13:34 -0600 )edit
Indeed i mean less jerky. Edited. Will be trying out functionality with the new software release!
Marco gravatar image Marco  ( 2011-09-12 19:11:52 -0600 )edit

Question Tools


Asked: 2011-09-12 01:35:04 -0600

Seen: 1,014 times

Last updated: Sep 12 '11