ROS機器人實例 —— Universal Robots

Universal Robots(優傲機器人)公司是一家引領協作機器人全新細分市場的先驅企業,該公司成立於2005年,關注機器人的用戶可操作性和靈活度,總部位於丹麥的歐登塞市,主要的機器人產品有:UR3、UR5和UR10,分別針對不同的負載級別。

Universal Robots早在2009年便推出了第一款協作機器人——UR5,自重18公斤,負載高達5公斤,工作半徑85cm,不僅顛覆了人們對於傳統工業機器人的認識,還自此定義了「協作機器人」的真正意義。除了安全度高、無需安全圍欄等特點外,協作機器人還應該具備編程簡單和靈活度高等特點,才能實現真正的人機和諧共事。

2015年3月推出的UR3是現今市場上最靈活輕便、並且可與工人一起肩並肩工作的台式機器人。它自重僅為11公斤,但是有效負載卻高達3公斤,所有腕關節均可360度旋轉,而末端關節可作無限旋轉。UR 10的有效負載為10公斤,工作半徑130cm。三款機器人均以編程的簡易性、高度靈活性以及與人一起工作的安全可靠性而享譽業內。

ROS中同樣集成了Universal Robots機器人的功能包,使用如下命令即可安裝,其中包含UR3、UR5、UR10三款機器人的相關功能:

$ sudo apt-get install ros-kinetic-universal-robot

在使用之前,先來了解一下Universal Robots的相關功能包。

接下來我們以UR5為例,學習Universal Robots功能包的使用方法。

gazebo中的UR機器人

使用以下命令啟動UR5機器人的gazebo模擬環境:

$ roslaunch ur_gazebo ur5.launch

啟動成功後可以看到模擬環境中的UR5。

查看當前系統中的話題列表。

follow_joint_trajectory是MoveIt!最終規劃發布的action消息,由機器人控制器端接收該消息後控制機器人完成運動。從上邊的話題列表中,可以找到follow_joint_trajectory,由模擬機器人的控制器插件訂閱。

打開啟動的ur5.launch文件,可以看到以下代碼段:

<rosparam file="$(find ur_gazebo)/controller/arm_controller_ur5.yaml" command="load"/> <node name="arm_controller_spawner" pkg="controller_manager" type="controller_manager" args="spawn arm_controller" respawn="false" output="screen"/>

控制器管理節點controller_manager啟動了一個arm_controller插件,該插件的配置可以查看arm_controller_ur5.yaml文件:

arm_controller: type:position_controllers/JointTrajectoryController joints: -shoulder_pan_joint -shoulder_lift_joint -elbow_joint -wrist_1_joint -wrist_2_joint - wrist_3_jointconstraints: goal_time: 0.6 stopped_velocity_tolerance: 0.05 shoulder_pan_joint: {trajectory: 0.1, goal: 0.1} shoulder_lift_joint: {trajectory: 0.1, goal: 0.1} elbow_joint: {trajectory: 0.1, goal: 0.1} wrist_1_joint: {trajectory: 0.1, goal: 0.1} wrist_2_joint: {trajectory: 0.1, goal: 0.1} wrist_3_joint: {trajectory: 0.1, goal: 0.1}stop_trajectory_duration: 0.5state_publish_rate: 25action_monitor_rate: 10

從上邊的配置信息中可以看到,arm_controller是一個JointTrajectory類型的控制器,接收follow_joint_trajectory中的軌跡信息後,完成機器人的運動控制。

使用MoveIt!控制UR機器人

ROS中類似於UR5這樣的機械臂控制當然離不開MoveIt!,接下來我們就使用MoveIt!實現對gazebo中UR5的控制。

UR5的控制需要通過follow_joint_trajectory這個action介面實現,這就需要在MoveIt!端配置一個控制器插件,實現該介面的功能。該插件的配置在ur5_moveit_config中已經實現,可以查看ur5_moveit_config功能包中的controllers.yaml文件:

controller_list: - name:"" 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

所以我們並不需要進行任何修改,使用如下命令啟動MoveIt!和rviz,啟動過程會包含所需要的控制器插件:

$ roslaunch ur5_moveit_config ur5_moveit_planning_execution.launchsim:=true$ roslaunch ur5_moveit_config moveit_rviz.launch config:=true

啟動成功後可以看到如下界面。

目前,rviz和gazebo中的UR5應該保持同樣的姿態。在rviz中使用MoveIt!插件選擇一個運動目標姿態,然後點擊「Plan」。如果可以實現運動規劃,就會看到如下規劃軌跡。

再點擊「Execute」按鈕,gazebo中的UR5會按照規劃的軌跡開始運動,rviz中的UR5模型保持同樣的運動姿態,如下圖所示。


更多內容可關注微信公眾號:古月居 (guyue_home)

或訪問古月居網站:

古月居 - 怕什麼真理無窮,進一寸有一寸的歡喜?

www.guyuehome.com


推薦閱讀:

TAG:機器人操作平台ROS | 機器人 |