View Categories

OpenManipulator-X(ROS1)-Noetic-Chap4-快速入門

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. 設定 #

C4.1.1. 在 PC 安裝 Ubuntu #

首先要在 Remote PC(你的桌電或是筆電)上安裝 Ubuntu(一種 Linux 作業系統). 請先下載 Ubuntu 20.04 LTS Desktop 版及參考安裝步驟進行安裝.

C4.1.2. 在 PC 安裝 ROS #

logo 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
				
			

補充資料:手動安裝 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 電源擴充板,如下圖所示。
OpenManipulator u2d2 setup2

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,如下圖所示。
OpenManipulator opencr setup2

C4.1.4.4. 上傳 source code #

1. 請參考此頁面的說明,安裝 Arduino IDE ,並在 Arduino IDE 環境中使用 OpenCR 控制板。

2. 連接 OpenCR 到 PC

3. 從 File > Examples > OpenCR > 10.Etc > usb_to_dxl 打開範例

OpenManipulator opencr utd setup
打開 usb to dxl example

4. 上傳 example 到 OpenCR

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

downloader 01
bootloader 19

C4.2. 基本操作 #

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

OpenManipulator id baudrate

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
				
			
open manipulator start pose

啟動後,在 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
  ---------------------------