TurtleBot is a ROS standard platform robot. There are 3 versions of the TurtleBot model. The last version, _TurtleBot3_, was developed with features to supplement the lacking functions of its predecessors, and the demands of users.
The TurtleBot3 version adopts ROBOTIS smart actuator DYNAMIXEL for driving. TurtleBot3 is a small, affordable, programmable, ROS-based mobile robot. The TurtleBot3 can be customized into various ways depending on how you reconstruct the mechanical parts and use optional parts such as the computer and sensor. In addition, TurtleBot3 is evolved with cost-effective and small-sized SBC that is suitable for robust embedded system, 360 degree distance sensor and 3D printing technology.
*[Working with the TurtleBot3 Burger](#working-with-the-turtlebot3-burger)
*[Specification](#specification)
*[Local environment and configuration](#local-environment-and-configuration)
*[Getting started using ROS 1](#getting-started-using-ros-1)
*[Configuring](#configuring)
*[Launching ROS](#launching-ros)
*[Getting started using ROS 2](#getting-started-using-ros-2)
*[Working with TurtleBot3 Waffle with arm](#working-with-turtlebot3-waffle-with-arm)
*[Specifications](#specifications)
*[Mobile part Specification](#mobile-part-specification)
*[Arm part Specification (OpenManipulator RM-X52 TNM)](#arm-part-specification-openmanipulator-rm-x52-tnm)
*[Getting started using ROS 1](#getting-started-using-ros-1-1)
*[Configuring](#configuring-1)
*[Launching ROS](#launching-ros-1)
*[Getting started using ROS 2](#getting-started-using-ros-2-1)
*[Gazebo with multi-turtlebot3s](#gazebo-with-multi-turtlebot3s)
The TurtleBot3 burger is the smallest turtlebot3 mobile robot. It is composed of 2 DYNAMIXEL servomotors (one for each wheel), 1 OpenSource control card (OpenCR ARM Cortex-M7), 1 Raspberry Pi3, sensors for the navigation with 360° LiDAR.
* execute ifconfig. You should obtain the same IP address that you have on your own machine
* configure your environment (see below) to be able to use the installed roscore environment
* check the configuration by executing the following command:
```plaintext
> ping roscore
```
Given this environment, you can use the robots in the roscore environment already deployed on [different machines and network infrastructures](/Use_turtlebot3_eduroam). In the following, use the IPs of the different machines to configure the environment variables required to run ROS from you virtual machine.
## Getting started using ROS 1
### Configuring
Add the following lines in the .bashrc of your Remote PC to define the necessary environment variables for runnning ROS:
Reinitialize the environment of your Remote PC or Virtual Machine (in the following (Remote PC) equals remote PC or Virtual Machine:
```plaintext
(Remote PC)> source ~/.bashrc
```
Note: IP_OF_SERVER_RUNNING_ROSCORE can be equal to IP_OF_REMOTE_PC in case you run _roscore_ on the Remote PC. The ROS_MASTER_URI is necessary for connecting the ros node running on your Remote PC to the ros master node, i.e. the one running _roscore_.
Define a specific namespace for each robot and initialize the *multi_robot_name* parameter with that namespace ([Our burger configuration](/specification of our robots)):
The waffle follows the same philosophy as the burger. The main difference is a bigger platfom and the possibility of installing a robotic arm on it. Also the waffle can be used as a mobile manipulator capable of manipulating an object by attaching a manipulator like OpenMANIPULATOR.
Note: IP_OF_SERVER_RUNNING_ROSCORE can be equal to IP_OF_REMOTE_PC in case you run *roscore* on the Remote PC. The ROS_MASTER_URI is necessary for connecting the ros node running on your Remote PC to the ros master node, i.e. the one running *roscore*.
Gazebo is a robotics simulation framework that allows several different robots to evolve in a predefined spatial environment. For example, it is possible to deploy several turtlebot3 burgers in a simulated environment of the 4th floor of Fayol building.

## configure gazebo launch file
Deploying multiple robots in gazebo requires defining the deployment configuration with robot type, robot location, and ROS environment (NAMESPACE). This configuration is stipulated in a launch type file. An example of launch file with 3 turtlebot3 burgers is:
```plaintext
<launch>
<arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
>> Change fixed frame with the reference of tb3_0 burger `tb3_0/odom`
>> Add robot model, change robot description with `tb3_0/robot_description` and add tf_prefix with tb3_0
>> Add laser scan and set topic with `tb3_0/scan`
```

# TurtleBot3 Administration
By default, TurtleBot3 Burger and Waffle robots get automatically configured at startup. The following instructions only apply in case of problem, e.g. if a robot's topics are not advertised properly.
* Configuring the TurtleBot3 Burger
From the remote PC, connect to the Burger by ssh ([Our burger configuration](/specification of our robots)):
```plaintext
(Remote PC)> ssh pi@{IP_ADDRESS_OF_BURGER}
```
Add the following lines in the .bashrc of the Burger to define the necessary environment variables for runnning ROS:
Define a specific namespace for your robot and initialize two parameters *multi_robot_name* and *set_lidar_frame_id* with that namespace ([Our burger configuration](/specification of our robots)):
TurtleBot is a ROS standard platform robot. There are 3 versions of the TurtleBot model. The last version, _TurtleBot3_, was developed with features to supplement the lacking functions of its predecessors, and the demands of users.
The TurtleBot3 version adopts ROBOTIS smart actuator DYNAMIXEL for driving. TurtleBot3 is a small, affordable, programmable, ROS-based mobile robot. The TurtleBot3 can be customized into various ways depending on how you reconstruct the mechanical parts and use optional parts such as the computer and sensor. In addition, TurtleBot3 is evolved with cost-effective and small-sized SBC that is suitable for robust embedded system, 360 degree distance sensor and 3D printing technology.
*[Working with the TurtleBot3 Burger](#working-with-the-turtlebot3-burger)
*[Specification](#specification)
*[Local environment and configuration](#local-environment-and-configuration)
*[Getting started using ROS 1](#getting-started-using-ros-1)
*[Configuring](#configuring)
*[Launching ROS](#launching-ros)
*[Getting started using ROS 2](#getting-started-using-ros-2)
*[Working with TurtleBot3 Waffle with arm](#working-with-turtlebot3-waffle-with-arm)
*[Specifications](#specifications)
*[Mobile part Specification](#mobile-part-specification)
*[Arm part Specification (OpenManipulator RM-X52 TNM)](#arm-part-specification-openmanipulator-rm-x52-tnm)
*[Getting started using ROS 1](#getting-started-using-ros-1-1)
*[Configuring](#configuring-1)
*[Launching ROS](#launching-ros-1)
*[Getting started using ROS 2](#getting-started-using-ros-2-1)
*[Gazebo with multi-turtlebot3s](#gazebo-with-multi-turtlebot3s)
The TurtleBot3 burger is the smallest turtlebot3 mobile robot. It is composed of 2 DYNAMIXEL servomotors (one for each wheel), 1 OpenSource control card (OpenCR ARM Cortex-M7), 1 Raspberry Pi3, sensors for the navigation with 360° LiDAR.
* execute ifconfig. You should obtain the same IP address that you have on your own machine
* configure your environment (see below) to be able to use the installed roscore environment
* check the configuration by executing the following command:
```plaintext
> ping roscore
```
Given this environment, you can use the robots in the roscore environment already deployed on [different machines and network infrastructures](/Use_turtlebot3_eduroam). In the following, use the IPs of the different machines to configure the environment variables required to run ROS from you virtual machine.
## Getting started using ROS 1
### Configuring
Add the following lines in the .bashrc of your Remote PC to define the necessary environment variables for runnning ROS:
Reinitialize the environment of your Remote PC or Virtual Machine (in the following (Remote PC) equals remote PC or Virtual Machine:
```plaintext
(Remote PC)> source ~/.bashrc
```
Note: IP_OF_SERVER_RUNNING_ROSCORE can be equal to IP_OF_REMOTE_PC in case you run _roscore_ on the Remote PC. The ROS_MASTER_URI is necessary for connecting the ros node running on your Remote PC to the ros master node, i.e. the one running _roscore_.
Define a specific namespace for each robot and initialize the *multi_robot_name* parameter with that namespace ([Our burger configuration](/specification of our robots)):
The waffle follows the same philosophy as the burger. The main difference is a bigger platfom and the possibility of installing a robotic arm on it. Also the waffle can be used as a mobile manipulator capable of manipulating an object by attaching a manipulator like OpenMANIPULATOR.
Note: IP_OF_SERVER_RUNNING_ROSCORE can be equal to IP_OF_REMOTE_PC in case you run *roscore* on the Remote PC. The ROS_MASTER_URI is necessary for connecting the ros node running on your Remote PC to the ros master node, i.e. the one running *roscore*.
Gazebo is a robotics simulation framework that allows several different robots to evolve in a predefined spatial environment. For example, it is possible to deploy several turtlebot3 burgers in a simulated environment of the 4th floor of Fayol building.

## configure gazebo launch file
Deploying multiple robots in gazebo requires defining the deployment configuration with robot type, robot location, and ROS environment (NAMESPACE). This configuration is stipulated in a launch type file. An example of launch file with 3 turtlebot3 burgers is:
```plaintext
<launch>
<arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
>> Change fixed frame with the reference of tb3_0 burger `tb3_0/odom`
>> Add robot model, change robot description with `tb3_0/robot_description` and add tf_prefix with tb3_0
>> Add laser scan and set topic with `tb3_0/scan`
```

# TurtleBot3 Administration
By default, TurtleBot3 Burger and Waffle robots get automatically configured at startup. The following instructions only apply in case of problem, e.g. if a robot's topics are not advertised properly.
* Configuring the TurtleBot3 Burger
From the remote PC, connect to the Burger by ssh ([Our burger configuration](/specification of our robots)):
```plaintext
(Remote PC)> ssh pi@{IP_ADDRESS_OF_BURGER}
```
Add the following lines in the .bashrc of the Burger to define the necessary environment variables for runnning ROS:
Define a specific namespace for your robot and initialize two parameters *multi_robot_name* and *set_lidar_frame_id* with that namespace ([Our burger configuration](/specification of our robots)):