在ROS中配置使用Robotiq 抓手(一)

前言

印象中Robotiq系列產品已經成爲了UR機器人的隱形標配,但是沒想到在想要結合ROS使用竟然這麼麻煩。。

1. 利用URScript通過UR控制器調用抓手

在使用試教器控制Robotiq抓手時,會將抓手連接在UR控制器上,通過對應的URCAPs來使用抓手。一個自然而然的想法就是,能否保持這樣的連接方式,直接通過ROS與UR控制器的通信來控制抓手。這樣就能避免把線接到計算機上時帶來的各種麻煩。
目前查到的回答是,可以這麼做,但是不推薦
需要通過ur_driver/URScript話題實現控制,也即需要熟悉URScript及抓手控制相關命令。

其他參考鏈接1,
這個好像專門做了一個類完成相關實現 參考鏈接2, 參考鏈接3

用ur_driver/URScript控制機器人,參考鏈接4參考鏈接5

2. 將抓手直接與計算機相連

這麼做,就要遭受線長與接口問題。

2.1 安裝Robotiq功能包

官方教程1官方教程2
這是一個Robotiq產品的綜合包,但是不包含相機。使用時需要注意連接的USB端口號。

#下載至工作空間(我直接放在已經存在的工作空間)
mkdir -p robotiq_ws/src
cd robotiq_ws/src/
git clone https://github.com/ros-industrial/robotiq.git

#安裝依賴項
rosdep install robotiq_modbus_rtu      //請在空間的src目錄下執行該命令,該命令會查找安裝robotiq_modbus_rtu包所需要的相關依賴
# 若出錯需要socketcan-interface,則運行下面註釋的語句安裝
# sudo apt-get install ros-kinetic-socketcan-interface
sudo apt-get install ros-kinetic-soem

#編譯
cd robotiq_ws
catkin_make

其他參考鏈接1參考鏈接2參考鏈接3

2.2 抓手功能包相關介紹

觀察Robotiq包大致分成4部分,二指相關,三指相關,力傳感器,連接通信相關。這裏只關注二指相關部分(三指跟二指不太一樣,多了gazebo部分?)
在這裏插入圖片描述

2.3 robotiq_2f_140_gripper_visualization

在rviz中查看二指手抓。

roslaunch robotiq_2f_140_gripper_visualization test_2f_140_model.launch

直接運行會有一個warn。

The ‘use_gui’ parameter was specified, which is deprecated. We’ll attempt to find and run the GUI, but if this fails you should install the ‘joint_state_publisher_gui’ package instead and run that. This backwards compatibility option will be removed in Noetic.

解決方法是,用joint_state_publisher_gui替換原本的joint_state_publisher,然後刪除launch中對use_gui的設置。

sudo apt-get install ros-kinetic-joint-state-publisher-gui

然後再運行,還有一個小問題。

xacro: Traditional processing is deprecated. Switch to --inorder processing!
To check for compatibility of your document, use option --check-order.

在讀取xacro文件時,需要添加–inorder。在這裏插入圖片描述參考鏈接1,參考鏈接2,參考鏈接3

2.4 robotiq_2f_gripper_control

這裏主要介紹三個在官方教程中提到的文件。
三指抓手的簡單控制方法也是類似,參看:
https://blog.csdn.net/w1301100424/article/details/88540442

2.4.1 Robotiq2FGripperRtuNode.py

官方教程上,通過該文件與抓手進行連接。注意USB端口號是否正確。

rosrun robotiq_2f_gripper_control Robotiq2FGripperRtuNode.py /dev/ttyUSB0

另外,查閱該文件,可以看到裏面寫着:

#The Gripper status is published on the topic named 'Robotiq2FGripperRobotInput'
pub = rospy.Publisher('Robotiq2FGripperRobotInput', inputMsg.Robotiq2FGripper_robot_input)

#The Gripper command is received from the topic named 'Robotiq2FGripperRobotOutput'
rospy.Subscriber('Robotiq2FGripperRobotOutput', outputMsg.Robotiq2FGripper_robot_output, gripper.refreshCommand)

上面那部分與2.4.2對應,不斷查詢抓手狀態併發送。
下面那部分與2.4.3對應,用來接受用戶輸入的抓手控制信息,通過回調函數轉給夾手。

2.4.2 Robotiq2FGripperStatusListener.py

rosrun robotiq_2f_gripper_control Robotiq2FGripperStatusListener.py

用來監聽夾手狀態

2.4.3 Robotiq2FGripperSimpleController.py

rosrun robotiq_2f_gripper_control Robotiq2FGripperSimpleController.py

向抓手輸出控制信息。
按教程指示輸入命令即可,會自動轉化成話題對應的數據格式。
其他人那邊看到的:

使用前需要激活設備,直接輸入a,確定即可。若需復位,輸入r。
之後輸入0-255的數字,0是開合到最大位置,255是完全關閉,回車後電爪即可執行。

2.5 robotiq_2f_gripper_action_server

大致看了下,大概是將抓手動作寫成了action,這是其中的server部分。
它好像是考慮了夾手目前狀態與目標執行狀態間的關係。
借用了robotiq_2f_gripper_control中的msg文件。
但是傳遞消息用的話題與2.4中的兩個不同,因此,其與2.4.2及2.4.3沒啥關係?但需要2.4.1與抓手連接?

另外,默認最大打開範圍是85,如果是140的抓手需要手動修改。

說明

由於目前手頭沒有該夾手,上面幾個文件的具體運行情況還未知。
後續會嘗試將該抓手與UR機器集成,並試着在Gazebo中仿真。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章