使用UR機械臂最新的 ur_robot_driver
ur_robot_driver適用於polyscope >= 3.7 版本的ur機械臂和CB>=5的ur-e機械臂。筆者機器版本爲3.12。
目前ur臂的驅動有三個:ur_driver, ur_modern_driver, ur_robot_driver。
ur_driver和ur_modern_driver已經被官方棄用,ur_driver適用於CB1和CB2(不是很清楚),ur_modern_driver適用於CB2、CB3(具體到哪個子版本不是很清楚,我在CB3.12上是不適用的,國外網友反應CB3.9.1還是適用的,但是3.10不適用,可能就是CB3.10一下吧)。
來看一下ur_modern_driver和ur_robot_driver的對比:
具體的驅動的詳細介紹請參考:
universal_robot_ros_wiki
ur_robot_driver
ur_robot_driver_doc
下面我們將會使用ROS和ur_robot_driver來驅動真機UR臂。
一、下載ros package
source /opt/ros/$ROS_DISTRO/setup.bash
mkdir -p ur_ws/src && cd ur_ws
git clone https://github.com/UniversalRobots/Universal_Robots_ROS_Driver.git src/Universal_Robots_ROS_Driver
git clone -b calibration_devel https://github.com/fmauch/universal_robot.git src/fmauch_universal_robot
sudo apt update -qq
rosdep update
rosdep install --from-paths src --ignore-src -y
catkin_make
source devel/setup.bash
如果執行rosdep init 和 rosdep install
失敗,請參考ROS -sudo rosdep init 失敗解決方法
爲了工作空間之間不相互干擾,推薦每次手動source setup.bash
,如果只有一個工作空間,也可以直接寫在bashrc
裏面。
二、配置示教器
將Universal_Robots_ROS_Driver/ur_robot_driver/resources
路徑下的externalcontrol.urcap
文件拷貝到U盤安裝到示教器上。
安裝完成後,按以下步驟操作:
設置完成後返回
靜止在這個頁面不要動.
三、配置Ubuntu網絡
使用externalcontrol,要求使用靜態IP,並且指定了IP段,而且因爲筆者電腦有兩個有線網卡,所以我們選擇網線直線,印象中通過路由器分配靜態IP不是那麼直接。
使用網線直線電腦和UR的控制櫃。
第二步已經將示教器配置好,下面來配置Ubuntu。
1. 查看顯卡名稱
ifconfig
可以看到enp2s0
正是連接控制櫃的網卡。在沒配置之前,這個沒有inet addr
屬性,所以一看便知。
2.設置靜態IP
sudo vi /etc/network/interfaces
添加如圖所示的代碼。因爲示教器上的externalcontrol顯示要設置成這個指定的IP。網關和子網掩碼可按上圖設置。網管必須和IP在同一網段,即最後一位的數字可以不一樣,且範圍爲[0,255]。指定靜態IP時必須指定dns server,否則連接互聯網的網卡有可能無法解析DNS。
這裏雖然設置的是8.8.8.8
,但是實際的dns server地址並不是8.8.8.8,而是由ubuntu內置的networkmanager
程序dnsmasq
程序接管,由它來分配dns server。
執行
sudo vi /etc/resolv.conf
可以看到分配的nameserver爲
這個是本地dns的迴環地址,由dnsmasq來分配,具體參考nameserver 127.0.1.1 & 如何設置nameserver。
3.重啓
4.現在看看右上角網絡連接有沒有顯示對應於控制櫃的網絡顯示已經連接。
如果沒有,執行
sudo vi /etc/NetworkManager/NetworkManager.conf
將managed
改爲true
保存退出後,執行
sudo /etc/init.d/networking restart
如果還是沒有顯示連接,重啓
。
四、運行程序測試
1.獲取標定信息
roslaunch ur_calibration calibration_correction.launch robot_ip:=192.168.56.2 target_filename:="${HOME}/my_robot_calibration.yaml"
2. 運行externalcontrol
3.運行啓動文件
roslaunch ur_robot_driver ur3_bringup.launch robot_ip:=192.168.56.2 kinematics_config:=${HOME}/my_robot_calibration.yaml
上條指令ur3換成自己的機械臂類型。
當終端顯示Robot ready to receive control commands.
時,
rosrun rqt_joint_trajectory_controller rqt_joint_trajectory_controller
這時候就可以在rqt中拖動滑塊來控制機械臂每個關節的轉角。
具體參考ur_robot_driver