/Quadrotor-with-teleop_twist_keyboard

This project simulates a quadrotor (drone) model utilizing teleop_twist_keyboard for control within the ROS (Robot Operating System) framework, integrated with Gazebo for realistic simulation environments and Rviz for visualization. It provides an interactive platform to experiment with drone dynamics, control strategies, and sensor integration,.

Primary LanguagePython

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