C4. 快速入門指南 #
本入門指南,是要一步一步介紹如何在 ROS 上運行 OpenManipulator-X 機器手臂,它會引導你首次操作 OpenManipulator-X。
為了執行本入門指南,你應該準備以下物品。
- OpenManipulator-X 機器手臂
- 通訊介面(使用你喜歡的任一選項)(需另購)
- 選項 1 (由電腦直接控制):DYNAMIXEL Starter Set 馬達入門套件包
- 選項 2 (由控制板控制):OpenCR 1.0 控制板
- 電源
- 建議使用 ROBOTIS SMPS 電源線(12V,5A) (內含在 DYNAMIXEL Starter Set 中)
你也可以加購 Base Plate-02 鋁質平板,可以將 OpenManipulator-X 手臂鎖在平板上,然後用夾具將平板固定在桌上。
C4.1.2. 在 PC 安裝 ROS #

對初學者,強烈建議參照以下的指令操作,以便安裝 ROS。
$ sudo apt update
$ wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_noetic.sh
$ chmod 755 ./install_ros_noetic.sh
$ bash ./install_ros_noetic.sh
- 如果安裝失敗,請參考官方 ROS1 Noetic 安裝指南
補充資料:手動安裝 ROS 的步驟。 #
手動安裝比使用腳本安裝更耗時,但可以彈性的選擇安裝不同套件。以下指令是基於官方 ROS1 Noetic 安裝指南,不建議初學者使用。
1. Setup source.list
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
2. Setup the keys
$ sudo apt install curl
$ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
3. Install ROS
$ sudo apt update
$ sudo apt install ros-noetic-desktop-full
4. building 相依套件
$ sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
5. 初始化 rosdep
$ sudo rosdep init
$ rosdep update
6. 設定 ROS 環境
如果你已經使用 script 腳本安裝 ROS,千萬不要輸入下列指令。
install_ros_noetic.sh 檔會自動設定基本的 ROS 環境。
$ sudo apt install git
$ mkdir -p ~/catkin_ws/src
$ catkin_init_workspace
$ cd ~/catkin_ws && catkin_make
$ echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
$ echo "export ROS_MASTER_URI=http://localhost:11311" >> ~/.bashrc
$ echo "export ROS_HOSTNAME=localhost" >> ~/.bashrc"
$ source ~/.bashrc
C4.1.3. 安裝相關 ROS Packages #
以下指令,會下載 OpenManipulator-X 套件的原始碼,然後 build 的流程。
1. 安裝相依套件
$ source ~/.bashrc
$ sudo apt-get install ros-noetic-ros-controllers ros-noetic-gazebo* ros-noetic-moveit* ros-noetic-industrial-core
$ sudo apt install ros-noetic-dynamixel-sdk ros-noetic-dynamixel-workbench*
$ sudo apt install ros-noetic-robotis-manipulator
2. 下載 OpenManipulator-X 套件的原始碼,然後 build。
$ cd ~/catkin_ws/src/
$ git clone -b noetic https://github.com/ROBOTIS-GIT/open_manipulator.git
$ git clone -b noetic https://github.com/ROBOTIS-GIT/open_manipulator_msgs.git
$ git clone -b noetic https://github.com/ROBOTIS-GIT/open_manipulator_simulations.git
$ git clone -b noetic https://github.com/ROBOTIS-GIT/open_manipulator_dependencies.git
$ cd ~/catkin_ws && catkin_make
C4.1.4. 通訊介面 #
要控制 OpenManipulator-X 機器手臂,有兩個通訊介面的硬體選擇。請對應下列 2 個補充資料選項來選擇。
在完成選項後,請開電源,然後看所有的 Dynamixel-X 智能馬達 LED 燈,是否會閃一次。
補充資料:選項 1(建議): 使用 U2D2 轉接器作為通訊介面 (由電腦直接控制)。 #
C4.1.4.1. 如何連接 #
使用 Dynamixel Starter Set 馬達入門套件包(需另購)
- 將 micro USB 連接線,連接 U2D2 到 PC
- 3pin-TTL 連接線,連接 U2D2 到 U2D2 Power Hub Board
- 3pin-TTL 連接線,連接 DYNAMIXEL-X 智能馬達(OpenMANIPULATOR-X) 到 U2D2 Power Hub Board
- SMPS 電源線(12V,5A)連接到 U2D2 Power Hub 電源擴充板,如下圖所示。

