ros-teleop / teleop_twist_keyboard

Generic Keyboard Teleop for ROS
256 stars 404 forks source link

teleop_twist_keyboard

Generic Keyboard Teleop for ROS

Launch

Run.

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

With custom values.

rosrun teleop_twist_keyboard teleop_twist_keyboard.py _speed:=0.9 _turn:=0.8

Publishing to a different topic (in this case my_cmd_vel).

rosrun teleop_twist_keyboard teleop_twist_keyboard.py cmd_vel:=my_cmd_vel

Usage

Reading from the keyboard  and Publishing to Twist!
---------------------------
Moving around:
   u    i    o
   j    k    l
   m    ,    .

For Holonomic mode (strafing), hold down the shift key:
---------------------------
   U    I    O
   J    K    L
   M    <    >

t : up (+z)
b : down (-z)

anything else : stop

q/z : increase/decrease max speeds by 10%
w/x : increase/decrease only linear speed by 10%
e/c : increase/decrease only angular speed by 10%

CTRL-C to quit

Repeat Rate

If your mobile base requires constant updates on the cmd_vel topic, teleop_twist_keyboard can be configured to repeat the last command at a fixed interval, using the repeat_rate private parameter.

For example, to repeat the last command at 10Hz:

rosrun teleop_twist_keyboard teleop_twist_keyboard.py _repeat_rate:=10.0

It is highly recommened that the repeat rate be used in conjunction with the key timeout, to prevent runaway robots.

Key Timeout

Teleop_twist_keyboard can be configured to stop your robot if it does not receive any key presses in a configured time period, using the key_timeout private parameter.

For example, to stop your robot if a keypress has not been received in 0.6 seconds:

rosrun teleop_twist_keyboard teleop_twist_keyboard.py _key_timeout:=0.6

It is recommended that you set key_timeout higher than the initial key repeat delay on your system (This delay is 0.5 seconds by default on Ubuntu, but can be adjusted).

Twist with header

Publishing a TwistStamped message instead of Twist can be enabled with the stamped private parameter. Additionally the frame_id of the TwistStamped message can be set with the frame_id private parameter.

rosrun teleop_twist_keyboard teleop_twist_keyboard.py _stamped:=True _frame_id:=base_link