# Bluewhale ROS Driver Tutorial
::: success
藍鯨馬達驅動器 ROS Driver Packages 使用教學
本教學的`.launch`檔預設為**控制兩個Driver** ,一個Driver控制左右兩輪,總共四個馬達
若您只要控一個Driver,請看 **melodic-devel** branch的。
:::
[TOC]
## Steps
### 1. 連接 Driver的PC線,將USB插入筆電
### 2. 打開 Terminal,打
``` linux
ls -l /dev|grep ttyUSB
```
#### 這行指令是查看目前電腦接收的Port是哪個,順利的話會回傳如下圖:

#### 通常會寫: ttyUSB0 / ttyUSB1
* 如果沒有回傳東西,可以嘗試拔掉USB線,重新插入,再試試看。
### 3. 確認好 Port 後,要取得權限,分別打:
``` linux=
sudo chmod 666 /dev/ttyUSB0
sudo chmod 666 /dev/ttyUSB1
```
* 他可能會要你打密碼,你就打你的密碼

#### 如果你沒有打這兩行指令,在你直接跑`roslaunch`時,很可能會遇到`Permission Denied`之類的問題。另外要注意:`/ttyUSB0`實際上還是要看你電腦步驟2回傳的port是甚麼,才有效果。
### 4. 以上步驟都正確後,開始 Launch:
``` ROS
roslaunch xqserial_server xqserial.launch
```
#### 這步驟就是大家熟悉且期待已久的 roslaunch~
#### 如果都沒有跑出error(有Exception:.../ 或shut down等訊息),恭喜你Launch成功~
* 成功畫面如下:
可以看到最下面兩行:welcome to ...和port : ttyUSB0 baud 115200 表示成功!

### 5. roslaunch 成功後,另開一個新的Terminal,開啟鍵盤控制的 Node
```ROS
rosrun teleop_twist_keyboard teleop_twist_keyboard.py cmd_vel:=cmd_vel _speed:=0.5 _turn:=0.5
```
* 如果你遇到 **Package not found**或**No such file or directory**,要先下載 `teleop_twist_keyboard` 這包 Package
見官網[下載teleop_twist_keyboard教學](http://wiki.ros.org/teleop_twist_keyboard)
或直接打:
```ros
sudo apt-get install ros-noetic-teleop-twist-keyboard
```
* _speed:= 0.5 , _turn:=0.5 這兩個參數是可以因人而異改的,分別代表你想要他做的**線性速度**與**旋轉速度**,單位是 **(m/s)** 和 **(rad/s)**
### 6. rosrun teleop_twist_keyboard 成功後,應該跑出以下畫面:

* 如他告訴你的,可以使用以下鍵盤位置 控制車子移動:
| Key | Action | Key | Action | Key | Action |
| --- | -------- | --- | ------ | --- | -------- |
| U | 左前轉彎 | I | 前進 | O | 右前轉彎 |
| J | 原地左轉 | K | 停止 | L | 原地右轉 |
| M | 左後轉彎 | , | 後退 | . | 右後轉彎 |
* 如果要增加/減少**線性速度**: W(增加10%) / X(減少10%) 按鍵
* 如果要增加/減少**旋轉速度**: E(增加10%) / C(減少10%) 按鍵

## 使用 VirtualBox 小提醒
若你是使用 **VirtualBox虛擬機** 架設VM,要注意插入USB線後,要做一個動作,他才會認知**你有把USB線插入這台Linux虛擬機**:
### 1.點選 裝置 -> USB -> XXX Port

* 如果找不到你插入的USB Port,使用第二個步驟:
### 2.點選 裝置 -> USB -> USB設定

* 基本上應該一定會看到你剛剛新插入的USB Port,把他勾選起來,再回到上面步驟1,應該就會回傳了。
###### tags: `ROS` `Bluewhale Driver` `Hub Motor` `Linux`