> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# TurtleBot3

Setup and bringup for the TurtleBot3 Burger with ROS 2 Jazzy.

**Hardware:** TurtleBot3 Burger · OpenCR (pre-flashed) · LDS-02 LiDAR (CP2102 USB bridge)

## Hardware Connections

| Connection         | Device               |
| ------------------ | -------------------- |
| OpenCR → SBC       | USB → `/dev/ttyACM0` |
| LDS-02 LiDAR → SBC | USB → `/dev/ttyUSB0` |

Verify both devices are detected before launching:

```bash theme={null}
ls /dev/ttyACM0 /dev/ttyUSB0
```

## Install the TurtleBot3 Workspace

Install the required ROS packages and build the TurtleBot3 workspace. Full instructions are available in the [ROBOTIS TurtleBot3 documentation](https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start/).

```bash theme={null}
mkdir -p ~/turtlebot3_ws/src
cd ~/turtlebot3_ws/src
git clone -b jazzy https://github.com/ROBOTIS-GIT/DynamixelSDK.git
git clone -b jazzy https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone -b jazzy https://github.com/ROBOTIS-GIT/turtlebot3.git

cd ~/turtlebot3_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
```

## Configure Environment

Append the TurtleBot3 variables to `~/.bashrc`:

```bash theme={null}
echo 'source ~/turtlebot3_ws/install/setup.bash' >> ~/.bashrc
echo 'export TURTLEBOT3_MODEL=burger' >> ~/.bashrc
echo 'export OPENCR_PORT=/dev/ttyACM0' >> ~/.bashrc
echo 'export LDS_MODEL=LDS-02' >> ~/.bashrc
source ~/.bashrc
```

| Variable           | Value          | Purpose                       |
| ------------------ | -------------- | ----------------------------- |
| `TURTLEBOT3_MODEL` | `burger`       | Selects robot URDF and config |
| `OPENCR_PORT`      | `/dev/ttyACM0` | Serial port to OpenCR         |
| `LDS_MODEL`        | `LDS-02`       | Selects LiDAR driver          |

## Configure Serial Permissions

```bash theme={null}
sudo usermod -aG dialout $USER
sudo systemctl disable --now ModemManager

sudo cp $(ros2 pkg prefix turtlebot3_bringup)/share/turtlebot3_bringup/script/99-turtlebot3-cdc.rules \
  /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
```

<Tip>**Log out and back in** (or reboot) after this step for the `dialout` group to take effect.</Tip>

## Bringup

```bash theme={null}
ros2 launch turtlebot3_bringup robot.launch.py
```

Expected output:

```
[DynamixelSDKWrapper]: Succeeded to open the port(/dev/ttyACM0)!
[ld08_driver]: FOUND LDS-02
[ld08_driver]: LDS-02 started successfully
[turtlebot3_node]: Run!
[diff_drive_controller]: Run!
```

## Teleoperation

Use the TurtleBot3 teleop node — this is the recommended method for all TurtleBot3 driving, including during SLAM.

```bash theme={null}
ros2 run turtlebot3_teleop teleop_keyboard
```

Use `W/A/S/D/X` keys. Press `S` or `X` to stop before closing.
