接上篇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。
安裝步驟:
-
用U盤將此文件拷貝至機器人示教器的programs文件夾。
-
在歡迎屏幕上,選擇Setup Robot,然後選擇URCaps進入URCaps安裝屏幕。
-
單擊底部的小加號以打開文件選擇器。 在此處,可以看到存儲在機器人程序文件夾或插入的USB驅動器中的所有urcap文件。 選擇並打開externalcontrol-1.0.urcap文件,然後單擊打開。 現在,您的URCaps視圖應在活動的URCaps列表中顯示External Control,點擊右下角重啓機器人。
-
重新啓動後,選擇爲機器人編程,在安裝設置部分中找到External Control 。 然後設置外部PC的IP地址,本文設置爲192.168.1.101 。請注意,機器人和外部PC必須位於同一網絡中,理想情況下,彼此之間應直接連接,以最大程度地減少網絡干擾。 自定義端口現在應該保持不變。
-
要使用新的URCap,請創建一個新程序並將External Control程序節點插入到程序樹中。
-
重新點擊命令按鈕,則會看到在安裝中輸入的設置。 檢查它們是否正確,然後將程序保存,可以將程序命名爲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
警告:請將手放在急停按鈕旁邊,以防發生意外。
- 網線連接機器人和電腦,啓動機器人。
- 打開電腦終端,啓動機器人驅動程序。
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]
- 示教器,運行程序 —> 文件 —> 加載程序 —> 選擇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. - 啓動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節順序啓動即可。