Teleoperating Stretch
Teleoperating Stretch
Xbox Controller Teleoperating
If you have not already had a look at the Xbox Controller Teleoperation section in the Quick Start guide, now might be a good time to try it.
Keyboard Teleoperating: Full Body
For full-body teleoperation with the keyboard, you first need to run the stretch_driver.launch
in a terminal.
roslaunch stretch_core stretch_driver.launch
Then in a new terminal, type the following command
rosrun stretch_core keyboard_teleop
Below are the keyboard commands that allow a user to control all of Stretch's joints.
---------- KEYBOARD TELEOP MENU -----------
i HEAD UP
j HEAD LEFT l HEAD RIGHT
, HEAD DOWN
7 BASE ROTATE LEFT 9 BASE ROTATE RIGHT
home page-up
8 LIFT UP
up-arrow
4 BASE FORWARD 6 BASE BACK
left-arrow right-arrow
2 LIFT DOWN
down-arrow
w ARM OUT
a WRIST FORWARD d WRIST BACK
x ARM IN
5 GRIPPER CLOSE
0 GRIPPER OPEN
step size: b BIG, m MEDIUM, s SMALL
q QUIT
-------------------------------------------
To stop the node from sending twist messages, press Ctrl
+ c
in the terminal.
Keyboard Teleoperating: Mobile Base
Begin by running the following command in your terminal:
roslaunch stretch_core stretch_driver.launch
To teleoperate a Stretch's mobile base with the keyboard, you first need to switch the mode to navigation
for the robot to receive Twist
messages. This is done using a rosservice call in a new terminal. In the same terminal run the teleop_twist_keyboard node with the argument remapping the cmd_vel
topic name to stretch/cmd_vel
.
rosservice call /switch_to_navigation_mode
rosrun teleop_twist_keyboard teleop_twist_keyboard.py cmd_vel:=stretch/cmd_vel
Below are the keyboard commands that allow a user to move Stretch's base.
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
currently: speed 0.5 turn 1.0
To stop the node from sending twist messages, type Ctrl
+ c
.
Create a node for Mobile Base Teleoperating
To move Stretch's mobile base using a python script, please look at Teleoperate Stretch with a node for reference.
Teleoperating in Gazebo
Keyboard Teleoperating: Mobile Base
For keyboard teleoperation of the Stretch's mobile base, first, startup Stretch in simulation. Then run the following command in a new terminal.
roslaunch stretch_gazebo gazebo.launch
In a new terminal, type the following
roslaunch stretch_core teleop_twist.launch twist_topic:=/stretch_diff_drive_controller/cmd_vel linear:=1.0 angular:=2.0 teleop_type:=keyboard
The same keyboard commands will be presented to a user to move the robot.
Xbox Controller Teleoperating
An alternative for robot base teleoperation is to use an Xbox controller. Stop the keyboard teleoperation node by typing Ctrl
+ c
in the terminal where the command was executed. Then connect the Xbox controller device to your local machine and run the following command.
roslaunch stretch_core teleop_twist.launch twist_topic:=/stretch_diff_drive_controller/cmd_vel linear:=1.0 angular:=2.0 teleop_type:=joystick
Note that the teleop_twist_joy package has a deadman switch by default which disables the drive commands to be published unless pressed. For a Logitech F310 joystick, this button is A.