目录
一、最终效果展示
- 效果展示
实现UR机械臂指定位姿控制
- 结果分析
move.cpp:期望位姿;rviz2:检测到的位姿;ur_sim:机械臂的实际位姿
位姿:位置(position)和姿态(orientation)
通过观察可以发现,经过轨迹规划运动后,UR机械臂在一定误差允许范围内达到了期望的位姿。
二、整体架构
这里的user_pkg、move_group、user_driver都是功能包;
我们可以使用ur_sim代替真实的ur_robots
三、模块说明
- 3.1 user_pkg
这个功能包是用户自定义的,主要作用是下发目标位姿,用户可以根据moveit2提供的官方例程实现。
- 3.2 move_group
move_group功能包可以通过moveit_setup_assistant工具生成,其主要是运行两个节点(moveit_group node、rviz node),有了moveit_group node就可以实现与user_node和user_driver中节点的通信。
- 3.3 user_driver
user_driver作为用户的自定义功能包,实际上是基于UR官方提供的Universal_Robots_ROS2_Driver中的ur_robot_driver驱动,其中更多的是增加了自定义的一些配置,但驱动部分还是使用ur_robot_driver。
- 3.4 ur_robot
这里用ur_sim代替真实的UR机器人。
move_group、user_driver的构造主要参考UR官方教程中的Universal Robots ROS tutorials,这个教程主要是帮助用户运行他们的自定义用例。
整个教程主要分成三步:
- Assembling the URDF:构造符合用户需求的自定义机器人模型
- Start the ur_robot_driver:构造符合机器人模型需求的驱动功能包(基于ur_robot_driver)
- Build the MoveIt! config:通过moveit_setup_assistant创建moveit_group功能包
四、模块接口说明
- 4.1 目标位姿的发放(User_node<->move_group)
在“Universal_Robots_ROS2_Driver实现UR机械臂仿真控制(1)”中,我们最终实现了通过可视化的方式调用MoveIt中的命令完成机械臂仿真控制。但我们知道在实际控制中,我们需要定量的位姿目标来实现控制目的,而不是可视化的面板操作方式。
move_group node为用户提供了两种主要接口,一种是GUI接口,即我们的可视化操作接口;另一种是编程接口(c++/python)。本示例中主要通过c++接口(move_group_interface)实现自定义节点与move_group node的通信,完成目标位姿的发放。
move_group_interface(ROS Wrappers in C++)是通过脚本程序使用Moveit的最简单的方法,十分适合初学者,提供对MoveIt的许多功能的统一访问。
Using MoveIt Directly Through the C++ API:
使用MoveIt构建更复杂的应用程序通常需要开发人员深入研究MoveIt的c++ API。另外,使用c++ API可以直接跳过许多ROS服务/操作层,从而显著提高性能。
- 4.2 轨迹规划与下发(move_group<->user_driver)
move_group获取目标位姿后,根据
/joint_states topic提供的关节信息,通过内部规划器实现轨迹规划,并将轨迹点通过 FollowJointTrajectoryAction 发送给UR机械臂上运行的控制器。
利用 moveit_setup_assistant 生成 moveit_config 包时,会生成配置 moveit_controllers 和 ros2_controllers 两种控制器,其中 moveit_controllers 是虚拟控制器,并不具备实际的控制能力,其主要作用是负责连接MoveIt的运动规划器和底层控制器(ros2_controllers),确保生成的轨迹能够被底层控制器实际执行。由于moveit_controllers的映射作用,要求 moveit_controllers.yaml 中配置的控制器名称和类型要与 ros2_controllers 中的实际控制器的保持一致,否则会导致控制器不匹配问题,进而无法发送轨迹到指定底层控制器。
- 4.3 user_driver控制器驱动
这部分可以参考Universal_Robots_ROS2_Driver实现UR机械臂仿真控制(1)的UR机械臂驱动接口。
标签:group,Driver,Universal,move,driver,Robots,UR,位姿,moveit From: https://blog.csdn.net/m0_60079093/article/details/143772217