前言
本篇主要是对上篇中提到的项目进行MoveItAssistant配置,使得我们能用MoveIt控制机械臂和抓手。
控制效果
夹爪控制
机械臂运动控制
MoveItAssistant配置
首先我觉得,配置MoveItAssistant的前提是URDF文件没啥大问题,可以拿我的文件对照一下
-
先启动MoveItAssistant
roslaunch moveit_setup_assistant setup_assistant.launch
-
首选是自碰撞矩阵,按照默认的Sampling Density自动生成就好了
-
添加一个虚拟关节,把base_link连接起来
-
然后是Group的配置,我记得机械臂是添加一个动力学求解器kdl_kinematics_plugin,然后Add Kin.Chain,然后抓手是直接Add joint(并且只用选择robotiq_85_left_kunckle_joint就可以了,下面会设置Passive Joints被动关节。实际运动的时候发现只要这个关节动了,另一个对称关节也会动)
- Robot Pose就是设置几个常用的姿态,在Rviz里可以很方便的调整,按照需求配置就可以了。我这里给机械臂配置了一个home,然后给抓手配置了open和closed两个状态,这样rviz里就可以直接选择机械臂open还是close
- 然后是配置末端执行器,这个也没啥好说的。(关于这个Parent_link,我在URDF描述文件中抓手的Parent就是ee_link,所以这里也是。)(原来的URDF里还有一个robotiq couple被我移除了,我感觉作用不是很大,还会引起collision)
- 设置被动关节,主要是指定抓手上的关节。除了上面我们已选的那个关节,其他5个都添加进去
- Controllers点击自动生成,但是实际生成的过程中我发现我生成的Controllers文件是空的,然后直接调用了这位前辈的控制器文件ros_controllers.yaml
- 我把他的地址贴出来,如果直接用他的控制器记得【组名】修改成自己的
- 也可以直接去下面看我的项目,直接运行我的项目就可以了.
后来多次操作,我发现我每次用这里自动生成的控制器都是有问题的,所以还是在这位前辈的基础上进行修改
- 简单看下他添加的控制器,一个是FollowJointTrajectory,一个是effort_controllers/JointTrajectoryController,按照
chatGPT
的解释:- "FollowJointTrajectory"是MoveIt中的默认控制器类型之一,它基于机器人关节轨迹进行控制。它使用关节轨迹规划器生成的轨迹信息,通过控制机器人的关节运动来执行规划的轨迹。
- "effort_controllers/JointTrajectoryController"是一种基于关节努力(力或扭矩)控制的控制器类型。与"FollowJointTrajectory"控制器不同,它不仅控制关节的位置,还控制关节的effort。
在选择控制器时,需考虑机器人的特性和所需的控制方式。如果你只需要控制关节的位置来执行运动规划,则选择"FollowJointTrajectory"控制器即可。如果你需要对关节施加特定effort,例如精确的力控制,则可以选择"effort_controllers/JointTrajectoryController"控制器。
- 然后填Author information就可以点击Generate Package了
项目地址
- 我的项目位置
- 主要指令如下:(记得先要catkin build,看我前一篇博客)
- 这个是原版的,没有背景
roslaunch ur5_gripper_moveit_config demo_gazebo.launch
- 这个是我改进后的,有背景
roslaunch levelManager lego_world_moveit.launch
Rviz控制
-
我们用上面的指令启动MoveIt后,Gazebo里先点击一下继续
-
Rviz先Add 一个 Motion Planning出来,修改Fixed Frame为base_link,就可以看到和Gazebo中一样状态的机械臂了
-
规划的时候分别选择不同的Planning Group,并利用不同的Goal State进行规划,先Plan后Execute,就可以看到开头图的效果。
MoveIt指令控制
后面再补充
问题
- 虽然实现了MoveIt控制,但是发现 在Gazebo中“标定”的过程非常困难,如何使得相机坐标系下的物体转变为机械臂base下的坐标系很难。我也没搞懂他们是怎么标定的,所以这个项目暂时先放一下。
参考内容
这个项目的问题就是版本比较老的,一些东西的编译在Ubuntu20.04+Ros Noetic上都会失败
- 然后看到了这个项目,Yolo V5 + Grasp很不错,就决定去复现。
这个项目的话没有用到MoveIt,所以我在这篇文章中用MoveIt来控制机械臂和抓手运动
- 然后配置MoveIt Assistant的过程中参考了这篇文章,写的很不错很详细,给了我很大的帮助。大家可以着重参考我的内容和这篇文章