失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > ubuntu16.04安装UR3/UR5/UR10机械臂的ROS驱动并实现gazebo下Moveit运动规划仿真以及真

ubuntu16.04安装UR3/UR5/UR10机械臂的ROS驱动并实现gazebo下Moveit运动规划仿真以及真

时间:2023-09-29 14:28:12

相关推荐

ubuntu16.04安装UR3/UR5/UR10机械臂的ROS驱动并实现gazebo下Moveit运动规划仿真以及真

在上一节已经进行了UR3机械臂的运动规划仿真,这一节就进行真实的UR3机械臂运动控制。

1. 电脑和UR3机械臂连接配置

在启动UR3机械臂后,笔记本电脑通过网线连接UR3的控制箱,此时需要配置网络连接,网络名就取为ur3,具体配置如下图所示。

配置后,电脑就和UR3机械臂处于同一网关了。

2. 启动真实UR3机械臂

执行以下指令启动UR3机械臂,但是会报错: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机械臂的IP地址

虽然最后提示Robot connected,但是如果此时我们打开另一个终端执行如下指令启动运动规划的话,就会发现有问题:Waiting for /follow_joint_trajectory to come up,如下。

roslaunch ur3_moveit_config ur3_moveit_planning_execution.launch

所以UR3机械臂环境并没有启动成功。当然,我们可以按照错误一步步修改程序,但是因为ur_driver包是旧版驱动,存在较多问题,因此我们直接使用新版驱动包,省去多次解决程序问题的麻烦,去该网页下载,如下图。

下载后将压缩包放在ur工作空间中的 src/universal_robot 目录下,解压提取并命名为 ur_modern_driver,如下。

此时再执行如下指令启动UR3机械臂,报错:const struct hardware_interface::ControllerInfo has no member named hardware_interface。

这个报错只需要将 /src/universal_robot/ur_modern_driver/src/ur_hardware_interface.cpp 文件中相应出错的代码hardware_interface成员改为type即可,如下。

此时再启动UR3机械臂就不会报错了(我这边没有配置robot_ip,是因为直接配置了ur3_bringup.launch),如下图。

然后再执行以下指令,即可成功启动运动规划,如下。

roslaunch ur3_moveit_config ur3_moveit_planning_execution.launch

3. 编程实现UR3机械臂的运动控制

运动规划的python文件配置和运行还是和上一节一样,只更换一下代码就行(具体的关节值要和UR3机械臂初始值有关,避免打到桌子或者人),代码如下,最终效果如下。

#!/usr/bin/env pythonimport sysimport timeimport mathimport rospyimport moveit_commanderfrom geometry_msgs.msg import Pose, PoseStampedfrom trajectory_msgs.msg import *def diaker_move(arm, path):fraction = 0attempt = 0while fraction < 1.0 and attempt < 5:(plan, fraction) = pute_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()

ubuntu16.04安装UR3/UR5/UR10机械臂的ROS驱动并实现gazebo下Moveit运动规划仿真以及真实UR3机械臂的运动控制(3)

如果觉得《ubuntu16.04安装UR3/UR5/UR10机械臂的ROS驱动并实现gazebo下Moveit运动规划仿真以及真》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。