C4.1.4.2. USB Latency Timer 延遲定時器設置 #
在 Linux(Ubuntu) 環境中,USB latency time 延遲時間,預設為 16ms。請按照以下步驟,將 DYNAMIXEL-X 智能馬達,和通過 USB 連接的 PC 之間的通信延遲時間,設置為最低值(1ms)。
打開 terminal 終端窗口(Alt + Ctrl + T),並運行 roscore。
$ roscore
在運行 roscore 的情況下,打開一個新的終端窗口,並輸入以下指令來設置 usb 延遲時間為 1ms。
$ rosrun open_manipulator_controller create_udev_rules
$ cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
補充資料:選項 2: 使用 OpenCR 1.0 控制器作為通訊介面 (由控制器控制)。 #
C4.1.4.3. 如何連接 #
使用 Dynamixel Starter Set 馬達入門套件包
- 將 micro USB 連接線,連接 OpenCR 到 PC
- 3pin-TTL 連接線,連接 DYNAMIXEL-X 智能馬達(OpenMANIPULATOR-X) 到 OpenCR
- SMPS 電源線(12V,5A)連接到 OpenCR,如下圖所示。

C4.1.4.4. 上傳 source code #
1. 請參考此頁面的說明,安裝 Arduino IDE ,並在 Arduino IDE 環境中使用 OpenCR 控制板。
2. 連接 OpenCR 到 PC
3. 從 File > Examples > OpenCR > 10.Etc > usb_to_dxl 打開範例

4. 上傳 example 到 OpenCR

5. 當上傳完成,下列指令會顯示在 log 視窗。


C4.2. 基本操作 #
本節的指令適用於官方 ROBOTIS official OpenMANIPULATOR-X package。如果你是使用開源自製 OpenManipulator-X 手臂,請務必將 Dynamixel 馬達設置如下圖。

C4.2.1. 啟動 controller #
執行本節的指令後,可控制 OpenManipulator-X 的軟體 controller 會啟動,OpenManipulator-X 手臂的每個關節,都會被鎖定(Torque On)。
- 當使用 U2D2 來控制
關閉所有 terminal,開新的 terminal 輸入下列指令
$ roslaunch open_manipulator_controller open_manipulator_controller.launch
- 當使用 OpenCR 來控制
關閉所有 terminal,開新的 terminal 輸入下列指令
$ roslaunch open_manipulator_controller open_manipulator_controller.launch usb_port:=/dev/ttyACM0 baud_rate:=1000000

啟動後,在 terminal 顯示輸出結果會類似於
SUMMARY
========
PARAMETERS
* /open_manipulator_controller/control_period: 0.01
* /open_manipulator_controller/using_platform: True
* /rosdistro: noetic
* /rosversion: 1.15.9
NODES
/
open_manipulator_controller (open_manipulator_controller/open_manipulator_controller)
auto-starting new master
process[master]: started with pid [5454]
ROS_MASTER_URI=http://localhost:11311
setting /run_id to da579122-f0fa-11eb-9d7a-0790f3842b2b
process[rosout-1]: started with pid [5464]
started core service [/rosout]
process[open_manipulator_controller-2]: started with pid [5467]
port_name and baud_rate are set to /dev/ttyUSB0, 1000000
Joint Dynamixel ID : 11, Model Name : XM430-W350
Joint Dynamixel ID : 12, Model Name : XM430-W350
Joint Dynamixel ID : 13, Model Name : XM430-W350
Joint Dynamixel ID : 14, Model Name : XM430-W350
Gripper Dynamixel ID : 15, Model Name :XM430-W350
[INFO] Succeeded to init /open_manipulator_controller
C4.2.2. 由鍵盤遙控 #
開新的 terminal 並輸入指令。
$ roslaunch open_manipulator_teleop open_manipulator_teleop_keyboard.launch
成功啟動鍵盤後,terminal 會顯示下列之介面。
---------------------------
Control Your OpenMANIPULATOR-X!
---------------------------
w : increase x axis in task space
s : decrease x axis in task space
a : increase y axis in task space
d : decrease y axis in task space
z : increase z axis in task space
x : decrease z axis in task space
y : increase joint 1 angle
h : decrease joint 1 angle
u : increase joint 2 angle
j : decrease joint 2 angle
i : increase joint 3 angle
k : decrease joint 3 angle
o : increase joint 4 angle
l : decrease joint 4 angle
g : gripper open
f : gripper close
1 : init pose
2 : home pose
q to quit
---------------------------
Present Joint Angle J1: 0.000 J2: 0.000 J3: 0.000 J4: 0.000
Present Kinematics Position X: 0.000 Y: 0.000 Z: 0.000
---------------------------