@@ -2,61 +2,78 @@ TurtleBot is a ROS standard platform robot. There are 3 versions of the TurtleBo
...
@@ -2,61 +2,78 @@ TurtleBot is a ROS standard platform robot. There are 3 versions of the TurtleBo
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.
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.
[[_TOC_]]
*[Working with the TurtleBot3 Burger](#working-with-the-turtlebot3-burger)
*[Specification](#specification)
*[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.
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.
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/.
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/.
+ Configuring the TurtleBot3 Burger
* Configuring the TurtleBot3 Burger
From the remote PC, connect to the Burger by ssh:
From the remote PC, connect to the Burger by ssh:
```
```plaintext
(Remote PC)> ssh pi@{IP_ADDRESS_OF_BURGER}
(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:
Add the following lines in the .bashrc of the Burger to define the necessary environment variables for runnning ROS:
(if you need to use /clock in your ros package, you have to be aware about /use_sim_time parameter defined in the launch file) 
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.
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/.
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/.
+ Configuring the TurtleBot3 Waffle
* Configuring the TurtleBot3 Waffle
From the remote PC, connect to the Waffle by ssh:
From the remote PC, connect to the Waffle by ssh:
```
```plaintext
(Remote PC)> ssh pi@{IP_ADDRESS_OF_WAFFLE}
(Remote PC)> ssh pi@{IP_ADDRESS_OF_WAFFLE}
```
```
Add the following lines in the .bashrc of the Waffle to define the necessary environment variables for runnning ROS:
Add the following lines in the .bashrc of the Waffle to define the necessary environment variables for runnning ROS:
(if you need to use /clock in your ros package, you have to be aware about /use_sim_time parameter defined in the launch file) 
Gazebo is a robotics simulation framework that allows several different robots to evolve in a predefined spatial environment. By example, it is possible to deploy several turtlebot3 burgers in a simulated environment of the 4th floor of Fayol building.
Gazebo is a robotics simulation framework that allows several different robots to evolve in a predefined spatial environment. By example, it is possible to deploy several turtlebot3 burgers in a simulated environment of the 4th floor of Fayol building.
Deploying multiple robots in gazebo requires defining the deployment configuration with robot type, robot location, and ROS environment (NAMESPACE).
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:
This configuration is stipulated in a launch type file. An example of launch file with 3 turtlebot3 burgers is:
```
```plaintext
<launch>
<launch>
<arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
<arg name="model" default="$(env TURTLEBOT3_MODEL)" doc="model type [burger, waffle, waffle_pi]"/>
<arg name="first_tb3" default="tb3_0"/>
<arg name="first_tb3" default="tb3_0"/>
...
@@ -308,20 +345,24 @@ This configuration is stipulated in a launch type file. An example of launch fil
...
@@ -308,20 +345,24 @@ This configuration is stipulated in a launch type file. An example of launch fil
```
```
In first, we define the robot configuration:
In first, we define the robot configuration:
+ the model `<arg name="model" default="burger" doc="model type [burger, waffle, waffle_pi]"/>`
+ the namespace `<arg name="first_tb3" default="tb3_0"/>`
* the model `<arg name="model" default="burger" doc="model type [burger, waffle, waffle_pi]"/>`