ubuntu16.04安装UR3/UR5/UR10机械臂的ROS驱动并实现gazebo下Moveit运动规划仿真以及真实UR3机械臂的运动控制(3)
在上一節(jié)已經(jīng)進(jìn)行了UR3機(jī)械臂的運動規(guī)劃仿真,這一節(jié)就進(jìn)行真實的UR3機(jī)械臂運動控制。
1. 電腦和UR3機(jī)械臂連接配置
在啟動UR3機(jī)械臂后,筆記本電腦通過網(wǎng)線連接UR3的控制箱,此時需要配置網(wǎng)絡(luò)連接,網(wǎng)絡(luò)名就取為ur3,具體配置如下圖所示。
配置后,電腦就和UR3機(jī)械臂處于同一網(wǎng)關(guān)了。
?
?2. 啟動真實UR3機(jī)械臂
執(zhí)行以下指令啟動UR3機(jī)械臂,但是會報錯:AttributeError: 'RobotStateRT' object has no attribute 'q_actual'以及Exception: Fatal error when unpacking RobotState packet。
roslaunch ur_bringup ur3_bringup.launch robot_ip:=192.168.0.100 # 192.168.0.100 是UR3機(jī)械臂的IP地址雖然最后提示Robot connected,但是如果此時我們打開另一個終端執(zhí)行如下指令啟動運動規(guī)劃的話,就會發(fā)現(xiàn)有問題:Waiting for /follow_joint_trajectory to come up,如下。
roslaunch ur3_moveit_config ur3_moveit_planning_execution.launch?所以UR3機(jī)械臂環(huán)境并沒有啟動成功。當(dāng)然,我們可以按照錯誤一步步修改程序,但是因為ur_driver包是舊版驅(qū)動,存在較多問題,因此我們直接使用新版驅(qū)動包,省去多次解決程序問題的麻煩,去該網(wǎng)頁下載,如下圖。
?下載后將壓縮包放在ur工作空間中的 src/universal_robot 目錄下,解壓提取并命名為 ur_modern_driver,如下。
?此時再執(zhí)行如下指令啟動UR3機(jī)械臂,報錯:const struct hardware_interface::ControllerInfo has no member named hardware_interface。
?這個報錯只需要將 /src/universal_robot/ur_modern_driver/src/ur_hardware_interface.cpp 文件中相應(yīng)出錯的代碼hardware_interface成員改為type即可,如下。
?此時再啟動UR3機(jī)械臂就不會報錯了(我這邊沒有配置robot_ip,是因為直接配置了ur3_bringup.launch),如下圖。
?然后再執(zhí)行以下指令,即可成功啟動運動規(guī)劃,如下。
roslaunch ur3_moveit_config ur3_moveit_planning_execution.launch?
3. 編程實現(xiàn)UR3機(jī)械臂的運動控制
運動規(guī)劃的python文件配置和運行還是和上一節(jié)一樣,只更換一下代碼就行(具體的關(guān)節(jié)值要和UR3機(jī)械臂初始值有關(guān),避免打到桌子或者人),代碼如下,最終效果如下。
#!/usr/bin/env pythonimport sys import time import math import rospy import moveit_commander from geometry_msgs.msg import Pose, PoseStamped from trajectory_msgs.msg import *def diaker_move(arm, path):fraction = 0attempt = 0while fraction < 1.0 and attempt < 5:(plan, fraction) = arm.compute_cartesian_path(path, 0.01, 0.00)attempt += 1if fraction < 0.8:rospy.loginfo("======= motion fail ======= " + str(fraction))arm.execute(plan, wait=True)if __name__ == '__main__': rospy.init_node('ur3_moveit')moveit_commander.roscpp_initialize(sys.argv)arm = moveit_commander.MoveGroupCommander('manipulator')position = [-0.84, -2.20, -1.02, -1.56, 1.49, 5.71]arm.set_joint_value_target(position)traj = arm.plan()arm.execute(traj)position = [-1.32, -2.69, -0.56, -1.56, 1.49, 5.71]arm.set_joint_value_target(position)traj = arm.plan()arm.execute(traj)moveit_commander.roscpp_shutdown()?
總結(jié)
以上是生活随笔為你收集整理的ubuntu16.04安装UR3/UR5/UR10机械臂的ROS驱动并实现gazebo下Moveit运动规划仿真以及真实UR3机械臂的运动控制(3)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu16.04安装UR3/UR5
- 下一篇: ERROR: cannot launch