Edit on GitHub



  • This instruction was tested on Ubuntu 16.04 with ROS Kinetic Kame and Windows 10 with ROS Melodic Morenia
  • This examples are supposed to be running on the remote PC. Follow the instruction on your Remote PC.

WARNING: Make sure to run the Bringup instruction before performing this examples, and be careful when testing the robot on the table as the robot might fall.

The TurtleBot3 can be teleoperated by various devices. It is tested with several wireless devices such as PS3, XBOX 360, ROBOTIS RC100 and etc. This examples shown here(except the LEAP Motion) can be launched by ROS on Ubuntu mate 16.04 with Raspberry Pi 3 and OpenCR which controls DYNAMIXEL.

The contents in e-Manual can be updated without a previous notice. Therefore, some video may differ from the contents in e-Manual.


TIP: Before executing this command, you have to specify the model name of TurtleBot3. The ${TB3_MODEL} is the name of the model you are using in burger, waffle, waffle_pi. If you want to permanently set the export settings, please refer to [Export TURTLEBOT3_MODEL][export_turtlebot3_model]{: .popup} page.

[Remote PC] Launch turtlebot3_teleop_key node for simple teleoperation test.

on Ubuntu

$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

on Windows

> roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

If the node is successfully launched, the following instruction will be appeared to the terminal window.

  Control Your Turtlebot3!
  Moving around:
     a    s    d

  w/x : increase/decrease linear velocity
  a/d : increase/decrease angular velocity
  space key, s : force stop

  CTRL-C to quit


The settings for ROBOTIS RC-100B controller is included in the OpenCR firmware for TurtleBot3 Burger, Waffle and Waffle Pi. This controller can be used with the Bluetooth module BT410. The TurtleBot3 Waffle Pi includes this controller and Bluetooth modules. When using RC-100, it is not necessary to execute a specific node because turtlebot_core node creates a /cmd_vel topic in the firmware directly connected to OpeCR.

PS3 Joystick

[Remote PC] Connect PS3 Joystick to the remote PC via Bluetooth or with USB cable.

[Remote PC] Install packages for teleoperation using PS3 joystick.

$ sudo apt-get install ros-kinetic-joy ros-kinetic-joystick-drivers ros-kinetic-teleop-twist-joy

[Remote PC] Launch teleoperation packages for PS3 joystick.

$ roslaunch teleop_twist_joy teleop.launch

XBOX 360 Joystick

[Remote PC] Connect XBOX 360 Joystick to the remote PC with Wireless Adapter or USB cable.

[Remote PC] Install packages for teleoperation using XBOX 360 joystick.

$ sudo apt-get install xboxdrv ros-kinetic-joy ros-kinetic-joystick-drivers ros-kinetic-teleop-twist-joy

[Remote PC] Launch teleoperation packages for XBOX 360 joystick.

$ sudo xboxdrv --silent
$ roslaunch teleop_twist_joy teleop.launch

Wii Remote

[Remote PC] Connect Wii remote to the remote PC via Bluetooth.

[Remote PC] Install packages for teleoperation using Wii remote.

$ sudo apt-get install ros-kinetic-wiimote libbluetooth-dev libcwiid-dev
$ cd ~/catkin_ws/src
$ git clone https://github.com/ros-drivers/joystick_drivers.git  
$ cd ~/catkin_ws && catkin_make

[Remote PC] Run teleoperation packages for Wii remote.

$ rosrun wiimote wiimote_node
$ rosrun wiimote teleop_wiimote



Android App

Download ROS CONTROL and run the application.

After connecting roscore to ROS_CONTROL app, enter Topic tab in Preferences to confiture topic name.

You are supposed to change topic name as /cmd_vel in Joystick Topic, /scan in LaserScan Topic, /image_raw/compressed in Image Topic and /odom in Odometry Topic.

Then, you can check state of node and topic connection by rqt_graph commands

LEAP Motion

[Remote PC] Connect LEAP motion to the remote PC via Bluetooth.

[Remote PC] Install packages for teleoperation using LEAP motion.

$ leapd
$ LeapCommandPanel
$ git clone git@github.com:warp1337/rosleapmotion.git

[Remote PC] Run teleoperation package for LEAP motion.

$ rosrun leap_motion sender.py


We are developing its contents !

[Windows] Joystick Instructions

The Windows implementation of the Joystick control uses the Open Source Simple DirectMedia Layer, which supports many tethered and wireless joysticks. The Joystick driver is currently (As of January 2020) deployed as a source package, which you need to clone into your catkin workspace.

> git clone -b init_windows https://github.com/ms-iot/joystick_drivers