owned this note
owned this note
Published
Linked with GitHub
**TurtleBot3(ROS1)-Melodic 中文線上手冊**
===
- 20231123 中譯發布,不會即時修正,內容如有差異不同,請以[**英文線上手冊**](https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start/) 的 Melodic 內容為主
O : 可支援
∆ : 需要確認
X : 不支援,自行開發
| 特色 | Kinetic | Melodic | Noetic | Dashing | Foxy | Galactic | Humble |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 遙控 | O | O | O | O | O | O | O |
| SLAM | O | O | O | O | O | O | O |
| 導航 | O | O | O | O | O | O | O |
| 模擬 | O | O | O | O | O | O | O |
| 機器手臂 | O | O | O | O | O | ∆ | O |
| Home Service Challenge | O | O | O | X | X | X | X |
| 自動駕駛挑戰賽 | O | X | O | X | X | X | X |
| 機器學習 | O | O | X | O | X | X | X |
| 範例 | Kinetic | Melodic | Noetic | Dashing | Foxy | Galactic | Humble |
| --- | --- | --- | --- | --- | --- | --- | --- |
| Interactive Markers | O | X | X | X | X | X | X |
| Obstacle Detection | O | X | X | O | X | X | X |
| Position Control | O | X | X | O | X | X | X |
| Point Operation | O | X | X | O | X | X | X |
| Patrol | O | X | X | O | X | X | X |
| Follower | O | X | X | X | X | X | X |
| Panorama | O | X | X | X | X | X | X |
| Auto Parking | O | X | X | O | X | X | X |
| Auto Parking(Vision) | O | X | X | X | X | X | X |
| Multi TurtleBot3 | O | X | X | X | X | X | X |
# **1. TurtleBot3 Overview**
---
![](https://i.imgur.com/RdDum8w.png)
:::info
![](https://i.imgur.com/LLXjTMC.png)
Raspberry Pi 4
TurtleBot3 已經升級標配 Raspberry Pi 4
:::
:::info
![](https://i.imgur.com/QNR1bjv.png)
TB3 硬體可以支援 Jetson Nano SBC。
請參考下面影片有關設定 Jetson Nano 作為 TB3 SBC。
[Jetson Nano Developer Kit setup](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit) 必須要先完成
{%youtube fGEq_0aWpoA %}
:::
**What is TurtleBot3?**
TurtleBot3 是一款小巧,經濟實惠,可編程,基於 ROS 的移動機器人,適用於教育,研究,業餘愛好和產品原型設計。 TurtleBot3 的目標是大幅減小平台的尺寸並降低價格,同時不必犧牲其功能和質量,同時提供可擴展性。 TurtleBot3 可以用不同方式,例如可根據不同機構重建方式,以及使用電腦和感測器等可加購部件,來進行各種客製化。 此外,TurtleBot3 採用了經濟高效的小型 SBC 單板電腦,可適用於嵌入式系統,360 度光達和 3D 列印技術。
TurtleBot3 的核心技術是即時定位與地圖構建 [SLAM](https://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping),Navigation [導航](https://en.wikipedia.org/wiki/Robot_navigation)和 Manipulation [操縱](https://en.wikipedia.org/wiki/Robotic_manipulation),使其適用於家庭服務機器人。 TurtleBot3 可以運行 SLAM(即時定位與地圖構建)算法來構建地圖,並可以在您的房間內運作。 此外,它可以通過筆電,遊戲手柄或基於 Android 的智能手機來遠程遙控。TurtleBot3 也可以在人們走進房間時跟隨一個人的腳步前進。 此外,TurtleBot3 可以當作移動式機器手臂,能夠通過附加像 OpenMANIPULATOR 這樣的機器手臂來移動物體。OpenMANIPULATOR 機器手臂具有與 TurtleBot3 Waffle 和Waffle Pi 相容的優勢。通過這種相容性可以彌補缺乏的自由度,並且可以讓 TurtleBot3,一個具有 SLAM 和導航功能的服務機器人具有更高的完整性。
# **2. TurtleBot3 特色**
---
![](https://i.imgur.com/mwsYXrt.jpg)
## 2.1. 各款規格及報價
請洽採智科技(02-23457799,info@idminer.com.tw)
## 2.2. 組件內容
請洽採智科技(02-23457799,info@idminer.com.tw)
# **3. TB3 快速入門指南**
---
{%youtube ji2kQXgCjeM %}
## 3.1. Remote PC(桌電/筆電) 設定
:::warning
警告: 以下介紹的內容是用來設定 Remote PC (也就是你的桌電或筆電),以便來遠端控制 TurtleBot3 用。千萬不要使用在 TurtleBot3 的 SBC 單板電腦上。
:::
:::info
備註: 操作的內容已在Ubuntu 18.04 及 ROS1 Melodic Morenia 版本上測試過。
:::
### 3.1.1. 在 Remote PC 下載及安裝 Ubuntu
首先要在 Remote PC(你的桌電或是筆電)上安裝 Ubuntu(一種 Linux 作業系統). 請先下載 Ubuntu 18.04 LTS Desktop 版及參考安裝步驟進行安裝.
- [Ubuntu 18.04 LTS Desktop image 64-bit 下載點](http://releases.ubuntu.com/18.04/)
- [Ubuntu Desktop 安裝步驟](https://ubuntu.com/tutorials/install-ubuntu-desktop#1-overview)
### 3.1.2. 在 Remote PC 安裝 ROS
Ctrl+Alt+T 開啟 terminal 視窗,輸入以下指令,一次一行
- 請先參考這個 [**script 檔**](https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_melodic.sh)
```
$ sudo apt update
$ sudo apt upgrade
$ wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_melodic.sh
$ chmod 755 ./install_ros_melodic.sh
$ bash ./install_ros_melodic.sh
```
- 如果安裝失敗,請參考[**官方 ROS1 Melodic 安裝指南**](http://wiki.ros.org/melodic/Installation/Ubuntu)
### 3.1.3. 安裝相關 ROS Packages
```
$ sudo apt-get install ros-melodic-joy ros-melodic-teleop-twist-joy \
ros-melodic-teleop-twist-keyboard ros-melodic-laser-proc \
ros-melodic-rgbd-launch ros-melodic-depthimage-to-laserscan \
ros-melodic-rosserial-arduino ros-melodic-rosserial-python \
ros-melodic-rosserial-server ros-melodic-rosserial-client \
ros-melodic-rosserial-msgs ros-melodic-amcl ros-melodic-map-server \
ros-melodic-move-base ros-melodic-urdf ros-melodic-xacro \
ros-melodic-compressed-image-transport ros-melodic-rqt* \
ros-melodic-gmapping ros-melodic-navigation ros-melodic-interactive-markers
```
### 3.1.4. 安裝 TurtleBot3 Packages
TurtleBot3 可透過 Debian Packages 來安裝
```
$ sudo apt-get install ros-melodic-dynamixel-sdk
$ sudo apt-get install ros-melodic-turtlebot3-msgs
$ sudo apt-get install ros-melodic-turtlebot3
```
- 如果需要用原始碼來 build TurtleBot3 Packages,可參照下列指令,如有同名的套件請先移除。
```
$ sudo apt-get remove ros-melodic-dynamixel-sdk
$ sudo apt-get remove ros-melodic-turtlebot3-msgs
$ sudo apt-get remove ros-melodic-turtlebot3
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src/
$ git clone -b melodic-devel https://github.com/ROBOTIS-GIT/DynamixelSDK.git
$ git clone -b melodic-devel https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
$ git clone -b melodic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
$ cd ~/catkin_ws && catkin_make
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
```
### 3.1.5. 設定 TurtleBot3 Model Name
設定預設的 TURTLEBOT3_MODEL,可輸入以下指令
- 設定為 TurtleBot3 Burger
```
$ echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc
```
- 設定為 TurtleBot3 Waffle Pi
```
$ echo "export TURTLEBOT3_MODEL=waffle_pi" >> ~/.bashrc
```
### 3.1.6. 網路設定
跟 Kinetic 相同,請參考 Kinetic 內容
## 3.2. SBC 單板電腦設定
:::warning
- 安裝時需要供電及時間較久,不適合使用電池,建議使用TB3 內附的 SMPS 電源線接市電來供電。
- 需另備 HDMI 螢幕、鍵盤、滑鼠以完成設定
- 如要使用 webOS Robotics Platform,請參考 [**webOS Robotics Platform**](https://github.com/ros/meta-ros/wiki/OpenEmbedded-Build-Instructions) 指南。Packages 會在高效能的PC上,使用 OpenEmbedded cross-compiled 後生成 image 映像檔。
:::
TB3 硬體可以支援 Jetson Nano SBC。
請參考下面影片有關設定 Jetson Nano 作為 TB3 SBC。
[Jetson Nano Developer Kit setup](https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit) 必須要先完成
{%youtube fGEq_0aWpoA %}
### 3.2.1. 準備 microSD 卡及讀卡機
如果 PC 沒有 microSD 槽,請改用 microSD 讀卡機來燒錄映像檔。
![](https://i.imgur.com/k9QUeo1.png)
### 3.2.2. 下載 TB3 SBC OS image
ROS1 Melodic 需要 Ubuntu 18.04
- 下載 [Raspberry Pi 3B+ ROS Melodic image](https://www.robotis.com/service/download.php?no=2011)
- SHA256 : 312e1a5ad78447b901ae401ba31b2aaf94c1c760bdcafc60e2312df14e342640
- 下載 [Raspberry Pi 4B (2GB or 4GB) ROS Melodic image](https://www.robotis.com/service/download.php?no=2065)
- SHA256 : 676bbcfc27fc6990bdf1e026247008f0525d344ccfaa106dca6c53d0bf7f4de8
- 此映像檔跟 Raspberry Pi 4B with 8GB 不相容
- 下載 [Raspberry Pi 4B (2GB or 4GB) ROS Melodic image(Raspbian)](https://www.robotis.com/service/download.php?no=1905)
- SHA256 : 73546c63d3056bfc5538acc187f54dab6c1601096df320e60e0842bcb1b03d34
- 建議 ROS Melodic recovery image 基於 Ubuntu 18.04 及以上版
- 此映像檔跟 Raspberry Pi 4B with 8GB 不相容
:::info
- recovery 映像檔如有修改,不會預先通知
:::
### 3.2.3. 解壓縮 image
將下載的 .img 檔解壓縮存到本地硬碟
### 3.2.4. 燒錄 image
可使用不同的映像檔燒錄工具,如 Raspberry Pi Imager 或 Linux Disks utility
#### 3.2.4.1. 使用 Raspberry Pi Imager
跟 Kinetic 相同,請參考 Kinetic 內容
#### 3.2.4.2. 使用 Disks Utility
跟 Kinetic 相同,請參考 Kinetic 內容
### 3.2.5. Resize the Partition 調整分區大小
為了減少 recovery 映像檔的大小並減少將映像檔燒錄到 microSD 上的時間,recovery 檔的 partition 分區要被最小化。請調整分區大小以使用未分配的空間。
:::warning
**請注意不要選擇錯誤的磁碟或分區。對 PC 的系統碟進行分區,可能會導致嚴重的系統故障。**
:::
- [下載安裝 GParted GUI tool](https://gparted.org/download.php)
![](https://emanual.robotis.com/assets/images/platform/turtlebot3/setup/gparted.gif)
步驟
1. 從選單選擇 microSD 卡(mount 的位置會依系統而異)
2. 右鍵單擊黃色分區
3. 選擇 Resize/Move 選項
4. 拖拉分區的右方邊界,一直到最右方
5. 點擊 Resize/Move 鍵
6. 點擊上方的 Apply All Operations 綠色勾選 V 鍵
### 3.2.6. 設置 WiFi 網路設定
:::info
Note: 如果碰到有關 ROS GPG Key 的 apt failures(因為目前的 GPG key 已過期),你需要去更新 GPG Key。請參照 [ROS GPG Key Expiration Incident](https://emanual.robotis.com/docs/en/platform/turtlebot3/sbc_setup/#https://discourse.ros.org/t/ros-gpg-key-expiration-incident/20669) 來解決。
:::
1. 開新的 terminal(Ctrl + Alt + T),到 microSD 卡內的 netplan 目錄。
使用 superuser 權限 sudo 來編輯 50-cloud-init.yaml 檔
```
$ cd /media/$USER/writable/etc/netplan
$ sudo nano 50-cloud-init.yaml
```
檔案開啟後,把你的 wifi SSID 及密碼替換到 WIFI_SSID 及 WIFI_PASSWORD。
![](https://i.imgur.com/mIUhdcR.png)
Ctrl + S 儲存檔案後,Ctrl + X 結束 nano editor
![](https://emanual.robotis.com/assets/images/platform/turtlebot3/setup/network_setup.gif)
:::info
如果出現 “No such file or directory” 訊息,請確認 microSD 卡已經 mount 到系統上
:::
之後
1. 樹莓派開機
a. 連接 HDMI 螢幕到樹莓派的 HDMI port
b. 連接鍵盤跟滑鼠到樹莓派的 USB port
c. 插入 microSD 卡
d. 連接電源(透過USB or OpenCR)讓樹莓派開機
e. 登入 ID: ubuntu,密碼: turtlebot
:::info
HDMI 螢幕必須在開機前就接上樹莓派,要不然樹莓派的 HDMI port 會 disable 停用
:::
### 3.2.7. ROS 網路設置
請在 SBC(樹莓派) 操作以下步驟
1. 確認 WiFi IP address
```
$ ifconfig
```
2. 編輯 .bashrc 檔
```
$ nano ~/.bashrc
```
3. 找到 ROS_MASTER_URI 及 ROS_HOSTNAME 設定頁面,修改對應的 IP address
```
export ROS_MASTER_URI=http://{IP_ADDRESS_OF_REMOTE_PC}:11311
export ROS_HOSTNAME={IP_ADDRESS_OF_RASPBERRY_PI_3}
```
4. Ctrl + S 存檔,Ctrl + X 結束 nano editor
5. 套用所有變更
```
$ source ~/.bashrc
```
![](https://emanual.robotis.com/assets/images/platform/turtlebot3/setup/ros1_sbc_netcfg.gif)
### 3.2.8. 新光達 LDS-02 的設定
跟 Kinetic 3.2.7 相同,請參考 Kinetic 內容
#### 3.2.8.1. 手動設定 SBC 指南 for Raspberry Pi3
手動安裝需花費較多時間,但可更彈性的安裝套件。此指南不建議初學者操作。
1. 下載 ubuntu-18.04.4-preinstalled-server-arm64+raspi3.img.xz 到電腦
- [Ubuntu 18.04.4 Preinstalled Server ARM64 for Raspberry Pi3](http://old-releases.ubuntu.com/releases/18.04.4/)
2. 解壓縮下載的檔案
3. 將 .img 檔燒錄到 microSD 卡。
- 參閱 Kinetic 的 3.2.4. 燒錄 image 章節
4. Raspberry Pi3 開機
- 參閱 Kinetic 3.2.5. Raspberry Pi 開機 章節
5. 設定 Raspberry Pi3
- 登入,用戶名 ubuntu,密碼 ubuntu。登入後系統會要求更改密碼。
- 打開自動升級檔案
```
$ sudo nano /etc/apt/apt.conf.d/20auto-upgrades
```
6. 更改升級設定如下, disable 自動更新設定
-
```
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";
```
- Ctrl + S 儲存。Ctrl + X 結束跳出。
7. 輸入指令來設置 WiFi 網路
```
$ sudo nano /etc/netplan/50-cloud-init.yaml
```
8. 打開編輯器,將下列內容貼到檔案的最下方,然後把你的 wifi SSID 及密碼替換到 WIFI_SSID 及 WIFI_PASSWORD。
![](https://i.imgur.com/mIUhdcR.png)
- Ctrl + S 儲存檔案後,Ctrl + X 結束
9. Raspberry Pi 重開機
```
$ sudo reboot
```
10. 設定 systemd 來防止開機延遲
```
$ systemctl mask systemd-networkd-wait-online.service
```
11. 停用 Suspend and Hibernation
```
$ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
```
12. Raspberry Pi3 開機後,如果要用 SSH 由遠端 PC 連到 Raspberry Pi 工作,使用下列指令,密碼是 ubuntu
```
$ ssh ubuntu@{IP Address of Raspberry PI}
```
13. 在 terminal 一次一行輸入指令,來安裝 ROS Melodic Morenia。可以參考這個安裝腳本 [**script file**](https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_melodic_rpi.sh)
```
$ sudo apt-get update
$ sudo apt-get upgrade
$ wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_melodic_rpi.sh
$ chmod 755 ./install_ros_melodic_rpi.sh
$ bash ./install_ros_melodic_rpi.sh
```
- 以上安裝如果失敗,可參考官方 [the official ROS Melodic installation guide](http://wiki.ros.org/melodic/Installation/Ubuntu) 來處理。
14. 安裝及 Build ROS Packages
```
$ sudo apt install ros-melodic-rosserial-python ros-melodic-tf
$ mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/src
$ sudo apt install ros-melodic-hls-lfcd-lds-driver
$ sudo apt install ros-melodic-turtlebot3-msgs
$ sudo apt install ros-melodic-dynamixel-sdk
$ git clone -b melodic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
$ cd ~/catkin_ws/src/turtlebot3
$ rm -r turtlebot3_description/ turtlebot3_teleop/ turtlebot3_navigation/ turtlebot3_slam/ turtlebot3_example/
$ cd ~/catkin_ws/
$ echo 'source /opt/ros/melodic/setup.bash' >> ~/.bashrc
$ source ~/.bashrc
$ cd ~/catkin_ws && catkin_make -j1
$ echo 'source ~/catkin_ws/devel/setup.bash' >> ~/.bashrc
$ source ~/.bashrc
```
15. 設定 OpenCR 的 USB port
```
$ rosrun turtlebot3_bringup create_udev_rules
```
16. 編輯 .bashrc 檔要確認 ROS 網路設置
```
$ nano ~/.bashrc
```
17. 修改 ROS_MASTER_URI 的 IP 及 ROS_HOSTNAME
```
export ROS_MASTER_URI=http://{IP_ADDRESS_OF_REMOTE_PC}:11311
export ROS_HOSTNAME={IP_ADDRESS_OF_RASPBERRY_PI_3}
```
18. 存檔及結束 nano editor
19. 2022 年版 TurtleBot3 標配的光達已經改為 LDS-02。請使用下列指令在 SBC(樹莓派) 上來設定 LDS-02 光達。
- 在 SBC 上
```
$ sudo apt update
$ sudo apt install libudev-dev
$ cd ~/catkin_ws/src
$ git clone -b develop https://github.com/ROBOTIS-GIT/ld08_driver.git
$ cd ~/catkin_ws && catkin_make
```
20. Export LDS_MODEL to bashrc 檔。LDS model 可以是 LDS-01 或 LDS-02。
```
$ echo 'export LDS_MODEL=LDS-02' >> ~/.bashrc
$ source ~/.bashrc
```
21. 套用所有變更
```
$ source ~/.bashrc
```
可參照下列 Ubuntu Blog 來取得更詳細資訊
- [Improving Security with Ubuntu](https://ubuntu.com/blog/steps-to-maximise-robotics-security-with-ubuntu)
- [Improving User Experience of TurtleBot3 Waffle Pi](https://ubuntu.com/blog/building-a-better-turtlebot3)
- [How to set up TurtleBot3 Waffle Pi in minutes with Snaps](https://ubuntu.com/blog/how-to-set-up-turtlebot3-in-minutes-with-snaps)
## 3.3. OpenCR 控制板設定
跟 Kinetic 相同,請參考 Kinetic 內容
### 3.3.1. OpenCR 測試
跟 Kinetic 相同,請參考 Kinetic 內容
## 3.4. 硬體組裝
![](https://i.imgur.com/CEvRMfd.png)
### 3.4.1. 組裝手冊
跟 Kinetic 相同,請參考 Kinetic 內容
### 3.4.2. TB3 組裝影片
跟 Kinetic 相同,請參考 Kinetic 內容
## 3.5. Bringup 開始啟用
### 3.5.1. 執行 roscore
**Remote PC**
```
$ roscore
```
### 3.5.2. Bringup 啟動 TB3
1. 在 PC 上 Ctrl + Alt + T 開新 terminal,連上樹莓派的 IP address。使用預設的密碼 turtlebot
```
$ ssh ubuntu@{IP_ADDRESS_OF_RASPBERRY_PI}
```
2. 啟動基礎套件開始 TB3 應用。
```
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch
```
3. 如果使用的 TB3 是 burger,視窗會出現訊息
```
SUMMARY
========
PARAMETERS
* /rosdistro: melodic
* /rosversion: 1.14.3
* /turtlebot3_core/baud: 115200
* /turtlebot3_core/port: /dev/ttyACM0
* /turtlebot3_core/tf_prefix:
* /turtlebot3_lds/frame_id: base_scan
* /turtlebot3_lds/port: /dev/ttyUSB0
NODES
/
turtlebot3_core (rosserial_python/serial_node.py)
turtlebot3_diagnostics (turtlebot3_bringup/turtlebot3_diagnostics)
turtlebot3_lds (hls_lfcd_lds_driver/hlds_laser_publisher)
ROS_MASTER_URI=http://192.168.1.2:11311
process[turtlebot3_core-1]: started with pid [14198]
process[turtlebot3_lds-2]: started with pid [14199]
process[turtlebot3_diagnostics-3]: started with pid [14200]
[INFO] [1531306690.947198]: ROS Serial Python Node
[INFO] [1531306691.000143]: Connecting to /dev/ttyACM0 at 115200 baud
[INFO] [1531306693.522019]: Note: publish buffer size is 1024 bytes
[INFO] [1531306693.525615]: Setup publisher on sensor_state [turtlebot3_msgs/SensorState]
[INFO] [1531306693.544159]: Setup publisher on version_info [turtlebot3_msgs/VersionInfo]
[INFO] [1531306693.620722]: Setup publisher on imu [sensor_msgs/Imu]
[INFO] [1531306693.642319]: Setup publisher on cmd_vel_rc100 [geometry_msgs/Twist]
[INFO] [1531306693.687786]: Setup publisher on odom [nav_msgs/Odometry]
[INFO] [1531306693.706260]: Setup publisher on joint_states [sensor_msgs/JointState]
[INFO] [1531306693.722754]: Setup publisher on battery_state [sensor_msgs/BatteryState]
[INFO] [1531306693.759059]: Setup publisher on magnetic_field [sensor_msgs/MagneticField]
[INFO] [1531306695.979057]: Setup publisher on /tf [tf/tfMessage]
[INFO] [1531306696.007135]: Note: subscribe buffer size is 1024 bytes
[INFO] [1531306696.009083]: Setup subscriber on cmd_vel [geometry_msgs/Twist]
[INFO] [1531306696.040047]: Setup subscriber on sound [turtlebot3_msgs/Sound]
[INFO] [1531306696.069571]: Setup subscriber on motor_power [std_msgs/Bool]
[INFO] [1531306696.096364]: Setup subscriber on reset [std_msgs/Empty]
[INFO] [1531306696.390979]: Setup TF on Odometry [odom]
[INFO] [1531306696.394314]: Setup TF on IMU [imu_link]
[INFO] [1531306696.397498]: Setup TF on MagneticField [mag_link]
[INFO] [1531306696.400537]: Setup TF on JointState [base_link]
[INFO] [1531306696.407813]: --------------------------
[INFO] [1531306696.411412]: Connected to OpenCR board!
[INFO] [1531306696.415140]: This core(v1.2.1) is compatible with TB3 Burger
[INFO] [1531306696.418398]: --------------------------
[INFO] [1531306696.421749]: Start Calibration of Gyro
[INFO] [1531306698.953226]: Calibration End
```
### 3.5.3. 在 RViz 載入 TurtleBot3
跟 Kinetic 相同,請參考 Kinetic 內容
## 3.6. 基本操作
### 3.6.1. Teleoperation 遙控
跟 Kinetic 相同,請參考 Kinetic 內容
#### 3.6.1.1. 鍵盤
跟 Kinetic 相同,請參考 Kinetic 內容
#### 3.6.1.2. RC-100 遙控器
跟 Kinetic 相同,請參考 Kinetic 內容
#### 3.6.1.3. PS3 搖桿
1. 將 PS3 搖桿, 透過藍芽或是 USB 線連到 remote PC(桌電或筆電)
2. 安裝使用 PS3 搖桿的 teleoperation packages
```
$ sudo apt-get install ros-melodic-joy ros-melodic-joystick-drivers ros-melodic-teleop-twist-joy
```
3. 啟動 teleoperation node
```
$ roslaunch teleop_twist_joy teleop.launch
```
#### 3.6.1.4. XBOX 360 搖桿
1. 將 XBOX 360 搖桿, 透過無線連接器或是 USB 線連到 remote PC
2. 安裝使用 XBOX 360 搖桿的 teleoperation packages
```
$ sudo apt-get install xboxdrv ros-melodic-joy ros-melodic-joystick-drivers ros-melodic-teleop-twist-joy
```
3. 啟動 XBOX 360 搖桿 teleoperation node
```
$ sudo xboxdrv --silent
$ roslaunch teleop_twist_joy teleop.launch
```
#### 3.6.1.5. Wii Remote
1. 將 Wii Remote 搖桿, 透過藍芽連到 remote PC
2. 安裝使用 Wii Remote 搖桿的 teleoperation packages
```
$ sudo apt-get install ros-melodic-wiimote libbluetooth-dev libcwiid-dev
$ cd ~/catkin_ws/src
$ git clone https://github.com/ros-drivers/joystick_drivers.git
$ cd ~/catkin_ws && catkin_make
```
3. 啟動 Wii remote teleoperation node
```
$ rosrun wiimote wiimote_node
$ rosrun wiimote teleop_wiimote
```
### 3.6.2. Topic Monitor
跟 Kinetic 相同,請參考 Kinetic 內容
此外,只要添加了新的 topics,你就可以通過 rqt 程式來監控 topics 資訊。
# **4. SLAM 地圖定位**
---
跟 Kinetic 相同,請參考 Kinetic 內容
## 4.1. 執行 SLAM node
跟 Kinetic 相同,請參考 Kinetic 內容
:::info
**如何儲存 TURTLEBOT3_MODEL 參數?**
如果在 .bashrc 檔內 TURTLEBOT3_MODEL 參數已預設好,那 $ export TURTLEBOT3_MODEL=${TB3_MODEL} 指令可以忽略。
開新的 terminal 時, .bashrc 檔會自動載入
- 定義 TB3 Burger 為預設模型
```
$ echo 'export TURTLEBOT3_MODEL=burger' >> ~/.bashrc
$ source ~/.bashrc
```
- 定義 TB3 Waffle Pi 為預設模型
```
$ echo 'export TURTLEBOT3_MODEL=waffle_pi' >> ~/.bashrc
$ source ~/.bashrc
```
:::
:::info
**使用其他的 SLAM 方法**
- **GMapping** ([ROS Wiki](http://wiki.ros.org/gmapping),[Github](https://github.com/ros-perception/slam_gmapping))
1. 在 Remote PC 安裝相關套件。(套件在章節 Remote PC 設定時,已經安裝好)
2. 執行 Gmapping SLAM node
```
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
```
- **Cartographer** ([ROS Wiki](http://wiki.ros.org/cartographer),[Github](https://github.com/googlecartographer/cartographer))
1. 在 Remote PC 安裝相關套件。
Cartographer 套件由 Google 開發,0.2.0版支援 ROS1 Kinetic。如要在 Kinetic 使用本套件,你應該下載原始碼後 build 此套件,而不要安裝已編譯的二進位套件。詳情可參考[官方 wiki 頁面](https://google-cartographer-ros.readthedocs.io/en/latest/#building-installation)。
```
$ sudo apt-get update
$ sudo apt-get install -y python-wstool python-rosdep ninja-build stow
$ mkdir ~/catkin_ws && cd ~/catkin_ws
$ wstool init src
$ wstool merge -t src https://raw.githubusercontent.com/cartographer-project/cartographer_ros/master/cartographer_ros.rosinstall
$ wstool update -t src
$ sudo rosdep init
$ rosdep update
$ rosdep install --from-paths src --ignore-src --rosdistro=melodic -y
$ src/cartographer/scripts/install_abseil.sh
$ catkin_make_isolated --install --use-ninja
```
2. 啟動 Cartographer SLAM node
```
$ source ~/catkin_ws/install_isolated/setup.bash
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=cartographer
```
- **Hector** ([ROS Wiki](http://wiki.ros.org/hector_slam),[Github](https://github.com/tu-darmstadt-ros-pkg/hector_slam))
1. 在 Remote PC 安裝相關套件。
```
$ sudo apt-get install ros-melodic-hector-mapping
```
2. 啟動 Hector SLAM node
```
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=hector
```
- **Karto** ([ROS Wiki](http://wiki.ros.org/slam_karto),[Github](https://github.com/ros-perception/slam_karto))
1. 在 Remote PC 安裝相關套件。
```
$ sudo apt-get install ros-melodic-slam-karto
```
2. 啟動 Karto SLAM node
```
$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=karto
```
:::
## 4.2. 執行 Teleoperation Node
跟 Kinetic 相同,請參考 Kinetic 內容
## 4.3. 微調指南 Gmapping
跟 Kinetic 相同,請參考 Kinetic 內容
## 4.4. 儲存地圖
跟 Kinetic 相同,請參考 Kinetic 內容
## 4.5. 地圖
跟 Kinetic 相同,請參考 Kinetic 內容
# **5. Navigation 導航**
---
跟 Kinetic 相同,請參考 Kinetic 內容
## 5.1. 執行 Navigation node
1. 從 Remote PC 執行 roscore。如已執行可跳過此步驟。
```
$ roscore
```
2. TB3 SBC 啟用(Bringup)基本套件來開始 TB3 應用。如以啟用可跳過此步驟
- 在 Remote PC 開新的 terminal (Ctrl + Alt + T),連上 SBC 的 IP address。預設密碼是 ubuntu
```
$ ssh ubuntu@{IP_ADDRESS_OF_RASPBERRY_PI}
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch
```
3. 在 Remote PC 開新的 terminal, 啟動 Navigation 檔案。另外 TURTLEBOT3_MODEL 的參數需設定 burger, waffle, 或 waffle_pi。
```
$ export TURTLEBOT3_MODEL=burger
$ roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml
```
:::info
**如何儲存 TURTLEBOT3_MODEL 參數?**
如果在 .bashrc 檔內 TURTLEBOT3_MODEL 參數已預設好,那 $ export TURTLEBOT3_MODEL=${TB3_MODEL} 指令可以忽略。
開新的 terminal 時, .bashrc 檔會自動載入
- 定義 TB3 Burger 為預設模型
```
$ echo 'export TURTLEBOT3_MODEL=burger' >> ~/.bashrc
$ source ~/.bashrc
```
- 定義 TB3 Waffle Pi 為預設模型
```
$ echo 'export TURTLEBOT3_MODEL=waffle_pi' >> ~/.bashrc
$ source ~/.bashrc
```
:::
## 5.2. 估計 Initial Pose
跟 Kinetic 相同,請參考 Kinetic 內容
## 5.3. Set Navigation Goal 設定導航目標
跟 Kinetic 相同,請參考 Kinetic 內容
## 5.4. 微調指南 Navigation
跟 Kinetic 相同,請參考 Kinetic 內容
# **6. Simulation 模擬**
跟 Kinetic 相同,請參考 Kinetic 內容
## 6.1. Gazebo Simulation
{%youtube UzOoJ6a_mOg %}
:::info
**備註**: 手冊中的影片內容可能隨時更新,恕不另行通知。
:::
Gazebo Simulation 使用 ROS Gazebo package,因此必須事先安裝支援 ROS1 Melodic 的 Gazebo 版本。
### 6.1.1. 安裝 Simulation Package
**TurtleBot3 Simulation Package** 需要 turtlebot3 及 turtlebot3_msgs packages 為先決條件。沒有這兩個 packages,無法啟動 Simulation。
如果還沒有安裝所需 packages,可參照 Remote PC 設定章節來安裝。
```
$ cd ~/catkin_ws/src/
$ git clone -b melodic-devel https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
$ cd ~/catkin_ws && catkin_make
```
### 6.1.2. 啟動 Simulation World 世界地圖
跟 Kinetic 相同,請參考 Kinetic 內容
### 6.1.3. 操作 TB3
跟 Kinetic 相同,請參考 Kinetic 內容
## 6.2. SLAM 模擬
跟 Kinetic 相同,請參考 Kinetic 內容
### 6.2.1. 開啟 Simulation World 世界地圖
跟 Kinetic 相同,請參考 Kinetic 內容
### 6.2.2. 執行 SLAM Node
跟 Kinetic 相同,請參考 Kinetic 內容
### 6.2.3. 執行 Teleoperation Node
跟 Kinetic 相同,請參考 Kinetic 內容
### 6.2.4. 儲存地圖
跟 Kinetic 相同,請參考 Kinetic 內容
:::info
**如何多個 TB3 一起 SLAM?**
要建立多個機器人用的地圖,需要 multirobot-map-merge package。
起依照以下的說明進行,來操作多個 TB3。
1. 安裝需要的 packages
```
$ sudo apt-get install ros-melodic-multirobot-map-merge
```
2. 將多個 TB3 載入 TurtleBot3 House 地圖。載入三個 TB3 都已設好初始位置及方位。
```
$ roslaunch turtlebot3_gazebo multi_turtlebot3.launch
```
![](https://i.imgur.com/4SuW3GP.png)
3. 為每個 TB3 啟動 SLAM
```
$ ROS_NAMESPACE=tb3_0 roslaunch turtlebot3_slam turtlebot3_gmapping.launch set_base_frame:=tb3_0/base_footprint set_odom_frame:=tb3_0/odom set_map_frame:=tb3_0/map
$ ROS_NAMESPACE=tb3_1 roslaunch turtlebot3_slam turtlebot3_gmapping.launch set_base_frame:=tb3_1/base_footprint set_odom_frame:=tb3_1/odom set_map_frame:=tb3_1/map
$ ROS_NAMESPACE=tb3_2 roslaunch turtlebot3_slam turtlebot3_gmapping.launch set_base_frame:=tb3_2/base_footprint set_odom_frame:=tb3_2/odom set_map_frame:=tb3_2/map
```
4. 將每個 TB3 各自的地圖數據合併為一個地圖數據
```
$ roslaunch turtlebot3_gazebo multi_map_merge.launch
```
5. 啟動 RViz
```
$ rosrun rviz rviz -d `rospack find turtlebot3_gazebo`/rviz/multi_turtlebot3_slam.rviz
```
6. 操作每個 TB3
```
$ ROS_NAMESPACE=tb3_0 rosrun turtlebot3_teleop turtlebot3_teleop_key
$ ROS_NAMESPACE=tb3_1 rosrun turtlebot3_teleop turtlebot3_teleop_key
$ ROS_NAMESPACE=tb3_2 rosrun turtlebot3_teleop turtlebot3_teleop_key
```
![](https://i.imgur.com/9lwqbN8.png)
7. 儲存地圖
```
$ rosrun map_server map_saver -f ~/map
```
:::
## 6.3. Navigation Simulation 模擬導航
跟 Kinetic 相同,請參考 Kinetic 內容
### 6.3.1. 開啟模擬的世界地圖
跟 Kinetic 相同,請參考 Kinetic 內容
### 6.3.2. 執行 Navigation Node
跟 Kinetic 相同,請參考 Kinetic 內容
### 6.3.3. 估計 Initial Pose 初始方位
跟 Kinetic 相同,請參考 Kinetic 內容
### 6.3.4. Set Navigation Goal 設定導航目標
跟 Kinetic 相同,請參考 Kinetic 內容
## 6.4. Fake Node Simulation
跟 Kinetic 相同,請參考 Kinetic 內容
安裝指令為
```
$ cd ~/catkin_ws/src/
$ git clone -b melodic-devel https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
$ cd ~/catkin_ws && catkin_make
```
## 6.5. 單獨的 Gazebo 模擬
此功能只有 Kinetic 版支援
# **7. Manipulation 機器手臂**
---
:::info
**備註**:
- 操作的內容已在 Ubuntu 18.04 及 ROS1 Melodic Morenia 版本上測試過。
- 如要了解更多 OpenManipulator-X 機器手臂資訊,請參考 [OpenManipulator-X 線上手冊(英)](https://emanual.robotis.com/docs/en/platform/openmanipulator/)
:::
:::warning
- 此手冊內容如有更新變動,不會預先通知。
:::
:::success
**提示**:Ubuntu 的 Terminal (終端機)可以在螢幕左上方的 Search 圖示找到. 快捷鍵可以使用 Ctrl-Alt-T.
:::
## 7.1. TurtleBot3 附 OpenManipulator-X 機器手臂
跟 Kinetic 相同,請參考 Kinetic 內容
## 7.2. 手臂軟體設定
:::info
**備註**:在安裝 open_manipulator_with_tb3 套件之前,請確認先前已經在你的 RemotePC(桌電或筆電)和 SBC(Raspberry Pi 3) 設定時,都已安裝了turtlebot3 和 open_manipulator 套件。
:::
1. 在 Remote PC 上下載,build OpenManipulator-X 相關套件,以便後續手臂組裝後使用
```
$ cd ~/catkin_ws/src/
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_manipulation.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_manipulation_simulations.git
$ git clone https://github.com/ROBOTIS-GIT/open_manipulator_dependencies.git
$ sudo apt install ros-melodic-ros-control* && ros-melodic-control* && ros-melodic-moveit*
$ cd ~/catkin_ws && catkin_make
```
## 7.3. 手臂硬體組裝
跟 Kinetic 相同,請參考 Kinetic 內容
## 7.4. OpenCR 控制板設定
跟 Kinetic 相同,請參考 Kinetic 內容
### 7.4.1. 使用 Arduino IDE 來上傳韌體
跟 Kinetic 相同,請參考 Kinetic 內容
## 7.5. Bringup 啟動 TB3 與機器手臂
跟 Kinetic 相同,請參考 Kinetic 內容
## 7.6. 模擬
使用 Gazebo 模擬器來模擬 TB3與機器手臂
### 7.6.1. 執行 Gazebo
跟 Kinetic 相同,請參考 Kinetic 內容
### 7.6.2. 執行 move_group node
跟 Kinetic 相同,請參考 Kinetic 內容
### 7.6.3. 執行 RViz
跟 Kinetic 相同,請參考 Kinetic 內容
### 7.6.4. 執行 ROBOTIS GUI Controller 圖形介面控制器
跟 Kinetic 相同,請參考 Kinetic 內容
## 7.7. 操作實體的 OpenManipulator-X 手臂
請依照下列指示來操作
### 7.7.1. 執行 roscore
跟 Kinetic 相同,請參考 Kinetic 內容
### 7.7.2. 執行 Bringup 啟動
跟 Kinetic 相同,請參考 Kinetic 內容
### 7.7.3. 執行 move_group node
跟 Kinetic 相同,請參考 Kinetic 內容
### 7.7.4. 執行 RViz
跟 Kinetic 相同,請參考 Kinetic 內容
### 7.7.5. 執行 ROBOTIS GUI Controller
跟 Kinetic 相同,請參考 Kinetic 內容
## 7.8. SLAM
TB3 與 OpenManipulator-X 使用 SLAM 功能在未知地圖上建圖
![](https://i.imgur.com/11B4KzY.png)
### 7.8.1. 執行 roscore
跟 Kinetic 相同,請參考 Kinetic 內容
### 7.8.2. 執行 Bringup 啟動
跟 Kinetic 相同,請參考 Kinetic 內容
### 7.8.3. 執行 SLAM node
跟 Kinetic 相同,請參考 Kinetic 內容
### 7.8.4. 執行 turtlebot3_teleop_key Node
跟 Kinetic 相同,請參考 Kinetic 內容
## 7.9. Navigation 導航
使用 Navigation node 讓 TB3+OpenManipulator-X 移動到指定位置
### 7.9.1. 執行 roscore
跟 Kinetic 相同,請參考 Kinetic 內容
### 7.9.2. 執行 Bringup 啟動
跟 Kinetic 相同,請參考 Kinetic 內容
### 7.9.3. 執行 Navigation Node
跟 Kinetic 相同,請參考 Kinetic 內容
### 7.9.4. 如何在 Navigation 時控制 OpenManipulator-X 手臂
跟 Kinetic 相同,請參考 Kinetic 內容
### 7.9.5. 執行 ROBOTIS GUI Controller
跟 Kinetic 相同,請參考 Kinetic 內容
## 7.10. TB3 Home Service Challenge 居家服務挑戰賽
:::info
此項目只支援 Kinetic 版
:::
# **8. [ROS1] Automonous Driving 自駕車挑戰賽**
---
![](https://i.imgur.com/52GNGkx.jpg)
AutoRace 是一個自動駕駛機器人平台的競賽。
:::info
**TB3 AutoRace 只支援 Kinetic 及 Noetic 版**
:::
# **9. [ROS 1] Machine Learning 機器學習**
---
跟 Kinetic 相同,請參考 Kinetic 內容
## 9.1. 為 TB3 安裝機器學習軟體
要完成本教程,你需要在 Ubuntu 18.04 和 ROS1 Melodic 上安裝 Tensorflow(開源機器學習程式庫 by Google),Keras(開源深度學習程式庫 by Python),和 Anaconda(開源的 Python 發行版本)。
{%youtube s0qgunKt654 %}
### 9.1.1. 安裝 Anaconda
您可以下載 [Anaconda 5.2.0](https://repo.anaconda.com/archive/Anaconda2-5.2.0-Linux-x86_64.sh) for Python 2.7 版本。
下載 Anaconda 後,到下載檔案的資料夾並輸入以下命令。
安裝時在 terminal 上 yes 同意授權條款,同時將 Anaconda2 安裝路徑加到 .bashrc 檔內
```
$ bash Anaconda2-5.2.0-Linux-x86_64.sh
```
安裝好 Anaconda 後,
```
$ source ~/.bashrc
$ python -V
```
如果 Anaconda 安裝成功,你會看到 Python 2.7.xx :: Anaconda, Inc. 文字。
### 9.1.2. 安裝 ROS 相依套件
首先安裝必須套件
```
$ pip install msgpack argparse
```
要同時使用 ROS 和 Anaconda,還必須安裝 ROS 相依套件。
```
$ pip install -U rosinstall empy defusedxml netifaces
```
### 9.1.3. 安裝 TensorFlow
本教程使用的是 python 2.7(僅限 CPU 版)。 如果你想使用其他 python 版本和 GPU 版,請參閱 [TensorFlow](https://www.tensorflow.org/install/) 連結。
```
$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.8.0-cp27-none-linux_x86_64.whl
```
### 9.1.4. 安裝 Keras
[Keras](https://keras.io/) 是一個高級類神經網路 API,用 Python 編寫,能夠在 TensorFlow 之上運行。
```
$ pip install keras==2.1.5
```
有關 tensorboard incompatible 訊息可以忽略,因為範例不會使用,但你也可以安裝 tensorboard 來解決
```
$ pip install tensorboard
```
### 9.1.5. 安裝 TB3 機器學習套件
:::warning
**警示**:在安裝此套件之前,請先安裝 [turtlebot3](https://github.com/ROBOTIS-GIT/turtlebot3),[turtlebot3_msgs](https://github.com/ROBOTIS-GIT/turtlebot3_msgs) 和 [turtlebot3_simulations](https://github.com/ROBOTIS-GIT/turtlebot3_simulations) 套件。
:::
```
$ cd ~/catkin_ws/src/
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_machine_learning.git
$ cd ~/catkin_ws && catkin_make
```
:::info
在 Gazebo 模擬器執行 Machine Learning,需要先安裝 turtlebot3_simulations package,以下是指令。
```
$ cd ~/catkin_ws/src/
$ git clone -b melodic-devel https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
$ cd ~/catkin_ws && catkin_make
```
:::
:::info
numpy 可能需要移除及重裝來糾正問題,可能需要移除好幾次以便完全移除 numpy。
```
$ pip uninstall numpy
$ pip show numpy
$ pip uninstall numpy
$ pip show numpy
```
如果完全移除,則輸入 pip show numpy 時,不會看到任何有關 numpy 的訊息。
重裝 numpy 指令
```
$ pip install numpy pyqtgraph
```
:::
## 9.2. 設定參數
跟 Kinetic 相同,請參考 Kinetic 內容
### 9.2.1. 設定 state 狀態
跟 Kinetic 相同,請參考 Kinetic 內容
### 9.2.2. 設定 action 動作
跟 Kinetic 相同,請參考 Kinetic 內容
### 9.2.3. 設定 reward 獎勵
跟 Kinetic 相同,請參考 Kinetic 內容
### 9.2.4. 設定 hyper parameters 超參數
跟 Kinetic 相同,請參考 Kinetic 內容 |
## 9.3. 執行機器學習套件
跟 Kinetic 相同,請參考 Kinetic 內容
### 9.3.1. Stage 1 (無障礙物)
跟 Kinetic 相同,請參考 Kinetic 內容
### 9.3.2. Stage 2 (靜止障礙物)
跟 Kinetic 相同,請參考 Kinetic 內容
### 9.3.3. Stage 3 (移動障礙物)
跟 Kinetic 相同,請參考 Kinetic 內容
### 9.3.4. Stage 4 (障礙物組合)
跟 Kinetic 相同,請參考 Kinetic 內容
# **10. [ROS 1] 實作 TB3 的不同應用程式**
---
:::info
Note: 此特色只支援 ROS1 Kinetic 及 ROS2 Dashing 版
:::
# **11. Locomotion 各種 TB3 改裝運動造型**
---
在影片中,觀看 TurtleBot3 如何組裝,然後新增幾個附加零件後再次組裝。TurtleBot3 組件中最大的零件是層板(waffle plate),可以組裝成各種尺寸和形狀,這要歸功於,其可供不同螺絲和螺帽使用的多種孔洞設計。
{%youtube o9d7NVC0A1Y %}
:::info
**備註**: 手冊中的影片內容可能隨時更新,恕不另行通知。
:::
通過這種開放性的組件,可以改裝出多種各具特點的 TurtleBot3 不同造型機器人。你可以自創一個前所未見的全新機器人。自行創建基於開源硬體的多變化機器人,並嘗試新的 locomotion 改裝造型。
**TurtleBot3 Friends 改裝造型列表(locomotion list)**
- TurtleBot3 Friends: Car 小車
- TurtleBot3 Friends: OpenManipulator 機器手臂
- TurtleBot3 Friends: Segway 賽格威二輪平衡
- TurtleBot3 Friends: Conveyor 輸送車
- TurtleBot3 Friends: Monster 怪獸四驅車
- TurtleBot3 Friends: Tank 履帶車
- TurtleBot3 Friends: Omni 全向輪
- TurtleBot3 Friends: Mecanum 萬象輪
- TurtleBot3 Friends: Bike 三輪車
- TurtleBot3 Friends: Road Train 聯結車
- TurtleBot3 Friends: Real TurtleBot 真烏龜
- TurtleBot3 Friends: Carrier 多層運送車
**零件改裝列表** ([BOM 表 excel 下載](https://docs.google.com/spreadsheets/d/1vbIFMRJMbyOd2D6BtwV1Ow_yBc9xRHktqZhTTmwI_l4/edit#gid=368658157))
![](https://i.imgur.com/S5c2Fcz.png)
{%youtube gI0T4-aqTpI %}
:::info
注意:
- 在 BOM 表內列出由第三方代理所銷售的產品,可能會有變更或停售的情形,而不會事先通知。如有此情形,可參考零件的 3D 模型,找到相容的產品。
:::
- 從 OpenCR 控制板的 Arduino IDE 選單列的 File -> Examples -> turtlebot3 -> turtlebot3_friends,就可看到各種 TB3 改裝機器人的原始碼。
![](https://i.imgur.com/v1n1bEQ.png)
## 11.1. TurtleBot3 Friends: Car 小車
:::info
此改裝車的 3D 模型目前停止銷售
:::
- 類型: RC Car
- 特色: 製作可用於 Formula E 電動方程式賽車的車子(齒輪比 1:2, 差速齒輪)
- 組件: 兩個 Dynamixel X430 智能馬達(一個用於方向盤,一個用於驅動),一個 OpenCR 控制板,一個 RC-100 遙控器附 BT-410 藍芽模組,TB3 機殼組及電池,OLLO 的 6mm 塑膠框架
- 硬體: 此範例內有些 3D 組件被禁止販售
- 軟體: Examples → turtlebot3 → turtlebot3_friends → turtlebot3_car
- 影片
{%youtube IkPexspUgKk %}
{%youtube 1V33iEu4ylw %}
## 11.2. TurtleBot3 Friends: OpenManipulator 機器手臂
![](https://i.imgur.com/6pshgKI.png)
- 類型: 機器手臂 Manipulator 4 DOF + 1 Gripper
- 特色: 可跟 TurtleBot3 Waffle Pi 鬆餅 Pi 相容,並有線性夾爪可撿取及放置物體
- 組件: 5 個 Dynamixel X430 智能馬達 (4 個做關節,1 個做夾爪), 1個 OpenCR 控制板, 3D 列印的機殼
- BOM: 請參考 [OpenManipulator Parts 零件](https://docs.google.com/spreadsheets/d/1h46Vw3amU0FZl3JSRS42BNoAaKeJoDlHAJGMKVe05ts/edit#gid=490107710)網頁
- 硬體: TB3 Waffle Pi + OpenManipulator ([Onshape](https://cad.onshape.com/documents/1535c2d7f05d4986e5ab539c/w/72b49bd8c74a47b010391012/e/454b64d637f42073514486f4), [Thingverse](https://www.thingiverse.com/thing:3081010))
- 硬體: OpenManipulator 機器手臂 ([Onshape](http://www.robotis.com/service/download.php?no=690), T[hingverse](https://www.thingiverse.com/thing:3069574))
- [軟體](https://github.com/ROBOTIS-GIT/open_manipulator_with_tb3): OpenCR Example 準備中
- [OpenManipulator Wiki](http://emanual.robotis.com/docs/en/platform/openmanipulator/) 網頁
- 影片
{%youtube Qhvk5cnX2hM %}
{%youtube qbht0ssv8M0 %}
{%youtube P82pZsqpBg0 %}
{%youtube DLOq8yNcCoE %}
## 11.3. TurtleBot3 Friends: Segway 賽格威二輪平衡
![](https://i.imgur.com/awypubW.png)
:::info
**備註**:
- 2 個 X430 智能馬達需要設為 PWM 模式
- Filters library 必須下載並包進 Arduino IDE 內。 [Github 連結](https://github.com/JonHub/Filters)
:::
- 類型: Segway robot (2 輪平衡機器人)
- 特色: 應用 PID 控制器來讓 2 個 Dynamixel 智能馬達保持平衡
- 組件: 2 個 Dynamixel X430 智能馬達(全部做平衡用),1個 OpenCR 控制板,TB3 機殼及電池,3D 之列印機殼
- [BOM 表](https://docs.google.com/spreadsheets/d/1vbIFMRJMbyOd2D6BtwV1Ow_yBc9xRHktqZhTTmwI_l4/edit?pli=1#gid=368658157)
- 硬體 ([Onshape](http://www.robotis.com/service/download.php?no=680),[Thingverse](https://www.thingiverse.com/thing:3069806))
- 軟體: Examples → turtlebot3 → turtlebot3_friends → turtlebot3_segway
- 影片
{%youtube VAY-0xBOE2g %}
## 11.4. TurtleBot3 Friends: Conveyor 輸送車
![](https://i.imgur.com/NTYi2RL.png)
- 類型: 4 輪輸送車
- 特色: 通過克服燃料消耗的機制,4 接頭和 4 輪將是運輸界的未來技術。
- 組件: 8 個 Dynamixel X430 智能馬達(4 個轉向用,4 個驅動用),一個 OpenCR 控制板,一個 RC-100 遙控器附 BT-410 藍芽模組,TB3 機殼組及電池,3D 列印機殼。
- [BOM 表](https://docs.google.com/spreadsheets/d/1vbIFMRJMbyOd2D6BtwV1Ow_yBc9xRHktqZhTTmwI_l4/edit?pli=1#gid=0)
- 硬體 ([Onshape](http://www.robotis.com/service/download.php?no=681),[Thingverse](https://www.thingiverse.com/thing:3069758))
- 軟體: Examples → turtlebot3 → turtlebot3_friends → turtlebot3_conveyor
- 影片
{%youtube uv2faO7GhXc %}
## 11.5. TurtleBot3 Friends: Monster 怪獸四驅車
![](https://i.imgur.com/yLdnCi8.png)
- 類型: 4 輪驅動車
- 特色: 4 個大輪子可在崎嶇的地形中保持強悍,甚至穿越高度差很大的地形。
- 組件: 4 個 Dynamixel X430 智能馬達(全部都供驅動用),一個 OpenCR 控制板,一個 RC-100 遙控器附 BT-410 藍芽模組,TB3 機殼組及電池,3D 列印機殼。
- [BOM 表](https://docs.google.com/spreadsheets/d/1vbIFMRJMbyOd2D6BtwV1Ow_yBc9xRHktqZhTTmwI_l4/edit?pli=1#gid=46862313)
- 硬體 ([Onshape](http://www.robotis.com/service/download.php?no=682),[Thingverse](https://www.thingiverse.com/thing:3069796))
- 軟體: Examples → turtlebot3 → turtlebot3_friends → turtlebot3_monster
- 影片
{%youtube UqdwGLH1-cA %}
## 11.6. TurtleBot3 Friends: Tank 履帶車
![](https://i.imgur.com/uc2u8VS.png)
- 類型: Caterpillar 履帶車
- 特色: 由鏈輪連接而組合成的履帶車,在崎嶇的地形中變得很堅固。
- 組件: 2 個 Dynamixel X430 智能馬達(全都驅動用),一個 OpenCR 控制板,一個 RC-100 遙控器附 BT-410 藍芽模組,TB3 機殼組及電池,履帶包,3D 列印機殼。
- [BOM 表](https://docs.google.com/spreadsheets/d/1vbIFMRJMbyOd2D6BtwV1Ow_yBc9xRHktqZhTTmwI_l4/edit?pli=1#gid=146214313)
- 硬體 ([Onshape](http://www.robotis.com/service/download.php?no=683),[Thingverse](https://www.thingiverse.com/thing:3069755))
- 軟體: Examples → turtlebot3 → turtlebot3_friends → turtlebot3_tank
- 影片
{%youtube vndnwpVEpVE %}
## 11.7. TurtleBot3 Friends: Omni 全向輪
![](https://i.imgur.com/MGu7HkR.png)
- 類型: Omni wheel 全向輪
- 特色: 全向輪在車輪圓周有額外的滾輪,可以橫向驅動。
- 組件: 3 個 Dynamixel X430 智能馬達(全都驅動用),一個 OpenCR 控制板,一個 RC-100 遙控器附 BT-410 藍芽模組,TB3 機殼組及電池,3D 列印機殼。
- [BOM 表](https://docs.google.com/spreadsheets/d/1vbIFMRJMbyOd2D6BtwV1Ow_yBc9xRHktqZhTTmwI_l4/edit?pli=1#gid=381353368)
- 硬體 ([Onshape](http://www.robotis.com/service/download.php?no=684),[Thingverse](https://www.thingiverse.com/thing:3069809))
- 軟體: Examples → turtlebot3 → turtlebot3_friends → turtlebot3_omni
- 影片
{%youtube r8wRACM_ZbE %}
## 11.8. TurtleBot3 Friends: Mecanum 萬向輪
![](https://i.imgur.com/24wkG2h.png)
- 類型: Mecanum wheel 萬向輪(or 麥克納姆輪)
- 特色: 萬向輪在車輪圓周有額外的滾輪,可以橫向驅動(通常是 4 個萬向輪)
- 組件: 4 個 Dynamixel X430 智能馬達(全部都驅動用),一個 OpenCR 控制板,一個 RC-100 遙控器附 BT-410 藍芽模組,TB3 機殼組及電池,3D 列印機殼。
- [BOM 表](https://docs.google.com/spreadsheets/d/1vbIFMRJMbyOd2D6BtwV1Ow_yBc9xRHktqZhTTmwI_l4/edit#gid=953634249)
- 硬體 ([Onshape](http://www.robotis.com/service/download.php?no=685),[Thingverse](https://www.thingiverse.com/thing:3069811))
- 軟體: Examples → turtlebot3 → turtlebot3_friends → turtlebot3_mechanum
- 影片: 參考上節 TB3 改裝 7: Omni 全向輪影片
## 11.9. TurtleBot3 Friends: Bike 三輪摩托車
![](https://i.imgur.com/QPxly4g.png)
- 類型: 3-DOF Motorcycle 三輪摩托車
- 特色: 可愛的三輪 bikey,在 “Car” 電影中以 “Car” 的兄弟出現。
- 組件: 3 個 Dynamixel X430 智能馬達(1個方向盤用,2 個驅動用),一個 OpenCR 控制板,一個 RC-100 遙控器附 BT-410 藍芽模組,TB3 機殼組及電池,3D 列印機殼。
- [BOM 表](https://docs.google.com/spreadsheets/d/1vbIFMRJMbyOd2D6BtwV1Ow_yBc9xRHktqZhTTmwI_l4/edit?pli=1#gid=107279947)
- 硬體 ([OnShape](http://www.robotis.com/service/download.php?no=686),[Thingverse](https://www.thingiverse.com/thing:3069817))
- 軟體: Examples → turtlebot3 → turtlebot3_friends → turtlebot3_bike
- 影片: 請參考上方 TB3 改裝 1: Car 小車及 TB3 改裝 5: Monster 怪獸四驅車的影片
## 11.10. TurtleBot3 Friends: Road Train 聯結車
![](https://i.imgur.com/II6iWgz.png)
- 類型: Road train 聯結車
- 特色: 聯結車可以連接多個拖板車,它可以提供多樣的服務!
- 組件: 2 個 Dynamixel X430 智能馬達(2 個都驅動用),一個 OpenCR 控制板,一個 RC-100 遙控器附 BT-410 藍芽模組,TB3 機殼組及電池,3D 列印機殼。
- [BOM 表](https://docs.google.com/spreadsheets/d/1vbIFMRJMbyOd2D6BtwV1Ow_yBc9xRHktqZhTTmwI_l4/edit#gid=1473715654)
- 硬體 ([OnShape](http://www.robotis.com/service/download.php?no=687),[Thingverse](https://www.thingiverse.com/thing:3069804))
- 軟體: Examples → turtlebot3 → turtlebot3_friends → turtlebot3_road_train
- 影片
{%youtube uhkq1w4YoEE %}
## 11.11. TurtleBot3 Friends: Real TurtleBot 真烏龜
![](https://i.imgur.com/gHXG4xm.png)
- 類型: 8 自由度四足機器人 (真烏龜造型)
- 特色: 真烏龜造型機器人會受到大部份烏龜愛護粉絲的歡迎!.
- 組件: 10 個 Dynamixel X430 智能馬達(4 個腿關節用,4 個肩關節用,2 個頭部用),一個 OpenCR 控制板,一個 RC-100 遙控器附 BT-410 藍芽模組,TB3 機殼組及電池,3D 列印機殼。
- [BOM 表](https://docs.google.com/spreadsheets/d/1vbIFMRJMbyOd2D6BtwV1Ow_yBc9xRHktqZhTTmwI_l4/edit#gid=1862775028)
- 硬體 ([OnShape](http://www.robotis.com/service/download.php?no=688),[Thingverse](https://www.thingiverse.com/thing:3069748))
- 軟體: Examples → turtlebot3 → turtlebot3_friends → turtlebot3_realturtlebot
- 影片
{%youtube KNWkAe0ob9g %}
{%youtube vort-z9HDlU %}
## 11.12. TurtleBot3 Friends: Carrier 多層運送車
![](https://i.imgur.com/Nbcy9zk.png)
- 類型: 2 輪移動機器人平台可作為服務型機器人用
- 特色: 2 輪式移動平台將為您提供任何想要的服務。
- 組件: A TurtleBot3 Waffle Pi, 第 4 層用到 6 個 supports, 第 5 層也需 6 個 supports, 每一層由多片層板組合, 客制的 3D 列印大車輪及滾珠輪
- [BOM 表](https://docs.google.com/spreadsheets/d/1vbIFMRJMbyOd2D6BtwV1Ow_yBc9xRHktqZhTTmwI_l4/edit#gid=71921372)
- 硬體 ([OnShape](http://www.robotis.com/service/download.php?no=689),[Thingverse](https://www.thingiverse.com/thing:3069815))
- 軟體: Examples → turtlebot3 → turtlebot3_waffle → turtlebot3_waffle
- 影片
{%youtube 5NYdgnzxykc %}
{%youtube u7qb8xiSiNg %}
# **12. Learn 學習資源課程**
---
## 12.1. Amazon AWS RoboMaker 使用 TurtleBot3
{%youtube U1ukEpzKCYY %}
[AWS RoboMaker](https://aws.amazon.com/robomaker/?nc1=h_ls) 是一項 Amazon 的服務,可讓你輕鬆輕鬆地大規模的開發,測試和部署智能機器人應用程序。RoboMaker 擴展了最廣泛使用的開源機器人技術軟體框架,即 ROS 機器人作業系統,並具有與雲端服務的連接性。這包括 AWS 機器學習服務,監控服務和分析服務,這些服務使機器人能夠串流數據,進行導航,溝通交流,理解和學習。RoboMaker 提供了用於應用程序開發的機器人技術開發環境,用於加速應用程序測試的機器人技術模擬服務,以及用於遠端應用程序部署,更新和管理的機器人技術車隊管理服務。
- [Developer Guide 開發者指南](https://docs.aws.amazon.com/robomaker/latest/dg/what-is-robomaker.html)
### 12.1.1. AWS RoboMaker 範例使用 TB3
- [**AWS RoboMaker – Develop, Test, Deploy, and Manage Intelligent Robotics Apps**](https://aws.amazon.com/blogs/aws/aws-robomaker-develop-test-deploy-and-manage-intelligent-robotics-apps/)
![](https://emanual.robotis.com/assets/images/platform/turtlebot3/projects/robo_library_gazebo_1.gif)
### 12.1.2. AWS RoboMaker 強化學習範例使用 TB3
- [**How to Train a Robot Using Reinforcement Learning**](https://aws.amazon.com/robomaker/resources/train-a-robot-using-reinforcement-learning-project/)
## 12.2 透過 Matlab 蒐集數據
感謝 [Sebastian Castro](https://kr.mathworks.com/matlabcentral/profile/authors/3069683),MathWorks 公司的機器人及 AI 專家,提供了 Matlab 跟 ROS 使用的教學材料。
這個貼文 [How Do Autonomous Systems “See”?](https://blogs.mathworks.com/racing-lounge/2018/09/12/autonomous-systems-sensors/) 很深入的說明了 Matlab 跟 ROS 的結合;尤其是 TB3 AutoRace 做自動駕駛這部分。
![](https://i.imgur.com/oLjXMZl.png)
透過 Matlab 做障礙物偵測
**參考**
- [Getting Started with MATLAB, Simulink, and ROS](https://blogs.mathworks.com/racing-lounge/2017/11/08/matlab-simulink-ros/)
## 12.3. The Construct 線上教學網站
**MASTER WITH ROS: TurtleBot3** 課程:是由 [the Construct](http://www.theconstructsim.com/) 線上教學網站所製作的 TurtleBot3 線上課程。在本課程中,你將學習如何開始使用 TurtleBot3 機器人,探索其功能性,以及如何構建有趣的 ROS 應用程式。如果你想了解 ROS 的更多訊息,請參考 [ROBOT IGNITE ACADEMY](http://www.theconstructsim.com/construct-learn-develop-robots-using-ros/robotigniteacademy_learnros/) 學院網站,其中包含一系列與線上模擬相關的在線 ROS 教程,為您提供了解和創建以 ROS 為基礎的機器人技術開發的工具和知識。
### 12.3.1. MASTER WITH ROS: TurtleBot3 (英文課程)
你可從 [MASTERING WITH ROS: TurtleBot3 (Python)](http://www.theconstructsim.com/construct-learn-develop-robots-using-ros/robotigniteacademy_learnros/ros-courses-library/mastering-with-ros-turtlebot3/) 課程學到:
1. TurtleBot3 機器人的基本使用和控制 (Basic Usage and control of the TurtleBot3 robot)
2. 如何使用 TurtleBot3 執行導航(How to perform Navigation with TurtleBot3)
3. TurtleBot3 循線走 (Follow a line with TurtleBot3)
4. 用 TurtleBot3 進行物體識別 (Object Recognition with TurtleBot3)
5. 使用 MoveIt 來為 TurtleBot3 做運動規劃 (Motion Planning in Moveit with TurtleBot3)
6. 抓取 (Grasping with TurtleBot3)
![](https://i.imgur.com/v2yVW6F.png)
### 12.3.2. 使用 RDS v2.0 在 5 分鐘內進行 TurtleBot3 模擬
{%youtube 8wg2i297MXU %}
### 12.3.3. TurtleBot3 訂閱光達掃描
{%youtube 2i_iRhzIPfo %}
## 12.4. TurtleBot3 Blockly
用 Google Blockly 語言來操作 TurtleBot3 (本教程由 [Dabit Industries](https://dabit.industries/) 開發)
- [Blockly Wiki 網頁](https://turtlebot-3-blockly-wiki.readthedocs.io/en/latest/):有關如何使用 Blockly(免費和開源軟件)來為 TurtleBot3 編程的詳細文檔。
![](https://emanual.robotis.com/assets/images/platform/turtlebot3/learn/turtlebot3_blockly_dabit_industries.gif)
## 12.5. TurtleBot3 Simulation on ROS Indigo
在 Ubuntu 14.04 下的 TurtleBot3 模擬器 (本教程由 [Cyaninfinite](http://cyaninfinite.com/) 開發)
- [教程文件](http://cyaninfinite.com/tutorials/installing-tb3-simulator-in-ubuntu14-04/)
## 12.6. Youtube 影片課程
這個 ROS 課程是一個 ROS 機器人編程指南,它基於我們從 ROS 專案項目中所積累的經驗,如 TurtleBot3,OpenCR 控制器和 OpenManipulator 機器手臂。 我們試圖將課程編排為一本綜合性指南,涵蓋 ROS 初學者所需的所有方面。包括嵌入式系統,移動機器人和用 ROS 編程的機器人手臂等主題。對於那些不熟悉 ROS 的人,整個課程都有註腳,提供網路上的更多信息。 通過這些 ROS 課程和書籍,我們希望更多的人能了解,並參與提出對機器人技術不斷前進的整體知識。
- Youtube 課程 01 影片(英文)
{%youtube 1tqYrWqrbC8 %}
- Youtube 課程 10 影片(韓文)
{%youtube rV-POzbzoHc %}
- [ROS 課程播放列表(英文)](https://www.youtube.com/playlist?list=PLRG6WP3c31_U7TFGduEIJWVtkOw6AJjFf)
- [ROS 課程播放列表(韓文)](https://www.youtube.com/playlist?list=PLRG6WP3c31_VIFtFAxSke2NG_DumVZPgw)
## 12.7. 實體書
![](https://i.imgur.com/Sxatm9Q.jpg)
此書的讀者群:這本書是為了希望基於 ROS(機器人操作系統)來學習機器人編程的大學生和研究生,以及從事機器人開發專案或軟體編程的專業研究人員和工程師而寫的。 我們試圖提供我們在使用 TurtleBot3 和 OpenManipulator 時所學到的詳細信息。我們希望本書能夠成為 ROS 初學者的完整手冊,更多人將為不斷發展的開放式機器人社區做出貢獻。
從本書你可以學習到:從基本概念到實作的機器人應用編程!
- ROS Kinetic Kame : Basic concept, instructions and tools
- How to use sensor and actuator packages on ROS
- Embedded board for ROS : OpenCR1.0
- SLAM & Navigation with TurtleBot3
- How to program a delivery robot using ROS Java
- OpenManipulator simulation using MoveIt! and Gazebo
**下載 "ROS 機器人編程" 簡中版** (使用 TurtleBot3 為 ROS 1 實作平台)
- [**ROS 機器人編程- 簡中 PDF**](https://www.dropbox.com/s/5cqhl5f17e2p1b5/ROS_Robot_Programming_CN.pdf?dl=0)
- [**ROS Robot Programming- 英文 PDF**](https://www.dropbox.com/s/x1bj7u878p2hgtq/ROS_Robot_Programming_EN.pdf?dl=0)
![](https://i.imgur.com/R8L7KfX.png)
| **簡中版章節列表** | | |
|:--------------------- |:----------------------- | --------------- |
| 1. 機器人軟件平台 | 6. ROS 工具 | 11. SLAM 和導航 |
| 2. 機器人操作系統 ROS | 7. ROS 編程基礎 | 12. 服務機器人 |
| 3. 搭建 ROS 開發環境 | 8. 機器人、傳感器和電機 | 13. 機械手臂 |
| 4. ROS 的重要概念 | 9. 嵌入式系統 | |
| 5. ROS 命令 | 10. 移動機器人 | |
## 12.7. TurtleBot3 影片分享
### 12.7.1. Open Source Team 的 TB3 影片
從 ROBOTIS Open Source Team 分享的 [**TB3 影片集錦列表**](https://www.youtube.com/playlist?list=PLRG6WP3c31_XI3wlvHlx2Mp8BYqgqDURU):
1. How to setup Jetson Nano for TurtleBot3 (ROS Melodic)
2. TurtleBot3 ROS1 Noetic Quick Start Guide for Noetic
3. TurtleBot3 ROS2 Quick Start for Foxy
4. TurtleBot3 & OpenMANIPULATOR-X Robotics Curriculum
5. TurtleBot3 59 ROS2 Dashing Diademata Navigation2
6. TurtleBot3 58 ROS2 Dashing Diademata Cartographer
7. TurtleBot3 56 ROS2 Cartographer
8. TurtleBot3 57 ROS2 Navigation2
9. TurtleBot3 55 ROS2 Tutorials
10. TurtleBot3 54 Additional Sensors with TurtleBot3
11. TurtleBot3 53 AutoRace on RDS
12. TurtleBot3 52 RDS Task Mission Tutorial
13. TurtleBot3 51 Machine Learning tutorial 3
14. TurtleBot3 50 Machine Learning tutorial 2
15. TurtleBot3 49 Machine Learning tutorial 1
16. TurtleBot3 48 Autorace with Gazebo
17. TurtleBot3 47 Reinforcement Learning
18. TurtleBot3 46 Pick and Place Tutorial by TurtleBot3 with OpenManipulator
19. TurtleBot3 45 TurtleBot3 with OpenManipulator
20. TurtleBot3 44 Automatic Parking Vision
21. TurtleBot3 40 TurtleBot3 AutoRace Tutorial 3: Parking
22. TurtleBot3 41 TurtleBot3 AutoRace Tutorial 4: Node Optimization
23. TurtleBot3 42 TurtleBot3 AutoRace Tutorial 5: Level Crossing
24. TurtleBot3 43 TurtleBot3 AutoRace Tutorial 6: Tunnel
25. TurtleBot3 39 TurtleBot3 AutoRace Tutorial 2: Lane Tracking
26. TurtleBot3 38 TurtleBot3 AutoRace Tutorial 1: Traffic Light
27. TurtleBot3 37 Gazebo Simulation Tutorial
28. TurtleBot3 36 Waffle Pi Camera
29. TurtleBot3 35 How to use LDS
30. TurtleBot3 34 Basic Operation
31. TurtleBot3 33 Automatic Parking
32. TurtleBot3 32 Auto Race RBiz Challenge 2017
33. TurtleBot3 31 Burger Assembly
34. TurtleBot3 01 Assembling and Example
35. TurtleBot3 02 SLAM
36. TurtleBot3 04 Gmapping and Cartographer
37. TurtleBot3 05 Manipulator X6 RViz
38. TurtleBot3 03 Navigation
39. TurtleBot3 06 Payload
40. TurtleBot3 07 Friends - Conveyor
41. TurtleBot3 08 Teleoperation Example
42. TurtleBot3 09 SLAM using Gmapping and Cartographer
43. TurtleBot3 10 Friends - Real TurtleBot
44. TurtleBot3 11 Friends - Real TurtleBot meets R2D2
45. TurtleBot3 12 Friends - Omni & Mecanum
46. TurtleBot3 13 Friends - Car
47. TurtleBot3 14 Friends - Tank
48. TurtleBot3 15 Assembling the TurtleBot3 Basic
49. TurtleBot3 16 Assembling the TurtleBot3 Premium
50. TurtleBot3 17 Friends - Segway
51. TurtleBot3 18 Friends - Monster
52. TurtleBot3 19 Friends - Road Train
53. TurtleBot3 20 Friends - OpenManipulator
54. TurtleBot3 21 Friends - Auto
55. TurtleBot3 22 Hardware
56. TurtleBot3 23 Fake Node
57. TurtleBot3 24 Intel® RealSense™ Example
58. TurtleBot3 25 Gazebo Simulator Example
59. TurtleBot3 26 Laser Distance Sensor (LDS) Example
60. TurtleBot3 27 SLAM Example
61. TurtleBot3 28 Navigation Example
62. TurtleBot3 29 Friends Example
63. TurtleBot3 30 Follow Demo
### 12.7.2. ROBOTIS Channel 的 TB3 影片
從 ROBOTIS Channel 分享的 [**TB3 影片集錦**](https://www.youtube.com/playlist?list=PLvaBFX_ny57Tetu8x5AEe8kNIRCzfpHX9):
* [Turtlebot 3 Navigation]
{%youtube lOZmFC79S6A %}
* [Turtlebot 3 SLAM]
{%youtube hX6pFcfr29c %}
* [Turtlebot 3 assembly and examples]
{%youtube r3oNIWex8a0 %}
* [TurtleBot3 AutoRace @RobotWorld 2017 R-BIZ Challenge]
{%youtube DWDBAHHQi_k %}
* [TurtleBot3 AutoRace TestDrive 2017 (RBIZ @ RobotWorld)]
{%youtube 9Wnu8If1eS4 %}
* [TurtleBot3 Delivery Service Demo @ICRA2017 (2)]
{%youtube u7qb8xiSiNg %}
* [TurtleBot3 Delivery Service Demo @ICRA2017 (1)]
{%youtube 5NYdgnzxykc %}
* [TurtleBot3 Following Demo @ICRA2017]
{%youtube cM_nAfgvtzE %}
* [TurtleBot3 @ICRA]
{%youtube dhOWsLT20dg %}
* [TurtleBot3 - Behind Scenes]
{%youtube jFvEGKkdOqM %}
* [TurtleBot3 - Official Product Video]
{%youtube 9OC3J53RUsk %}
### 12.7.3. TB3 的一些有趣專案項目介紹
#### 12.7.3.1 TB3 協作專案
TurtleBot3 是一項多個合作夥伴協作專案的成果,由 Open Robotics, ROBOTIS, 及許多夥伴如 The Construct, Intel, Onshape, OROCA, AuTURBO, ROS in Robotclub Malaysia, Astana Digital, Polariant Experiment, Tokyo University of Agriculture and Technology-GVlab, Networked Control Robotics Lab at National Chiao Tung University, SIM Group at TU Darmstadt. Open Robotics 負責軟體跟社群活動,而 ROBOTIS 負責生產跟全球行銷。
這個 TurtleBot3 協作專案最重要的部分是基於 open source 開源的軟體,硬體和內容。我們鼓勵更多的合作夥伴和研究合作者能參與這個專案,以豐富機器人領域。所以我們準備了這個頁面。本章節介紹了 TurtleBot3 合作夥伴和研究合作者的一些值得讚賞的專案。
- TurtleBot3 提供者
![](https://i.imgur.com/T4kLRkD.png)
- TurtleBot3 合作夥伴及研究合作者
![](https://i.imgur.com/c4mttJQ.png)
- [合作夥伴的網頁連結](https://www.turtlebot.com/partners)
- TurtleBot3 各地區授權代理商
![](https://i.imgur.com/QlGLPLX.png)
- [各地區代理商的網頁連結](https://www.turtlebot.com/partners)
- **採智科技為台灣 TurtleBot3 官方唯一授權代理商**
#### 12.7.3.2. 一些有趣的 TB3 個人專案
**[TurtleBot3 Autorace Simulation Circuit]**
- by Fabio Falezza
- 2018-06-27 Youtube 影片
{%youtube FR27W19rrYA %}
**[Multi-robot exploration]**
- by Eric Schneider
- 2018-06-26 Youtube 影片
{%youtube rE2Ea8R8fP0 %}
**[turtlebot3 ros move base gazebo dwa planner]**
- by Hyunok Lee
- [Source Code](https://github.com/hyunoklee/gazebo_industrial)
- 2018-06-23 Youtube 影片
{%youtube 0pigUC3L-VQ %}
**[Tutoriel TurtleBot3/ROS/Docker/Darknet pour mac]**
- by Christophe Saint-Jean
- 2018-06-21 Youtube 影片
{%youtube s1No22-vz28 %}
**[TurtleBot3 Automatic Obstacle Avoidance]**
- by 余嘉浩
- 2018-06-14 Youtube 影片
{%youtube 0L2c4xOAhFg %}
**[Robotclub TB3 (Episode 4): Track and push color balls to goals with avoiding obstacles]**
- by ROS in Robotclub Malaysia
- 2018-06-11 Youtube 影片
{%youtube 78IMph18GX0 %}
**[TurtleBot3 SLAM (Gmapping) & Navigation (AMCL)]**
- by oeyyey
- 2018-06-08 Youtube 影片
{%youtube HWs49FMT6Uk %}
**[Robotclub TB3 (Episode 3): Track and push color balls to goals]**
- by ROS in Robotclub Malaysia
- 2018-05-31 Youtube 影片
{%youtube zinnrD_oSaU %}
**[Robotclub TB3 (Episode 2): Track and push ball to goal]**
- by ROS in Robotclub Malaysia
- 2018-05-17 Youtube 影片
{%youtube nCL6YlAlYm4 %}
**[Robotclub TB3 (Episode 1) : Ball Tracking]**
- by ROS in Robotclub Malaysia
- 2018-05-07 Youtube 影片
{%youtube RgOvX3rUsI4 %}
**[TurtleBot3 Maze Solving at FIRA Malaysia 2018]**
- by Arif Rahman
- 2018-05-01 Youtube 影片
{%youtube 5XERzM6ZfJg %}
**[TurtleBot3 Maze Explorer]**
- by Arif Rahman
- 2018-04-27 Youtube 影片
{%youtube 72SDxhgmnBg %}
**[PLS(Polarized Light Sensing) for Robotics]**
- by Polariant
- 2018-04-26 Youtube 影片
{%youtube 7hVTHFeXbpQ %}
**[TurtleBot3 ROS Intelligent Robot]**
- by Juan Jorge Garcia
- 2018-04-20 Youtube 影片
{%youtube 3w2kP3w7UkA %}
**[BallBot Project based on TurtleBot3]**
- by Simulation, Systemoptimierung und Robotik
- 2018-04-19 Youtube 影片
{%youtube Eg_-n14h76Q %}
**[GdR TurtleBot Challenge 2018 - Final Match - “Monka” vs. “Ninja Turtle”]**
- by Simulation, Systemoptimierung und Robotik
- 2018-04-17 Youtube 影片
{%youtube OdLsbAMy7m0 %}
**[TurtleBot3 Maze Solving]**
- by Arif Rahman
- 2018-04-15 Youtube 影片
{%youtube AamHifhvNMs %}
**[TurtleBot3 with OpenTLD and IBVS Controller]**
- by 李俊明
- 2018-04-11 Youtube 影片
{%youtube QYSQT_AerXM %}
**[Autonomous Radiation Mapping - Carma Project]**
- by Benjamin Bird
- 2018-02-22 Youtube 影片
{%youtube KLq-p-TiVsY %}
**[Controlling TurtleBot 3 from Windows using NEP]**
- by Luis Enrique Coronado
- 2018-02-06 Youtube 影片
{%youtube r3jviQvMP7Q %}
**[Demo video of KAIST ‘Introduction to Robotics’ in 2017 Fall]**
- by KAIST
- 2018-01-10 Youtube 影片
{%youtube ZsoKUnk4P9k %}
**[TurtleBot3 Voice Teleop Testing]**
- by Arif Rahman
- 2017-11-30 Youtube 影片
{%youtube 2RVykNKscCE %}
**[TurtleBot3 Follows DashGo]**
- by Jiang Shan
- 2017-11-16 Youtube 影片
{%youtube inyqfimq1xs %}
**[TurtleBot3 Hector SLAM on Gazebo]**
- by Ebad Syed
- 2017-10-13 Youtube 影片
{%youtube 5MWUUti6--Y %}
**[Q-Learning to Obstacle Avoidance using TurtleBot3]**
by 許修瑋
- 2017-10-05 Youtube 影片
{%youtube p_qAsR0pEuQ %}
# **13. 更多產品資訊**
---
## 13.1. 附錄 - TB3 主要零件補充說明
### 13.1.1. Dynamixel 智能馬達
![](https://i.imgur.com/AAqMJr5.png)
#### 13.1.1.1. Overview
{%youtube gZWoyCvU-U8 %}
**DYNAMIXEL X** 系列是一種新型高性能網路化 AI 智能馬達,可廣泛用於構建各種類型的機器人,具有可靠性和可擴展性。
TurtleBot3 Burger,Waffle 和 Waffle Pi 機器人,因為它們有不同的要求,故採用兩種不同類型的 DYNAMIXEL X 系列智能馬達。DYNAMIXEL X 系列採共享設計,因此,用戶可以根據應用不同更換所需的智能馬達。
- X 系列的基本特色:
- 更佳的扭力、更小的體積
- 增強的耐用性和可擴展性
- 中空後蓋設計,可大幅降低連接線受到的擠壓 (3 向的串線方式),也可避免連接線脫落
- 組裝時螺絲可直接鎖入馬達外殼,不需要螺帽
- 鋁質外殼可增強散熱性
- 多種控制功能
- 6 種操作模式(扭力控制,速度控制,位置控制,延伸位置控制,基於電流之位置控制,PWM控制)
- 基於電流的扭力控制 (4096 格, 2.69mA/格)
- Profile control 規範控制可使用於規劃平順的動作(smooth motion planning)
- 軌跡數據和移動狀態 (In-Position 到位, 跟隨誤差等)
- 節能 (待機電流從 100 mA 減到 40 mA )
#### 13.1.1.2. 規格
規格如有不同,以 [ROBOTIS 網站](https://robotis.com)資料為主
| Items | XL430-W250 <br>(for Burger) | XM430-W210 (for <br>Waffle and Waffle Pi) |
|:---------- | ------------------------------------------ |:-------------------------------------------------------------------------- |
| 微控制器 | ST CORTEX-M3 (STM32F103C8 <br>@ 72Mhz, 32bit) | ST CORTEX-M3 (STM32F103C8 @ <br>72Mhz, 32bit) |
| 位置感測器 | Contactless Absolute <br>Encoder (12bit, 360°) | Contactless Absolute <br>Encoder (12bit, 360°) |
| 智能馬達 | Cored Motor | **Coreless Motor ** |
| Baud Rate | 9600 bps ~ 4.5 Mbps | 9600 bps ~ 4.5 Mbps |
| 控制模式 | Velocity, Position, Extended Position, PWM | Velocity, Position, Extended <br>Position, PWM, Current, Current-base Position |
| 齒輪比 | 258.5 : 1 | 212.6 : 1 |
| 靜止轉矩 | 1.0 N.m (@ 9V, 1A) | 2.7 N.m (@ 11.1V, 2.1A) |
| - | 1.4 N.m (@ 11.1V, 1.3A) | 3.0 N.m (@ 12V, 2.3A) |
| - | 1.5 N.m (@ 12V, 1.4A) | 3.7 N.m (@ 14.8V, 2.7A) |
| 無負載速度 | 47rpm (@ 9V) | 70rpm (@ 11.1V) |
| - | 57rpm (@ 11.1V) | 77rpm (@ 12V) |
| - | 61rpm (@ 12V) | 95rpm (@ 14.8V) |
| 通訊 | TTL Level Multi Drop Bus | TTL Level / RS485 Multi Drop Bus |
| 材質 | 工程塑材 | 金屬齒輪, 金屬(前中段外殼),<br> 工程塑材(後段外殼) |
| 待機電流 | 52mA | 40mA |
- 更多智能馬達的資訊,可以在 ROBOTIS e-Manual 網站找到
- [XL430-W250](https://emanual.robotis.com/docs/en/dxl/x/xl430-w250/) for TurtleBot3 Burger
- [XM430-W210](https://emanual.robotis.com/docs/en/dxl/x/xm430-w210/) for TurtleBot3 Waffle and Waffle Pi
#### 13.1.1.3. Dynamixel SDK 開發軟體
![](https://i.imgur.com/jiDe7vH.png)
ROBOTIS Dynamixel SDK 是一個軟體開發程式庫,為數據封包通信提供 Dynamixel 控制功能。 該 API 專為 Dynamixel 智能馬達和基於 Dynamixel 的機器人平台而設計。TurtleBot3 使用 OpenCR 中的 Dynamixel SDK 來控制智能馬達。
- 有關 Dynamixel SDK 的更多信息,請參見 ROBOTIS e-Manual 和 GitHub 連接。
- [Dynamixel SDK 線上手冊](http://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_sdk/overview/)
- [Dynamixel SDK 在 Github 上的軟體儲存庫](https://github.com/ROBOTIS-GIT/DynamixelSDK)
### 13.1.2. OpenCR 1.0 控制板
![](https://i.imgur.com/Q7f9nxb.jpg)
#### 13.1.2.1. Overview
OpenCR 是 TurtleBot3 的主控制板。OpenCR(Open-source Control module for ROS) 是為 ROS 嵌入式系統開發的,提供完全開源的硬體和軟體。關於控制板的一切資訊(如 Schematcs,PCB Gerber,BOM 表和 TurtleBot3 的韌體原始碼),都可以在用戶和 ROS 社群的開源許可下免費分享。
STM32F7 系列是 OpenCR 板內部的微控制器,它基於功能強大的 ARM Cortex-M7 具浮點單元的晶片。OpenCR 的開發環境可從 Arduino IDE 到 Scratch 等面向年輕學生用戶,到為專家所提供的傳統韌體開發。
OpenCR 提供數位和類比輸入/輸出接腳,可與擴充板或各種感測器連接。此外OpenCR 還具有各種通信接口:USB 用於連接 PC,UART,SPI,I2C,CAN 則用於其他嵌入式設備。
使用 SBC 單板電腦時,OpenCR 可以提供最佳解決方案。它支持 SBC 和感測器的12V,5V,3.3V 電源輸出。它還支持電池和 SMPS 外接電源線之間的熱插拔電源輸入。
OpenCR 控制板將是實現嵌入式控制設計的最佳解決方案。
{%youtube -_kBfIS6wJs %}
#### 13.1.2.2. 規格
:::info
**備註**:OpenCR 控制板的熱插拔電源切換:外接電源變壓器(12V, 5A SMPS)跟電池之間的熱插拔功能,可實現 UPS 不斷電的特色。
:::
規格如有不同,以 ROBOTIS 網站資料為主
| Items | 規格 |
|:---------------------- | ---- |
| Microcontroller | STM32F746ZGT6 / 32-bit ARM Cortex®-M7 with FPU (216MHz, 462DMIPS) |
| Sensors |(Discontinued) Gyroscope 3Axis, Accelerometer 3Axis, Magnetometer 3Axis (MPU9250)<br>(New) 3-axis Gyroscope, 3-Axis Accelerometer, A Digital Motion Processor™ (ICM-20648) |
| Programmer | ARM Cortex 10pin JTAG/SWD connector<br>USB Device Firmware Upgrade (DFU)<br>Serial |
| Extension pins | 32 pins (L 14, R 18) *Arduino connectivity<br>Sensor module x 4 pins<br>Extension connector x 18 pins |
| Communication circuits | USB (Micro-B USB connector/USB 2.0/Host/Peripheral/OTG)<br>TTL (B3B-EH-A / DYNAMIXEL)<br>RS485 (B4B-EH-A / DYNAMIXEL)<br>UART x 2 (20010WS-04)<br>CAN (20010WS-04) |
| LEDs and buttons | LD2 (red/green) : USB communication<br>User LED x 4 : LD3 (red), LD4 (green), LD5 (blue)<br>User button x 2 |
| Powers | External input source<br>5 V (USB VBUS), 7-24 V (Battery or SMPS)<br>Default battery : LI-PO 11.1V 1,800mAh 19.98Wh<br>Default SMPS: 12V 5A<br> External output source<br>12V@1A(SMW250-02), 5V@4A(5267-02A), 3.3V@800mA(20010WS-02)<br>External battery Port for RTC (Real Time Clock) (Molex 53047-0210)<br>Power LED: LD1 (red, 3.3 V power on)<br>Reset button x 1 (for power reset of board)<br>Power on/off switch x 1 |
| Dimensions | 105(W) X 75(D) mm |
| Mass | 60g |
:::info
**備註**: MPU9250 sensor has been replaced with ICM-20648, since 2020, as MPU9250 is discontinued to produce.
:::
#### 13.1.2.3. 使用指南
- 執行 turtlebot3_core 節點
```
$ rosrun rosserial_python serial_node.py __name:=turtlebot3_core _port:=/dev/ttyACM0 _baud:=115200
```
- 測試
```
$ rostopic echo /imu
seq: 179
stamp:
secs: 1486448047
nsecs: 147523921
frame_id: imu_link
orientation:
x: 0.0165222994983
y: -0.0212152898312
z: 0.276503056288
w: 0.960632443428
orientation_covariance: [0.0024999999441206455, 0.0, 0.0, 0.0, 0.0024999999441206455, 0.0, 0.0, 0.0, 0.0024999999441206455]
angular_velocity:
x: 2.0
y: 1.0
z: -1.0
angular_velocity_covariance: [0.019999999552965164, 0.0, 0.0, 0.0, 0.019999999552965164, 0.0, 0.0, 0.0, 0.019999999552965164]
linear_acceleration:
x: 528.0
y: 295.0
z: 16648.0
linear_acceleration_covariance: [0.03999999910593033, 0.0, 0.0, 0.0, 0.03999999910593033, 0.0, 0.0, 0.0, 0.03999999910593033]
---
```
- Debugging 偵錯
turtlebot3_core.ino 包括了偵錯程式碼以檢查測距數據,連接的感測器及 TurtleBot3 或 Dynamixels 智能馬達的狀態。這可能有助於你實作程式碼,並在沒有 ROS 連接的情況下對其進行測試。
**第一步**: 連接 LN-101 或任何 USB to Serial 轉接器
![](https://i.imgur.com/muEhh8H.png)
**第二步**: 開啟 turtlebot3_core_config.h 檔,啟動 [DEBUG](https://github.com/ROBOTIS-GIT/OpenCR/blob/develop/arduino/opencr_arduino/opencr/libraries/turtlebot3/examples/turtlebot3_burger/turtlebot3_core/turtlebot3_core_config.h#L73)。之後上傳到 OpenCR 上。
**第三步**: 連接轉接器到 OpenCR 的 UART2
**第四步**: 下載 minicom 及設定 baudrate 57600 和 port name
```
$ sudo apt-get install minicom
```
```
$ minicom -s
```
**第五步**: 按 OpenCR 板上的 reset 鍵,你會看到 turtlebot3_core.ino 啟動及一些數據
```
Success to init Motor Driver
Success to init Sensor
Success to init Diagnosis
Success to init Controller
---------------------------------------
EXTERNAL SENSORS
---------------------------------------
Bumper : 2
Cliff : 204.00
Sonar : 1.00
Illumination : 480.00
---------------------------------------
OpenCR SENSORS
---------------------------------------
Battery : 12.15
Button : 0
IMU :
w : 1.00
x : 0.00
y : -0.00
z : 0.00
---------------------------------------
DYNAMIXELS
---------------------------------------
Torque : 1
Encoder(left) : 876
Encoder(right) : 4001
---------------------------------------
TurtleBot3
---------------------------------------
Odometry :
x : 0.00
y : 0.00
theta : 0.00
```
- 如何修改 ROS 程式庫的程式碼
可以在以下路徑中修改 ROS 程式庫。
- [Your/Arduino/Board/Package/Directory/OpenCR/hardware/OpenCR/Version/libraries/turtlebot3](https://github.com/ROBOTIS-GIT/OpenCR/tree/master/arduino/opencr_arduino/opencr/libraries/turtlebot3)
- [Your/Arduino/Board/Package/Directory/OpenCR/hardware/OpenCR/Version/libraries/turtlebot3_ros_lib](https://github.com/ROBOTIS-GIT/OpenCR/tree/master/arduino/opencr_arduino/opencr/libraries/turtlebot3_ros_lib)
如果要在 sketch 資料夾中修改它,請將上述兩個資料夾移動到 “sketchbook/libraries” 資料夾下。
- 如何增加 topic 訊息
對一般 topic 標頭檔,你可執行以下在 [rosserial tutorial](http://wiki.ros.org/rosserial_arduino/Tutorials/Arduino%20IDE%20Setup) 的 section 2.2 的指令
```
$ cd <sketchbook>/libraries
$ rm -rf ros_lib
$ rosrun rosserial_arduino make_libraries.py .
```
由於上述命令生成的某些與硬體相關的程式庫與 OpenCR 控制板不同,因此必須只複製必要的主 topic 標頭文件。然後將生成的標頭文件複製到下面的路徑。
- [/turtlebot3_ros_lib](https://github.com/ROBOTIS-GIT/OpenCR/tree/master/arduino/opencr_arduino/opencr/libraries/turtlebot3_ros_lib)
#### 13.1.2.4. 開源軟體
你可以下載原始碼修改後分享給朋友
- OpenCR 開源軟體原始碼: https://github.com/ROBOTIS-GIT/OpenCR
#### 13.1.2.5. 開源硬體
如果想客製自己專屬的 OpenCR 控制板,可以下載必要的文件,如 PCB Gerber,BOM 表。當硬體電路板準備就緒時,韌體原始碼就可以燒錄到 MCU 中。
- OpenCR 開源硬體:https://github.com/ROBOTIS-GIT/OpenCR-Hardware
#### 13.1.2.6. 線上手冊
- [OpenCR e-manual](http://emanual.robotis.com/docs/en/parts/controller/opencr10/)
### 13.1.3. LDS-01 光達
:::info
自 2022 起,LDS-01 已停產,LDS-02 光達取代
:::
#### 13.1.3.1. Overview
![](https://i.imgur.com/G7ElZpj.png)
- 360° 光達感測器 LDS-01 是一款 2D 雷射掃描儀,能夠 360 度感測,收集機器人四周的數據,用於 SLAM 和導航。
- LDS-01 可用於 TurtleBot3 Burger,Waffle 和 Waffle Pi。
- 它支援 USB 接口(USB2LDS),易於在 PC 上安裝。
- 它支援嵌入式板的 UART 接口。
#### 13.1.3.2. 介紹影片
影片 1:如何使用 LDS-01 光達
- 內容:
1. Specification
2. ROS
3. Windows, Linux, macOS
4. Embedded Board
5. SLAM and Navigation
6. Self-Parking
7. 3D Sensing
8. for Makers 創客
{%youtube wmZQoTdtioY %}
影片 2:Laser Distance Sensor (LDS) Example
{%youtube 9oic8aT3wIc %}
影片3:ROS Hector SLAM demo using only a 360 Laser Distance Sensor LDS-01 made by HLDS (Hitachi-LG Data Storage)
{%youtube s7CflpA6TOo %}
影片4:ROS Gmapping and Cartographer SLAM demo using TurtleBot3 and 360 Laser Distance Sensor LDS-01
{%youtube lkW4-dG2BCY %}
#### 13.1.3.3. 規格
**一般規格**
| Item | 規格 |
|:------------------------ |:------------------------------------------------------------------ |
| Operating supply voltage | 5V DC ±5% |
| Light source | Semiconductor Laser Diode(λ=785nm) |
| LASER safety | IEC60825-1 Class 1 |
| Current consumption | 400mA or less (Rush current 1A) |
| Detection distance | 120mm ~ 3,500mm |
| Interface | 3.3V USART (230,400 bps) 42bytes per 6 degrees, Full Duplex option |
| Ambient Light Resistance | 10,000 lux or less |
| Sampling Rate | 1.8kHz |
| Dimensions | 69.5(W) X 95.5(D) X 39.5(H)mm |
| Mass | Under 125g |
**量測效能規格**
| Item | 規格 |
|:----------------------------------- |:------------- |
| Distance Range | 120 ~ 3,500mm |
| Distance Accuracy (120mm ~ 499mm) | ±15mm |
| Distance Accuracy(500mm ~ 3,500mm) | ±5.0% |
| Distance Precision(120mm ~ 499mm) | ±10mm |
| Distance Precision(500mm ~ 3,500mm) | ±3.5% |
| Scan Rate | 300±10 rpm |
| Angular Range | 360° |
| Angular Resolution | 1° |
#### 13.1.3.4. 詳細規格文件
以下連結包含有關基本性能,測量性能,機構佈局,光路,數據信息,接腳說明和指令的信息。
- 詳細規格 [PDF 文件](http://emanual.robotis.com/assets/docs/LDS_Basic_Specification.pdf)。
:::info
**備註**:用於 TurtleBot3 的 360° 雷射距離感測器 LDS-01 使用 molex 51021-0800 和 53048-0810 替代基本外殼和連接器。
:::
- [Connector for LDS] [Molex 51021-0800](http://www.molex.com/pdm_docs/sd/510210800_sd.pdf)
- [Connector for USB2LDS] [Molex 53048-0810](http://www.molex.com/pdm_docs/sd/530480810_sd.pdf)
#### 13.1.3.5. TB3 使用 LDS-01光達
LDS-01 光達是 TurtleBot3 Burger,Waffle,及 Waffle Pi 款使用的標配光達。
![](https://i.imgur.com/530gJWU.png)
#### 13.1.3.6. 使用指南 (for ROS)
我們提供 [LDS-01 光達的 ROS 套件](http://wiki.ros.org/hls_lfcd_lds_driver)。其硬體規格是 HLS(Hitachi-LG Sensor) LFCD LDS(Laser Distance Sensor),軟體是對應的 hls_lfcd_lds_driver。
:::info
**備註**:光達韌體自更新後(自 2017 年 10 月後),光達在供電後就直接運行。
:::
#### 13.1.3.7. 安裝
```
$ sudo apt-get install ros-kinetic-hls-lfcd-lds-driver
```
#### 13.1.3.8. 設定 LDS-01 權限
```
$ sudo chmod a+rw /dev/ttyUSB0
```
#### 13.1.3.9. 執行 hlds_laser_publisher Node
```
$ roslaunch hls_lfcd_lds_driver hlds_laser.launch
```
#### 13.1.3.10 在 RViz 中執行 hlds_laser_publisher Node
```
$ roslaunch hls_lfcd_lds_driver view_hlds_laser.launch
```
#### 13.1.3.11. 驅動程式的使用指南
- LDS-01 光達除了支援 ROS,也支援 Windows、Linux 及 MacOS 的開發環境
- 所需軟體是
- GCC(for Linux、MacOS),MinGW(for Windows)
- Boost Library(Lib for boost system,測試版本為 v1.66.0)
**下載驅動程式**
- 下載 LDS-01 driver
```
$ git clone https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git
```
- 或用瀏覽器直接由 github 儲存庫下載
- https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver
- 不同環境所需安裝相依軟體
- GCC(for Linux、MacOS),[MinGW](https://sourceforge.net/projects/mingw/files/)(for Windows)
- [Boost Library](http://www.boost.org/users/download/)
**Build**
- 下列的 makefile 指令是在 Linux 上用的。Windows 及 MacOS 的指令需根據相對應的開發環境。
```
$ cd hls_lfcd_lds_driver/applications/lds_driver/
$ make
```
**執行**
- 當執行 LDS-01 驅動程式後,你會在 terminal 上看到 raw data 原始數據。詳細資訊請參考原始碼。
```
$ ./lds_driver
r[359]=0.438000,r[358]=0.385000,r[357]=0.379000,...
```
#### 13.1.3.12 使用指南(for GUI 圖形介面)
- 們有提供基本的 GUI 圖形介面工具,可視覺化的檢查 LDS-01 的數據
- 工具軟體支援 Linux,Windows,及 MacOS
- 軟體安裝需要:
- Qt Creator and Libs (在 Qt Creator v4.5.0 及 Qt Libs v5.10.0 測試過。)
- GCC (for Linux and MacOS), MinGW (for Windows)。當安裝 Qt 時,可以一起安裝。
- Boost library (Lib for boost system,在 v1.66.0 測試過)
**下載**
- 下載 LDS-01 driver 及 GUI 圖形介面工具原始碼:
```
$ git clone https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git
```
- 或用瀏覽器直接由 github 儲存庫下載
- https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver
- 安裝所需軟體
- [Qt – Open Source Version](https://www.qt.io/download)
- GCC (for Linux and macOS), [MinGW](https://sourceforge.net/projects/mingw/files/) (for Windows)
- [Boost library](http://www.boost.org/users/download/)
**Build**
- 執行 Qt Creator
- 開啟檔案(Ctrl-O) lds_polar_graph.pro (hls_lfcd_lds_driver/applications/lds_polar_graph/lds_polar_graph.pro)
- 更改[輸入原始碼的 port 名稱](https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver/blob/cf866c6b80060ab9270a664d665d287afcca2c10/applications/lds_polar_graph/lds_polar_graph.cpp#L47)
- 開始 Build all (Ctrl-Shift-B)
**執行**
- 執行應用程式(Ctrl-R)
![](https://i.imgur.com/0ebk9Nm.png)
#### 13.1.3.13. 使用指南(for 內嵌控制板)
- 我們提供方法將 LDS-01 連接到內嵌控制板上
- LDS-01 光達的數據可以被內嵌控制板使用(如 OpenCR 或 Arduino),可以在下圖的 LCD 螢幕上以圖形顯示。
**準備**
- 如果沒有準備介面板來連接 LDS-01,你可以參考下圖,連接內嵌控制板的 UART及供電。
![](https://i.imgur.com/qswCnu5.png)
:::warning
**警示**:LDS-01 的佈線顏色可能與製造商的圖片不同。
:::
- OpenCR 內嵌控制板可透過 Arduino IDE 來開發及下載韌體。因此你必須事先安裝 Arduino IDE 及 OpenCR board 的套件。可參考下方連結:
- [install Arduino IDE 及 OpenCR 板](http://emanual.robotis.com/docs/en/parts/controller/opencr10/#arduino-ide)
**下載韌體及執行**
1. 在連接 USB 到 PC 後,在 Arduino IDE 選擇 Tools -> Board -> OpenCR Board
2. 更改 Tools -> Port 為連接到板子的 port
3. 在 Arduino IDE Examples,選擇 LDS-01 韌體(File -> Examples -> OpenCR -> Etc -> LDS -> drawLDS)
4. 點擊 Arduino IDE 的 Upload 圖示,顯示紅色圓圈來建立及下載韌體。當下載完成,韌體會自動執行。
{%youtube 7wKyW6yLNSg %}
#### 13.1.3.14. 認證
如有未列出的認證信息,請聯絡我們。
**FCC**
:::info
**備註**:本設備已經過測試,符合 FCC 規則第 15 部分對 B 類數位設備的限制。這些限制旨在提供合理的保護,防止在住宅區安裝中的有害干擾。本設備會產生,使用並輻射射頻能量,如果不按照說明進行安裝和使用,可能會對無線電通信造成有害干擾。但是,無法保證在特定安裝中不會發生干擾。如果此設備確實對無線電或電視接收造成有害干擾(可以通過關閉和打開設備來確定),建議用戶嘗試通過以下一種措施來改善干擾:
- 重新調整或擺放接收天線。
- 增加設備和接收器之間的距離。
- 將設備連接到與接收器連接的電路,分別在不同的電路插座上。
- 請諮詢經銷商或有經驗的無線電/電視技術人員以獲取幫助。
:::
:::warning
**警告**:未經製造商明確批准的任何更改或修改可能會使用戶失去操作該設備的授權。
:::
### 13.1.4. LDS-02 光達
自 2022 起,LDS-01光達已停產,以LDS-02取代
#### 13.1.4.1. Overview
![](https://i.imgur.com/ty3hxao.png)
- LDS-02 光達可 2D 360度掃描,蒐集機器人周遭數據,給 SLAM 及 Navigation 使用
- LDS-02 可直接給 TB3 Burger 及 Waffle Pi 使用
- LDS-02 只具有 Tx UART 介面
- 可使用 USB2LDS 轉接器連接到 PC 或 SBC 上
#### 13.1.4.2. 規格
:::info
規格如有差異,以 ROBOTIS 原廠數據為主
:::
**一般規格**
| Item | 規格 |
| -------- | -------- |
| Operating supply voltage | 5V DC ± 10% |
| PWM Frequency | 10 ~ 30 KHz (Square wave, High : 3.3V, Low : 0V) |
| PWM Duty Cycle | 0 ~ 100% |
| LASWER Wave Length | Low powered Infrared Laser (λ=793 nm) |
| LASER safety | Class I, 21 CFR 1040.10 and 1040.11 |
| Current consumption | 240 mA (Start up current 400 mA) |
| Detection distance | 160 ~ 8,000 mm |
| Interface | 3.3V USART (115200 bps, 8 data bits, no parity, 1 stop bit), Tx Only |
| Ambient Light Resistance | 25,000 lux |
| Life Time | 1,000 hrs |
| Sampling Rate | 2.3kHz (Fixed) |
| Operating Temperature | -10 ~ 40 °C |
| Storage Temperature | -30 ~ 70 °C |
| Dimensions | 70(W) X 90(D) X 42(H)mm |
| Mass | 131 g |
**量測效能規格**
| Item | 規格 |
| -------- | -------- |
| Distance Range | 160 ~ 8,000mm |
| Distance Accuracy (160 ~ 300 mm) | ±10mm |
| Distance Accuracy(300 ~ 6,000 mm) | ±3.0% |
| Distance Precision(6,000 ~ 8,000 mm) | ±5.0% |
| 1 Scan Frequency | 5Hz or above |
| Angular Range | 360 ° |
| 2 Angular Resolution | 1 ° |
:::info
**備註**:
1 Scan Frequency may vary by each product.
2 Due to the fixed sampling rate, the Angular Resolution may vary by the Scan Frequency.
:::
#### 13.1.4.3. Data Packet 數據封包
LDS-02採用單向通訊方式,一旦穩定工作就開始發送測量數據,無需下任何指令。
| Packet | 說明 | Example |
| -------- | -------- | -------- |
| Header | 0x54 | 0x54 |
| Length | 0x2C | 0x2C |
| Speed (2Byte) | Speed_L, Speed_H | 0x68, 0x08 |
| Start Angle (2Byte) | Angle_L, Angle_H | 0xAB, 0x7E |
| Data (36Byte) | Data | Data |
| End Angle (2Byte) | Angle_L, Angle_H | 0xBE, 0x82 |
| Timestamp (2Byte) | Time_L, Time_H | 0x3A, 0x1A |
| CRC | CRC | 0x50 |
- Packet Example
- Speed : 0x0868 (2152 °/s)
- Start Angle : 0x7EAB (32427 / 100 = 324.27 °)
- End Angle : 0x82BE (33470 / 100 = 334.70 °)
- Timestamp : 0x1A3A (6714 ms)
**Data (36Byte)** 是由 distance(2Byte) 及 confidence(1Byte) 共 12 個測量點所組成。如下
| 項目 | 說明 | Example |
| -------- | -------- | -------- |
| Point1 Distance (2Byte) | Distance_L, Distance_H | 0xE0, 0x00 |
| Point1 Confidence | Confidence | 0xE4 |
| Point2 Distance (2Byte) | Distance_L, Distance_H | 0xDC, 0x00 |
| Point2 Confidence | Confidence | 0xE2 |
| .. | .. | .. |
| Point12 Distance (2Byte) | Distance_L, Distance_H | 0xB0, 0x00 |
| Point12 Confidence | Confidence | 0xEA |
- Data Example
- Point1 Distance : 0xE0, 0x00 (224 mm)
- Point1 Confidence : 0xE4 (228)
- Point2 Distance : 0xDC, 0x00 (220 mm)
- Point2 Confidence : 0xE2 (226)
- Point12 Distance : 0xB0, 0x00 (176 mm)
- Point12 Confidence : 0xEA (234)
### 13.1.5. Intel RealSense R200 深度攝影機
Intel Realsense 是一個用於實現基於手勢的人機互動技術的平台。它由一系列消費者等級的 3D 攝影機和一個易於使用的機器感知程式庫組成。Intel RealSense R200 相機是一款 USB 3.0 設備,可提供彩色,深度和紅外光視頻串流。TurtleBot3 Waffle 款採用 Intel RealSense R200 來實現 3D SLAM 和導航,並且可以套用在各種產業應用,例如基於使用 RealSense 的創新主動式立體聲技術,所開發的手勢識別、物體辨識、場景辨識。
{%youtube V8VJUkWWaO8 %}
:::info
**備註**:
- 因 Intel RealSense R200 已停產,故 TB3 Waffle 款也已停售。此節之內容不予翻譯。如需參考,請直接訪問[**英文頁面**](http://emanual.robotis.com/docs/en/platform/turtlebot3/appendix_realsense/#appendix-realsense)。
- TurtleBot3 Waffle Pi 已改採樹莓派攝影機
:::
### 13.1.6. Raspberry Pi camera v2 樹莓派攝影機
![](https://i.imgur.com/3A1OvkP.png)
#### 13.1.6.1. Overview
Raspberry Pi Camera 模組 v2 於 2016 年 4 月取代了原有的相機模組。v2 Camera 模組具有 Sony IMX219 800 萬畫素感測器(與原始相機的 500 萬畫素 OmniVision OV5647 感測器相比)。Camera 模組可用於拍攝高清影片以及靜態照片。它對初學者來說很容易使用,對進階用戶也可以擴展他們的知識。網上有許多例子用於延時,慢動作和其他影片效果。您還可以使用與攝影機一起提供的程式庫來創建不同效果。
#### 13.1.6.2. 規格
**硬體規格**
| Items | Specifications |
| ------------------------------ |:----------------------------------- |
| Net price | $25 |
| Size | Around 25 × 24 × 9 mm |
| Weight | 3g |
| Still resolution | 8 Megapixels |
| Video modes | 1080p30, 720p60 and 640 × 480p60/90 |
| Linux integration | V4L2 driver available |
| C programming API | OpenMAX IL and others available |
| Sensor | Sony IMX219 |
| Sensor | 3280 × 2464 pixels |
| Sensor | 3.68 x 2.76 mm (4.6 mm diagonal) |
| Pixel size | 1.12 µm x 1.12 µm |
| Optical size | 1/4” |
| Full-frame SLR lens equivalent | 35 mm |
| S/N ratio | 36 dB |
| Dynamic range | 67 dB @ 8x gain |
| Sensitivity | 680 mV/lux-sec |
| Dark current | 16 mV/sec @ 60 C |
| Well capacity | 4.3 Ke- |
| Fixed focus | 1 m to infinity |
| Focal length | 3.04 mm |
| Horizontal field of view | 62.2 degrees |
| Vertical field of view | 48.8 degrees |
| Focal ratio (F-Stop) | 2.0 |
**硬體特色**
| 特色 | 是否可實現 |
|:----------------------------------------------------------------------------------- | ------ |
| Chief ray angle correction |Yes |
| Global and rolling shutter | Rolling shutter |
| Automatic exposure control (AEC) |No - done by ISP instead |
| Automatic white balance (AWB) |No - done by ISP instead |
| Automatic black level calibration (ABLC) |No - done by ISP instead |
| Automatic 50/60 Hz luminance detection | No - done by ISP instead |
| Frame rate up to 120 fps |Max 90fps. Limitations on frame size for<br> the higher frame rates (VGA only for above 47fps) |
| AEC/AGC 16-zone size/position/weight control |No - done by ISP instead |
| Mirror and flip |Yes |
| Cropping | No - done by ISP instead (except 1080p mode) |
| Lens correction |No - done by ISP instead |
| Defective pixel cancelling |No - done by ISP instead |
| 10-bit RAW RGB data | Yes - format conversions available via GPU |
| Support for LED and flash strobe mode | LED flash |
| Support for internal and external frame<br> synchronisation for frame exposure mode |No |
| Support for 2 × 2 binning for better<br>SNR in low light conditions |Anything output res below 1296 x 976 will<br> use the 2 x 2 binned mode |
| Support for horizontal and vertical<br> sub-sampling |Yes, via binning and skipping |
| On-chip phase lock loop (PLL) |Yes |
| Standard serial SCCB interface | Yes |
| Digital video port (DVP) parallel<br> output interface |No |
| MIPI interface (two lanes) |Yes |
| 32 bytes of embedded one-time <br>programmable (OTP) memory |No |
| Embedded 1.5V regulator for core power |Yes |
**軟體特色**
| 軟體特色 | 說明 |
| ----------------------------- |:-------------------------------------------------------------------------------------------------------------------------------------------------- |
| Picture formats | JPEG (accelerated), JPEG + RAW, GIF, BMP, PNG, YUV420, RGB888 |
| Video formats | raw h.264 (accelerated) |
| Effects | negative, solarise, posterize, whiteboard, blackboard, sketch, denoise, emboss, oilpaint, hatch, gpen, pastel, watercolour, film, blur, saturation |
| Exposure modes | auto, night, nightpreview, backlight, spotlight, sports, snow, beach, verylong, fixedfps, antishake, fireworks |
| Metering modes | average, spot, backlit, matrix |
| Automatic white balance modes | off, auto, sun, cloud, shade, tungsten, fluorescent, incandescent, flash, horizon |
| Triggers | Keypress, UNIX signal, timeout |
| Extra modes | demo, burst/timelapse, circular buffer, video with motion vectors, segmented video, live preview on 3D models |
**機構製圖**
- Camera 模組 v2 [PDF](https://www.raspberrypi.org/documentation/hardware/camera/rpi-cam-v2_1-dimensions.pdf)
- 詳細的規格文件:[Raspberry Pi Camera Module v2 型錄](https://www.raspberrypi.org/documentation/hardware/camera/README.md)
#### 13.1.6.3. 在 TB3 上使用 Raspberry Pi Camera
Raspberry Pi Camera V2 是 TurtleBot3 Waffle Pi 款的標配 camera。
![](https://i.imgur.com/DzJf5d4.png)
**介紹影片**
TB3 Waffle Pi 款是使用 Raspberry Pi Camera Module v2 為標配 camera。請參考下列影片。
{%youtube AyZ5lcz5IzM %}
#### 13.1.6.4. 使用指南
[Raspberry Pi Camera Packages](https://github.com/UbiquityRobotics/raspicam_node) 套件包支援在 ROS 上使用 Raspberry Pi Camera v1.x 及 v2.x 攝影機。以下表格列出安裝 Raspberry Pi Camera 所需之套件。在下節會介紹安裝方式。
| Package | Description |
| ------------------------------------------------------------------------ |:-------------------------------------------------------------------- |
| [Raspberry Pi Camera](https://github.com/UbiquityRobotics/raspicam_node) | Underlying library driver for communicating with Raspberry Pi Camera |
**安裝**
**[TB3 SBC 端]** 設定Camera硬體
```
$ sudo raspi-config
```
![](https://i.imgur.com/UA1NLBI.png)
選 3,Interfacing Options
![](https://i.imgur.com/YcKKG7X.png)
選 P1 Camera
![](https://i.imgur.com/wOXvWjB.png)
啟動 camera interface
![](https://i.imgur.com/spb5O7P.png)
![](https://i.imgur.com/Ql8zZuv.png)
Raspberry Pi 重啟後,使用以下指令測試系統安裝是否正確。
```
$ raspistill -v -o test.jpg
```
顯示器上應會從攝影機看到 5 秒的預覽畫面,然後照相後存檔為 test.jpg
**[TB3 SBC 端]**:下列指令可在 ROS 系統安裝相依的 Raspberry Pi Camera package
```
$ cd ~/catkin_ws/src
$ git clone https://github.com/UbiquityRobotics/raspicam_node.git
$ sudo apt-get install ros-kinetic-compressed-image-transport ros-kinetic-camera-info-manager
$ cd ~/catkin_ws && catkin_make
```
**執行 raspicam node 節點**
**[TB3 SBC 端]** 執行下列指令
```
$ roslaunch turtlebot3_bringup turtlebot3_rpicamera.launch
```
或是
```
$ roslaunch raspicam_node camerav2_1280x960.launch
```
當 raspicam node 在執行時,你可以啟動 rqt_image_view 來觀看由 camera 傳來的數據
:::warning
**警示**:在遠端電腦執行 Rviz 前,請先確認 Raspberry Pi 3 板跟遠端電腦已經連接好。
:::
**[Remote PC 端]** 執行下列指令
```
$ rqt_image_view
```
一旦 GUI 圖形應用程序出現在螢幕上,您可以從應用程序頂端的下拉選單中選擇與 Raspberry Pi Camera 相關的數據主題名稱。
#### 13.1.6.5. 參考資源
- [Raspberry Pi Camera Module 攝影機模組規格](https://www.raspberrypi.org/documentation/hardware/camera/README.md)
- [硬體設置](https://www.raspberrypi.org/documentation/configuration/camera.md)
- [軟體設置](https://www.raspberrypi.org/documentation/raspbian/applications/camera.md)
- [開始上手](https://projects.raspberrypi.org/en/projects/getting-started-with-picamera)
- [ROS Node](https://github.com/UbiquityRobotics/raspicam_node)
## 13.2. 相容之第三方設備
如果要使用第三方設備替換原有的 TB3 標配,請參考此章節。
### 13.2.1. Computer
- TB3 的主要 SBC 電腦是樹莓派3(Burger and Waffle Pi),Intel Joule 570x(Waffle)。TB3 的 SBC 單板電腦,有足夠效能,但使用者會需要更好的 CPU,使用 GPU,增加記憶體來滿足其他的需求。此章節說明如何替換 SBC。
- 下圖顯示不同款的第三方 SBC。每個 SBC 規格都不同。只要你能夠在第三方 SBC 上安裝 Linux 及 ROS,你就可以使用它做為 TB3 的主電腦。當然如 Intel NUC,mini PC,小筆電等體積小的電腦,也可以做為 TB3 的主電腦用。
![](https://i.imgur.com/AdWoq0r.png)
以下是 TB3 開發團隊有測試過的 SBC 列表:
- [Raspberry Pi 3](https://www.raspberrypi.org/products/)
- [Intel Joule 570x](https://ark.intel.com/products/96414/Intel-Joule-570x-Developer-Kit)
- [DragonBoard 410c](https://developer.qualcomm.com/hardware/dragonboard-410c)
- [NVIDIA Jetson TX2](https://developer.nvidia.com/embedded/buy/jetson-tx2-devkit)
- [UP Board](http://www.up-board.org/up/)
- [UP Core](http://www.up-board.org/upcore/)
- [LattePanda](https://www.lattepanda.com/)
- [ODROID-XU4](http://www.hardkernel.com/)
#### 13.2.1.1. 硬體組裝
- 大部分的 SBC 都可以用 TB3 內附的 PCB Support 組裝起來。你可以跟採智科技採購額外的 PCB Support,或者下載 [3D 檔](http://www.robotis.com/service/download.php?no=676)用 3D printer 列印出來使用。
![](https://i.imgur.com/LvcXMxP.png)
- 參考下圖,使用 PCB Support 對準 SBC 固定孔,將 SBC 固定到 TB3 的層板上
![](https://i.imgur.com/9sKvBh3.png)
#### 13.2.1.2. 電源
- 固定 SBC 簡單,為 SBC 供電不容易。你需要修改現有的 power cable,或是購買/自製符合 SBC 用的 power cable。
- TB3 提供 2 種 power cables。下圖左邊是給樹莓派用,右邊是給 Intel Joule 570x 用。power cable 須符合 SBC 的供電規格。OpenCR 有 5V(4A) 及 12V(1A) 兩種 power,是 SBC 常用的規格。
![](https://i.imgur.com/1VFed0b.png)
- SBC 的電源是下方 OpenCR pinmap 左側的三個連接器
![](https://i.imgur.com/4VTyQ3W.png)
### 13.2.2. 感測器
- TB3 Burger 的標配感測器有 360° 光達,9 軸 IMU,編碼器。TB3 Waffle 則多加 Intel RealSense 深度攝影機。TB3 Waffle Pi 則使用樹莓派鏡頭代替。
- 如果使用額外的感測器,你可以在將感測器連接到機器人後使用它。ROS 提供了一個開發環境,可以在其中使用上述感測器的驅動程序和軟體庫。但並非所有感測器都有支援 ROS 套件,但越來越多的感測器相關套件正在增加中。
![](https://i.imgur.com/1Hbxc26.png)
- 可以到 [ROS Wiki 的 Sensors Page](http://wiki.ros.org/Sensors) 看看有那些感測器支援 ROS
- 如果要添加類比感測器,可以接到 OpenCR 控制板上,如果要使用非 USB 或 Ethernet 介面的類比感測器,請參考下一章節。
## 13.3. 添加新感測器到 TB3 OpenCR 板
本節說明如何連接額外的感測器,如 IR、超音波、switch 開關等到 OpenCR 控制板。
### 13.3.1. Bumper 碰觸感測器
- 名稱: 碰觸感測器 Touch sensor (TS-10)
側視
![](https://i.imgur.com/o5zvlz8.png)
前視
![](https://i.imgur.com/qLteETG.png)
後視
![](https://i.imgur.com/8W1PPZ3.png)
- 預設 PIN
| Device |PIN |
| -------- | -------- |
| 前方感測器 | ROBOTIS_5-PIN 3 |
| 後方感測器 | ROBOTIS_5-PIN 4 |
:::info
如要使用別的 PIN,請參考 [OpenCR Pinmap](http://emanual.robotis.com/docs/en/parts/controller/opencr10/)
:::
- 執行範例 in TB3
:::warning
請記得要先啟動 TB3 後才執行範例
:::
[Remote PC] 啟動 bumper 檔
```
$ roslaunch turtlebot3_example turtlebot3_bumper.launch
```
- 在Arduino IDE下執行
此範例可在 Arduino IDE 內開啟
選擇 File -> Examples -> ROS -> 2. Sensors -> a_Bumper,上傳到 OpenCR
[Remote PC] 執行 ros serial_node package
```
$ rosrun rosserial_python serial_node.py __name:=turtlebot3_core _port:=/dev/ttyACM0 _baud:=115200
```
:::warning
Warning: 如果上傳範例到 OpenCR,則必須重新上傳 [turtlebot_core](http://emanual.robotis.com/docs/en/platform/turtlebot3/opencr_setup/#opencr-setup)
:::
### 13.3.2. IR 感測器
- 名稱: IR sensor (IRSS-10)
![](https://i.imgur.com/9kS8ZQA.png)
![](https://i.imgur.com/cdUK3NE.png)
- 預設 PIN
| Device |PIN |
| -------- | -------- |
| IR sensor | ROBOTIS_5-PIN 2 |
:::info
如要使用別的 PIN,請參考 [OpenCR Pinmap](http://emanual.robotis.com/docs/en/parts/controller/opencr10/)
:::
- 執行範例 in TB3
:::warning
請記得要先啟動 TB3 後才執行範例
:::
[Remote PC] 啟動 cliff launch 檔
```
$ roslaunch turtlebot3_example turtlebot3_cliff.launch
```
- 在Arduino IDE下執行
此範例可在 Arduino IDE 內開啟
選擇 File -> Examples -> ROS -> 2. Sensors -> b_Cliff,上傳到 OpenCR
[Remote PC] 執行 ros serial_node package
```
$ rosrun rosserial_python serial_node.py __name:=turtlebot3_core _port:=/dev/ttyACM0 _baud:=115200
```
### 13.3.3. Ultrasonic 超音波
- 名稱: 超音波感測器 (HC-SR04)
![](https://i.imgur.com/7Dp7kiI.png)
- 預設 PIN
| Device |PIN |
| -------- | -------- |
| Trigger | BDPIN_GPIO_1 |
| Echo | BDPIN_GPIO_2 |
:::info
如要使用別的 PIN,請參考 [OpenCR Pinmap](http://emanual.robotis.com/docs/en/parts/controller/opencr10/)
:::
- 執行範例 in TB3
:::warning
請記得要先啟動 TB3 後才執行範例
:::
[Remote PC] 啟動 sonar launch 檔
```
$ roslaunch turtlebot3_example turtlebot3_sonar.launch
```
- 在Arduino IDE下執行
此範例可在 Arduino IDE 內開啟
選擇 File -> Examples -> ROS -> 2. Sensors -> c_Ultrasonic,上傳到 OpenCR
[Remote PC] 執行 ros serial_node package
```
$ rosrun rosserial_python serial_node.py __name:=turtlebot3_core _port:=/dev/ttyACM0 _baud:=115200
```
### 13.3.4. Illumination 照明
- 名稱: LDR sensor (Flying-Fish MH-sensor)
![](https://i.imgur.com/lbnP44v.png)
![](https://i.imgur.com/9APfbNP.png)
- 預設 PIN
| Device |PIN |
| -------- | -------- |
| Analog | A1 |
:::info
如要使用別的 PIN,請參考 [OpenCR Pinmap](http://emanual.robotis.com/docs/en/parts/controller/opencr10/)
:::
- 執行範例 in TB3
:::warning
請記得要先啟動 TB3 後才執行範例
:::
[Remote PC] 啟動 illumination launch 檔
```
$ roslaunch turtlebot3_example turtlebot3_illumination.launch
```
- 在Arduino IDE下執行
此範例可在 Arduino IDE 內開啟
選擇 File -> Examples -> ROS -> 2. Sensors -> d_Illumination,上傳到 OpenCR
[Remote PC] 執行 ros serial_node package
```
$ rosrun rosserial_python serial_node.py __name:=turtlebot3_core _port:=/dev/ttyACM0 _baud:=115200
```
### 13.3.5. LED
- 名稱: led (led101)
![](https://i.imgur.com/OQxTh6t.png)
![](https://i.imgur.com/sy6Ofl6.png)
- 預設 PIN
| Device | PIN |
| -------- | -------- |
| Front_left | BDPIN_GPIO_4 |
| Front_right | BDPIN_GPIO_6 |
| Back_left | BDPIN_GPIO_8 |
| Back_right | BDPIN_GPIO_10 |
:::info
如要使用別的 PIN,請參考 [OpenCR Pinmap](http://emanual.robotis.com/docs/en/parts/controller/opencr10/)
:::
- 執行範例 in TB3
當連上 led 後此範例永遠啟用。led 會根據 TB3 的直線及角速度顯示不同模式
## 13.4. 開源資源下載及授權
### 13.4.1. TB3 開源軟體下載
- TurtleBot3 軟體
- [TurtleBot3](https://github.com/ROBOTIS-GIT/turtlebot3)
- [TurtleBot3 Messages](https://github.com/ROBOTIS-GIT/turtlebot3_msgs)
- [TurtleBot3 Simulations](https://github.com/ROBOTIS-GIT/turtlebot3_simulations)
- [TurtleBot3 Applications](https://github.com/ROBOTIS-GIT/turtlebot3_applications)
- [TurtleBot3 Applications Messages](https://github.com/ROBOTIS-GIT/turtlebot3_applications_msgs)
- [TurtleBot3 Autorace](https://github.com/ROBOTIS-GIT/turtlebot3_autorace)
- [TurtleBot3 Deliver](https://github.com/ROBOTIS-GIT/turtlebot3_deliver)
- OpenCR1.0 控制板韌體
- [TurtleBot3 Burger, Waffle. Waffle Pi and Friends](https://github.com/ROBOTIS-GIT/OpenCR)
- TurtleBot3 的參考軟體
- [TurtleBot](https://github.com/turtlebot)
- [DYNAMIXEL SDK](https://github.com/ROBOTIS-GIT/DynamixelSDK)
- [DYNAMIXEL Workbench](https://github.com/ROBOTIS-GIT/dynamixel-workbench)
- [LDS Driver](https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver)
- [OpenManipulator](https://github.com/ROBOTIS-GIT/open_manipulator)
- [OpenManipulator Messages](https://github.com/ROBOTIS-GIT/open_manipulator_msgs)
- [OpenManipulator Simulations](https://github.com/ROBOTIS-GIT/open_manipulator_simulations)
- [OpenManipulator Perceptions](https://github.com/ROBOTIS-GIT/open_manipulator_perceptions)
- [OpenManipulator with TB3](https://github.com/ROBOTIS-GIT/open_manipulator_with_tb3)
- [OpenManipulator with TB3 Messages](https://github.com/ROBOTIS-GIT/open_manipulator_with_tb3_msgs)
- [OpenManipulator with TB3 Simulations](https://github.com/ROBOTIS-GIT/open_manipulator_with_tb3_simulations)
### 13.4.2. 開源硬體下載
- 電路及 PCB Gerber 檔
- [OpenCR1.0](https://github.com/ROBOTIS-GIT/OpenCR-Hardware)
- TurtleBot3 的硬體款式
- [TurtleBot3 Burger](http://www.robotis.com/service/download.php?no=676)
- [TurtleBot3 Waffle](http://www.robotis.com/service/download.php?no=677)
- [TurtleBot3 Waffle Pi](http://www.robotis.com/service/download.php?no=678)
- urtleBot3 的朋友硬體改裝造型
- [TurtleBot3 OpenManipulator](http://www.robotis.com/service/download.php?no=679)
- [TurtleBot3 Segway](http://www.robotis.com/service/download.php?no=680)
- [TurtleBot3 Conveyor](http://www.robotis.com/service/download.php?no=681)
- [TurtleBot3 Monster](http://www.robotis.com/service/download.php?no=682)
- [TurtleBot3 Tank](http://www.robotis.com/service/download.php?no=683)
- [TurtleBot3 Omni](http://www.robotis.com/service/download.php?no=684)
- [TurtleBot3 Mecanum](http://www.robotis.com/service/download.php?no=685)
- [TurtleBot3 Bike](http://www.robotis.com/service/download.php?no=686)
- [TurtleBot3 Road Train](http://www.robotis.com/service/download.php?no=687)
- [TurtleBot3 Real TurtleBot](http://www.robotis.com/service/download.php?no=688)
- [TurtleBot3 Carrier](http://www.robotis.com/service/download.php?no=689)
- OpenManiapulator 機器手臂硬體
- [OpenManiapulator Chain](http://www.robotis.com/service/download.php?no=690)
- [OpenManiapulator SCARA](http://www.robotis.com/service/download.php?no=691)
- [OpenManiapulator Link](http://www.robotis.com/service/download.php?no=692)
### 13.4.3. 軟體授權
主要的軟體授權是 [Apache license 2.0](https://www.apache.org/licenses/LICENSE-2.0). 但有一些原始授權是 [3-Clause BSD License](https://opensource.org/licenses/BSD-3-Clause) or [GPLv3](https://opensource.org/licenses/GPL-3.0).
### 13.4.4. 硬體授權
TurtleBot3 是一個開源的硬體專案,授權是 [Open Source Hardware Statement of Principles and Definition v1.0](http://freedomdefined.org/OSHW).
### 13.4.5. 文件授權
文件授權是 [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).
# **14. 常見問題 FAQ**
---
**常見問題**:
1. 如何在 Raspberry Pi 樹莓派啟動 SSH Server
2. 如何在 TB3 及 Remote PC 間同步時間
3. 設定 TB3 上的 Dynamixel 智能馬達
4. 當電池連接在 TB3 時,可以充電嗎?
5. 如何下載 TB3 的 3D 列印 STL 檔案
6. Intel Joule 深度攝影機 USB-C Port 在 Win 10 不能辨識
7. Intel Joule 深度攝影機在開機/安裝時凍結
8. 如何更新軟體
9. 如何更新韌體
## 14.1. 如何在 Raspberry Pi 樹莓派啟動 SSH Server
首先,您必須在 Remote PC 和 Raspberry Pi 上安裝 SSH。
```
$ sudo apt-get install ssh
```
對於 Raspberry Pi(TurtleBot3 Burger 和 Waffle Pi),由於 Ubuntu MATE 16.04.x 和 Raspbian 的 SSH 服務器預設是禁用的。如果要啟用 SSH,請參閱以下文檔。
- [SSH Instruction](https://www.raspberrypi.org/documentation/remote-access/ssh/)
- [Ubuntu MATE in Raspberry Pi](https://ubuntu-mate.org/raspberry-pi/)
或使用以下指令。
```
$ sudo service ssh start
$ sudo ufw allow ssh
```
在開始連接 SSH 之前,您需要檢查 host name 主機名稱。 下圖中的紅色方框顯示主機名稱。
![](https://i.imgur.com/nZnuogL.png)
然後,你就可以在 Remote PC 上使用 SSH 來下指令。
```
$ ssh ${HOSTNAME}@xxx.xxx.xx.xx
```
![](https://i.imgur.com/qosp9M7.png)
## 14.2. 如何在 TB3 及 Remote PC 間同步時間
:::info
**備註**:此方法需要 TurtleBot 和 Remote PC 都連網,且都在同一個網段。
:::
- 安裝 ntpdate,並同步 NTP 服務器到 TurtleBot 和 Remote PC 上 。
```
$ sudo apt-get install ntpdate
$ sudo ntpdate ntp.ubuntu.com
```
## 14.3. 設定 TB3 上的 Dynamixel 智能馬達
:::warning
**警告**:請一次**只連接一個** DYNAMIXEL 智能馬達到 OpenCR 控制板上。
:::
1. 透過 USB 線將 OpenCR 連到 PC,並開啟電源
2. 按住 SW2 鍵,然後按一下 Reset 鍵,當 Status LED 在閃爍時,放開 SW2 鍵。可參考[開機程序](https://emanual.robotis.com/docs/en/parts/controller/opencr10/#boot-sequence)。
**3. 上傳設定韌體到 OpenCR**
如下圖所示,找到 Examples > turtlebot3 > turtlebot3_setup > turtlebot3_setup_motor 並打開範例。
![](https://i.imgur.com/TQqskNw.png)
**4. 點擊 Arduino IDE 上的 Upload 鍵**
如果範例成功上傳到 OpenCR 上,請將一個 DYNAMIXEL 智能馬達連接到 OpenCR 上。點擊右上角的 Serial Monitor 圖標,如下圖所示。
![](https://i.imgur.com/RokAeuI.png)
**5. 重置 OpenCR**
如果範例未正常運行,請按 RESET 按鈕。
![](https://i.imgur.com/E7ftFKn.png)
**6. 選擇合適的 Option 選項**
當 Serial Monitor 運行時,DYNAMIXEL 設置選單,如下圖所示。 TurtleBot3 有兩個用於左右輪的 DYNAMIXEL 智能馬達組成,因此請根據組裝位置選擇合適的選項。 例如,要設置左側 DYNAMIXEL 智能馬達,請在文字框中輸入 1。
![](https://i.imgur.com/l1nmCSQ.png)
**7. 確認**
為防止出現任何錯誤,我們需要做確認。 要繼續進行配置,請在文字框中輸入 Y.
![](https://i.imgur.com/VUO3m26.png)
**8. 設定 Dynamixel 智能馬達**
設置工具開始使用不同的 ID 和 Baudrates 來搜索連接的 DYNAMIXEL 智能馬達。如果檢測到 DYNAMIXEL,它將自動設置給 TurtleBot3 使用。當設置完成後,屏幕上會顯示 OK 消息。
![](https://i.imgur.com/7cuR10h.png)
**9. 測試 Dynamixel 智能馬達**
完成設置過程並驗證是否已正確進行更改。如果您選擇 DYNAMIXEL 的測試選單之一,則所選的 DYNAMIXEL 將開始順時針和逆時針旋轉。要結束測試,請按 Enter鍵。例如,要測試左側 DYNAMIXEL,請輸入 3,如下圖所示,輸入 4 則表示測試右側 DYNAMIXEL。
![](https://i.imgur.com/HDbrLhC.png)
**10. 上傳 TB3 Core**
如果 DYNAMIXEL 智能馬達設置完成,則應將 TurtleBot3 Core 範例上傳到 OpenCR 控制板。請從 Examples > tutlebot3 > turtlebot3_burger 或 turtlebot3_waffle > turtlebot3core 中找到適當的核心範例,並將範例上傳到 OpenCR。
## 14.4. 當電池連接在 TB3 時,可以充電嗎?
當電池連接到 TB3 時,**不建議**對電池進行充電和放電,這可能會使產品的保固失效。 如果一定要在 TurtleBot3 on 開啟時進行充電 or 更換電池,請按照以下步驟操作:
1. 先將 SMPS 12V 5A 外接電源線連接到 OpenCR 控制板上
2. 將耗盡的電池從 OpenCR 移除
3. 將耗盡的電池連接到電池充電器,或用充滿電的電池更換耗盡的電池
4. 將充滿電的電池連接到 OpenCR
5. 從 OpenCR 移除 SMPS 12V 5A 外接電源線
## 14.5. 如何下載 TB3 的 3D 列印 STL 檔案
您可以通過以下方式下載 STL 檔案。
我們在下面的鏈接中發布了 TurtleBot3 Friends各種改裝硬體的設計文件。
- [Locomotion(TurtleBot3 Friends 各式改裝造型)](http://emanual.robotis.com/docs/en/platform/turtlebot3/locomotion/#turtlebot3-friends-car)
因此,您可以直接從每個 Onshape 雲端網站下載 STL 文件,如下圖所示。
1. 登錄。(如果您沒有 ID,則必須創建一個。)
2. 點擊 “toggle tab manager”(選單將顯示在瀏覽器的左側。)
3. 點擊 “Parts folder”
4. 右鍵單擊要下載的文件的圖標。
5. 點擊 “Export...”
6. 最後,你可以下載需要的輸出檔案類型。
![](https://i.imgur.com/Hrp8eGy.png)
![](https://i.imgur.com/DhDkMlD.png)
## 14.6. Intel Joule 深度攝影機 USB-C Port 在 Win 10 不能辨識
:::info
**備註**: TB3 Waffle 款附的 ~~Intel Joule 570x 深度攝影機~~已經停產
:::
有些用戶回報說,當他們嘗試更新 BIOS 時,Windows 10 上無法識別 USB-C 端口。 請查看下列解決方案的鏈接(感謝 Rknlhrqy 和 VRAORESEARCH)。
- [ROS Discourse](https://discourse.ros.org/t/turtlebot-3-successfully-upload-alternative-ubuntu-desktop-16-04-to-joule/2224)
- [Intel Communities](https://communities.intel.com/thread/109766)
## 14.7. Intel Joule 深度攝影機在開機/安裝時凍結
:::info
**備註**: TB3 Waffle 款附的 ~~Intel Joule 570x 深度攝影機~~已經停產
:::
如果未正確安裝 BIOS 韌體,則可能會發生這種情況。 請再次燒錄 BIOS 韌體 #193版。
1. 關閉 Intel Joule。
2. 使用以下連接所下載的 [BIOS 韌體 #193](https://software.intel.com/en-us/flashing-the-bios-on-joule) 來進行更新。
- [下載 BIOS 韌體#193](https://downloadmirror.intel.com/26206/eng/joule-firmware-2017-02-19-193-public.zip)
3. 確保在紅色框中看到該訊息。
![](https://i.imgur.com/zNueBpI.png)
## 14.8. 如何更新 TB3 軟體
**[TB3 SBC 端]**
```
$ cd ~/catkin_ws/src/
$ rm -rf turtlebot3/ turtlebot3_msgs/ hls_lfcd_lds_driver/
$ git clone https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
$ cd ~/catkin_ws/src/turtlebot3
$ sudo rm -r turtlebot3_description/ turtlebot3_teleop/ turtlebot3_navigation/ turtlebot3_slam/ turtlebot3_example/
$ cd ~/catkin_ws/
$ rm -rf build/ devel/
$ cd ~/catkin_ws && catkin_make -j1
```
**[Remote PC 端]**
```
$ cd ~/catkin_ws/src/
$ rm -rf turtlebot3/ turtlebot3_msgs/
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
$ cd ~/catkin_ws/
$ rm -rf build/ devel/
$ cd ~/catkin_ws && catkin_make
```
## 14.9. 如何更新 TB3 韌體
[TB3 SBC 端]
- Burger
```
$ export OPENCR_PORT=/dev/ttyACM0
$ export OPENCR_MODEL=burger
$ rm -rf ./opencr_update.tar.bz2
$ wget https://github.com/ROBOTIS-GIT/OpenCR/raw/master/arduino/opencr_release/shell_update/opencr_update.tar.bz2 && tar -xvf opencr_update.tar.bz2 && cd ./opencr_update && ./update.sh $OPENCR_PORT $OPENCR_MODEL.opencr && cd ..
```
- Waffle 或 Waffle Pi
```
$ export OPENCR_PORT=/dev/ttyACM0
$ export OPENCR_MODEL=waffle
$ rm -rf ./opencr_update.tar.bz2
$ wget https://github.com/ROBOTIS-GIT/OpenCR/raw/master/arduino/opencr_release/shell_update/opencr_update.tar.bz2 && tar -xvf opencr_update.tar.bz2 && cd ./opencr_update && ./update.sh $OPENCR_PORT $OPENCR_MODEL.opencr && cd ..
```
# **15. 聯絡採智科技**
---
![](https://i.imgur.com/jZ7APk4.png)
![](https://i.imgur.com/mJ5jCT8.png)
採智科技是 [**TurtleBot3 台灣唯一官方授權代理商**](https://www.turtlebot.com/partners/),如有產品需求,使用,技術或維修上的問題,請聯絡我們。
**採智科技股份有限公司**
台北市11076信義區松德路12號10F
Tel: +886-2-2345-7799
Fax: +886-2-2345-0867
mail: info@idminer.com.tw
採智科技網站: http://www.idminer.com.tw/
** **下載 "ROS 機器人編程" 簡中版** (使用 TurtleBot3 為 ROS 1 實作平台)
- [**ROS 機器人編程- 簡中 PDF**](https://www.dropbox.com/s/5cqhl5f17e2p1b5/ROS_Robot_Programming_CN.pdf?dl=0)
- [**ROS Robot Programming- 英文 PDF**](https://www.dropbox.com/s/x1bj7u878p2hgtq/ROS_Robot_Programming_EN.pdf?dl=0)
![](https://i.imgur.com/R8L7KfX.png)
| **簡中版章節列表** | | |
|:--------------------- |:----------------------- | --------------- |
| 1. 機器人軟件平台 | 6. ROS 工具 | 11. SLAM 和導航 |
| 2. 機器人操作系統 ROS | 7. ROS 編程基礎 | 12. 服務機器人 |
| 3. 搭建 ROS 開發環境 | 8. 機器人、傳感器和電機 | 13. 機械手臂 |
| 4. ROS 的重要概念 | 9. 嵌入式系統 | |
| 5. ROS 命令 | 10. 移動機器人 | |
###### tags: `TurtleBot3(ROS1)`