Jetson AGX Xavier避坑指南(四)——安裝ur_robot_driver,驅動真實的ur5機器人

接上篇Jetson AGX Xavier避坑指南(三)——環境搭建1.(python3、pip、virtualenv、ros)

1. 安裝ur_robot_driver

根據最新通告Announcement: Universal Robots launches ROS driver,ros發佈了受UR官方支持的驅動程序ur_robot_driver,並宣佈棄用ur_driver和ur_modern_driver。不過ur_robot_driver僅適用於控制器版本CB3 (with software version >= 3.7) 和e-Series (software >= 5.1)。

本文參考官方github文檔Universal_Robots_ROS_Driver,採用源碼編譯的方式進行安裝。

教程中還安裝了fmauch_universal_robot,經本人粗略比較,此包應該與universal_robots包內容相同。

jetson AGX Xavier的Linux系統版本爲18.04,對應的ros版本爲melodic。上篇已經創建了虛擬環境rosRL(可忽略), 並用腳本setupCatkinWorkspace.sh創建了工作空間ur5
如果採用pc+ros kinetic,可以參考: ROS下使用moveit控制UR機械臂,moveit驅動真實機械臂

workon rosRL  # 進入虛擬環境
# 安裝依賴
sudo apt-get install ros-melodic-moveit  # 安裝MoveIt 此步可忽略
cd ur5
# clone the driver
$ git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git src/Universal_Robots_ROS_Driver

# clone fork of the description to use the calibration feature  # -b表示下載分支
$ git clone -b calibration_devel https://github.com/fmauch/universal_robot.git src/fmauch_universal_robot

# install dependencies
$ sudo apt update -qq
$ rosdep update
$ rosdep install --from-path src --ignore-src -y  #-y 表示[yes/no]的問題選擇yes

# build the workspace
$ catkin_make

# activate the workspace (ie: source it)
$ source devel/setup.bash

如果,報錯
ModuleNotFoundError: No module named ‘rospkg’
Invoking “make -j4 -l4” failed

pip install rospkg  # 安裝缺少的module
catkin_make  # 重新build
source devel/setup.bash

安裝完成。rospack list 查看是否包含ur功能包。

注意
source devel/setup.bash只在當前終端生效,每次打開其他終端時都要重新source,這樣比較麻煩。 解決方法:gedit ~/.bashrc,打開.bashrc文件,在文件底部添加source ~/path/to/ur5/devel/setup.bash,保存退出即可。

參考:
Universal_Robots_ROS_Driver
UR5的安裝與配置
ImportError: No module named rospkg

2. 仿真測試

#打開終端,啓動
roslaunch ur_gazebo ur5.launch
#打開新終端
roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch sim:=true
#再打開一個新終端
roslaunch ur5_moveit_config moveit_rviz.launch config:=true

拖動ur5的末端,按plan可以規劃路徑,按execute可以使UR5運動,在gazebo上也可以看到相同的運動效果。
在這裏插入圖片描述

3. 連接真實的ur機器人

3.1 安裝externalcontrol

要在真正的機器人上使用ur_robot_driver,需要在ur機器人上安裝externalcontrol-1.0.urcap,該文件位於Universal_Robots_ROS_Driver的resources文件夾內。注意:要安裝此URCap,要求PolyScope的版本不得低於3.7

安裝步驟

  1. 用U盤將此文件拷貝至機器人示教器的programs文件夾。

  2. 在歡迎屏幕上,選擇Setup Robot,然後選擇URCaps進入URCaps安裝屏幕。
    在這裏插入圖片描述

  3. 單擊底部的小加號以打開文件選擇器。 在此處,可以看到存儲在機器人程序文件夾或插入的USB驅動器中的所有urcap文件。 選擇並打開externalcontrol-1.0.urcap文件,然後單擊打開。 現在,您的URCaps視圖應在活動的URCaps列表中顯示External Control,點擊右下角重啓機器人。
    在這裏插入圖片描述

  4. 重新啓動後,選擇爲機器人編程,在安裝設置部分中找到External Control 。 然後設置外部PC的IP地址,本文設置爲192.168.1.101 。請注意,機器人和外部PC必須位於同一網絡中,理想情況下,彼此之間應直接連接,以最大程度地減少網絡干擾。 自定義端口現在應該保持不變。
    在這裏插入圖片描述

  5. 要使用新的URCap,請創建一個新程序並將External Control程序節點插入到程序樹中。在這裏插入圖片描述

  6. 重新點擊命令按鈕,則會看到在安裝中輸入的設置。 檢查它們是否正確,然後將程序保存,可以將程序命名爲external_control.urp。 現在機器人可以與此驅動程序一起使用了。
    在這裏插入圖片描述
    參考:Universal_Robots_ROS_Driver/ur_robot_driver/doc/install_urcap_cb3.md

3.2 網絡配置

設置機器人靜態IP. 設置機器人 ——> 設置網絡菜單
IP地址: 192.168.1.2
子網掩碼:255.255.255.0
如果機器人似乎沒有正確獲取網絡配置,請嘗試重啓控制器。

測試網絡連接:

ping 192.168.1.2  #IP_OF_THE_ROBOT

會看到如下輸出:
64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.518 ms
64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.259 ms
64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.282 ms
如果沒有發生任何事情或引發錯誤,則無法從計算機訪問機器人。

3.3 用ros驅動真實的ur5機器人

參考:Getting Started with a Universal Robot and ROS-Industrial
警告:請將手放在急停按鈕旁邊,以防發生意外。

  1. 網線連接機器人和電腦,啓動機器人。
  2. 打開電腦終端,啓動機器人驅動程序。
roslaunch ur_robot_driver ur5_bringup.launch limited:=true robot_ip:=192.168.1.2 [reverse_port=REVERSE_PORT]
# "reverse_port" default="50001" 
#  limited:=true限制機器人關節運動範圍 [-pi,pi],否則爲 [-2pi, 2pi]
  1. 示教器,運行程序 —> 文件 —> 加載程序 —> 選擇3.1 節保存的external_control.urp程序,打開—>運行。
    可以看到終端顯示:
    [ INFO] : Robot mode is now POWER_ON
    [ INFO] : Robot mode is now IDLE
    [ INFO] : Robot mode is now RUNNING
    [ INFO]: Robot requested program
    [ INFO]: Sent program to robot
    [ INFO]: Robot ready to receive control commands.
  2. 啓動moveit和rviz,注意啓動順序不能變。
# 新終端啓動moveit  
roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch limited:=true
# 新終端啓動rviz
roslaunch ur5_moveit_config moveit_rviz.launch config:=true

然後就可以拖動rviz中的ur5的末端,plan然後execute控制真實的UR5運動。注意觀察plan的運行軌跡,慎防撞擊。

曾經踩過的坑

報錯: [ERROR] : Action client not connected: /follow_joint_trajectory
解決:找到/ur5_moveit_config/config/controllers.yaml 文件,name: 後添加 scaled_pos_traj_controller

坑中之坑:上述修改方法會導致用gazebo仿真時報錯
roslaunch ur_gazebo ur5.launch
roslaunch ur5_moveit_config ur5_moveit_planning_execution.launch limited:=true sim:=true
此時會報錯: [ERROR] :Action client not connected: scaled_pos_traj_controller/follow_joint_trajectory
導致gazebo無法執行excuse
解決:保留源文件中的 - name:""
在文件後面添加:

- name: scaled_pos_traj_controller
    action_ns:  follow_joint_trajectory
    type: FollowJointTrajectory
    joints:
      - shoulder_pan_joint
      - shoulder_lift_joint
      - elbow_joint
      - wrist_1_joint
      - wrist_2_joint
      - wrist_3_joint

報錯:Can’t accept new action goals. Controller is not running.
解決:正確安裝設置external control, 並在啓動ur5_bringup.launch後,在示教器運行external_control.urp程序。
參考: Can’t accept new action goals #4

示教器運行external_control.urp報錯: the connection to the remote pc could not be established
解決:是因爲pc端還沒有啓動ur5_bringup.launch驅動程序,按3.3節順序啓動即可。

發佈了12 篇原創文章 · 獲贊 9 · 訪問量 6352
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章