遨博协作机器人ROS开发 - MoveIt!设置助手机械臂配置

目录

一、简介

二、环境版本

三、学习目标

四、知识储备

五、任务实施

1.MoveIt!设置助手加载机械臂URDF文件

2.生成Self-Collisions自碰撞矩阵

3.添加虚拟关节

4.添加计划组

5.添加机器人姿态

7.添加被动关节

8.配置ROS Control

9.Gazebo模拟

10.设置3D感知

11.作者信息

12.生成配置文件

六、任务拓展

七、课堂小结

八、课后练习


一、简介

大家好,欢迎关注遨博学院带来的系列技术分享文章(协作机器人ROS开发),今天我们来学习MoveIt!设置助手机械臂配置。

在前面课程中,我们生成了机械臂的URDF模型文件,本节课讲解如何使用URDF文件,生成ROS系统下的MoveIt!配置功能包。

MoveIt!设置助手机械臂配置

二、环境版本

  • 主机系统版本:Windwos10 64位
  • 处理器型号:Intel-i7
  • 虚拟机版本:VMware Workstation 16 Pro
  • 虚拟机系统:Ubuntu 18.04.6 LTS
  • ROS版本:Melodic

三、学习目标

四、知识储备

首先了解SRDF概念。

下面介绍MoveIt!设置助手,它是一个图形用户界面,用于配置任何机器人以与MoveIt!一起使用。

五、任务实施

MoveIt!设置助手机械臂配置包含以下步骤,可以通过微课实操演示进行学习。

1.MoveIt!设置助手加载机械臂URDF文件

本微课在ROS工作空间目录(~/ws_moveit/)下进行,若没有可执行如下命令创建:

 将aubo_description.tar.xz压缩包拖拽拷贝至虚拟机~/ws_moveit/src目录下,并解压;

执行如下命令编译: 执行如下命令启动MoveIt!设置助手: 

 这将打开带有两个选项的开始屏幕:创建新的MoveIt配置包或编辑现有的MoveIt配置包。

单击【Create New MoveIt Configuration Package】按钮以显示以下屏幕:

 单击【Browse】按钮并导航到安装上述aubo_description软件包时安装的aubo_e5.urdf文件。(此文件安装在~/ws_moveit/src/aubo_description/urdf/aubo_e5.urdf中)选择该文件,然后单击【Load Files】。设置助手将加载文件(这可能需要几秒钟)。

2.生成Self-Collisions自碰撞矩阵

默认自碰撞矩阵生成器搜索机器人上可以安全禁用碰撞检查的链接对,从而减少运动规划处理时间。当这些链接对总是处于碰撞中,从不发生碰撞,在机器人默认位置发生碰撞时,或者当链接在运动链上彼此相邻时,这些链接对将被禁用。采样密度指定要检查自碰撞的随机机器人位置数。较高的密度需要更多的计算时间,而较低的密度则更有可能禁用不应禁用的对。默认值为10,000次碰撞检查。碰撞检查是并行完成的,以减少处理时间。

单击左侧的Self-Collisions窗格选择器,然后单击【Generate Collision Matrix】按钮。设置助手将工作几秒钟,然后在表格中显示其计算结果。

3.添加虚拟关节

虚拟关节主要用于将机器人连接到世界。对于本aubo_e5机械臂,我们将只定义一个虚拟关节,将aubo_e5的base_link附加到World框架。这个虚拟关节代表了机器人底座在平面内的运动。

  • 单击【Virtual Joints】窗格选择器。单击添加虚拟关节。
  • 将关节名称设置为“virtual_joint”。
  • 将子链接设置为“base_link”,将父框架名称设置为“world”。
  • 将关节类型设置为“fixed”。
  • 单击【Save】按钮保存

4.添加计划组

计划组用于从语义上描述机器人的不同部分,例如定义手臂或末端执行器是什么。

  • 单击【Planning Groups】窗格选择器。
  • 单击【Add Group】,您应该会看到以下屏幕:
  • 添加手臂
  • 输入组名称为aubo_e5
  • 选择kdl_kinematics_plugin/KDLKinematicsPlugin作为运动学求解器。
  • 【Group default planner】选择RRTConnect。

 现在,单击【Add Joints】按钮。您将在左侧看到关节列表。您需要选择属于手臂的所有关节并将它们添加到右侧。关节按照它们存储在内部树结构中的顺序排列。这使得选择一系列关节链变得容易。

单击【shoulder_joint】,按住键盘上的Shift按钮,然后单击【wrist3_joint】。现在单击【>】按钮将这些关节添加到右侧的选定关节列表中。

 单击【Save】以保存所选组。

回到添加计划组界面后双击【Chain】,点开Robot Links。选中base_link后,点击下方的【Base Link】右侧的【Choose Selected】按钮。之后选中wrist3_link后点击下方【Tip Link】右侧的【Choose Selected】按钮,如图:

点击【Save】保存退出。

5.添加机器人姿态

设置助手允许您将某些固定姿势添加到配置中。例如,如果您想将机器人的某个位置定义为Home位置,这会有所帮助。

单击【Robot Poses】窗格。

单击【Add Pose】。为姿势选择一个名称。机器人将处于其默认位置,其中关节值设置为允许关节值范围的中间值。移动各个关节直到您满意为止,然后保存姿势。请注意姿势如何与特定组相关联。您可以为每个组保存单独的姿势。

6.标记末端执行器

本机械臂模型暂未添加末端夹手,本步可先略过。

7.添加被动关节

被动关节选项卡旨在允许指定机器人中可能存在的任何被动关节。这些是机器人上未驱动的关节(例如被动脚轮)。这告诉规划者他们不能(运动学上)规划这些关节,因为它们不能被直接控制。本机械臂没有任何被动关节,因此我们将跳过这一步。

8.配置ROS Control

ROS Control是ROS官方提供的针对控制机器人的一套硬件驱动框架,针对不同的运动执行器提供不同的驱动接口,在这之上又加入了一个硬件抽象层统一接入ROS,包含了一系列ROS包: controller interfaces, controller managers, transmissions and hardware_interfaces。

这里我们可以通过ROS Control面板为关节添加模拟控制器,这样就可以通过MoveIt模拟机械臂运动。

  • 选择左侧【ROS Control】
  • 点击【Add Controller】
  • 首先为arm规划组添加position controller
  • 定义名称为aubo_e5_controller
  • 选择【controller type】为position_controllers/JointTrajectoryController

  • 下一步是添加控制的关节,这里可以单个关节添加,也可以添加整个规划组。这里选择后者,点击【Add Planning Group Joints】。
  • 选择规划组aubo_e5并添加到右侧。

  • 点击【Save】保存。

9.Gazebo模拟

如果需要,模拟选项卡可用于通过生成新的Gazebo兼容urdf来帮助您使用Gazebo模拟您的机器人。

10.设置3D感知

3D Perception 选项卡用于设置YAML配置文件的参数,用于配置3D传感器sensor_3d.yaml。例如双目相机。

11.作者信息

Catkin需要作者信息用于发布目的。

单击“Author Information”窗格。

输入您的姓名和电子邮件地址。

12.生成配置文件

最后一步,生成开始使用MoveIt所需的所有配置文件。

单击【Configuration Files】窗格。为将生成的包含新配置文件集的ROS包选择一个位置和名称。单击【Browse】,选择一个合适的位置(例如,您的主目录),单击【创建新文件夹】,将其命名为“aubo_e5_moveit_config”,创建完成后然后单击【Open】。

 单击【Generate Package】按钮,出现弹窗,点击【OK】按钮继续。安装助手现在将生成一组启动和配置文件并将其写入您选择的目录中。所有生成的文件都将出现在“生成的文件/文件夹”选项卡中,您可以单击每个文件以了解它们所包含的内容。

至此,就完成了MoveIt包的配置,点击【Exit Setup Assitant】退出。

六、任务拓展

通过文件浏览器查看生成的MoveIt配置功能包,熟悉各文件夹及文件的作用与用途。

七、课堂小结

说明:本微课仅用于学习ROS系统下的MoveIt设置助手的使用流程。后续在ROS下编程使用遨博官方提供的ROS MoveIt功能包。具体内容详见往期ROS课程。

通过本篇文章的学习,用户可以基本掌握MoveIt设置助手配置遨博E5机械臂的使用方法,小结如下。

八、课后练习

在接下来的ROS课程中,我们会讲解《遨博机械臂ROS通讯机制》,欢迎持续关注。

<think>好的,我现在需要帮助用户解决如何在Aubo i5机器人配置MoveIt2并通过代码实现路径规划的问题。首先,我得回忆一下用户提供的引用内容,这些引用提到了一些配置步骤和可能出现的错误,比如运行roslaunch命令时指定IP地址的问题。用户之前可能遇到了连接机械时的网络配置问题,或者驱动启动失败的情况,所以现在需要配置MoveIt2和路径规划代码。 首先,我需要确定MoveIt2的配置流程。MoveIt1和MoveIt2有些不同,用户可能已经安装了相关的配置包,比如aubo_i5_moveit_config。根据引用[1]和[2],用户之前可能已经成功启动了MoveIt1的环境,但现在需要迁移到MoveIt2。不过,目前Aubo机械的官方支持可能主要还是基于MoveIt1,因为MoveIt2相对较新,可能社区支持还不够完善。因此,可能需要确认用户是否确实需要MoveIt2,或者是否有可用的MoveIt2配置包。 假设用户已经确认有适用于MoveIt2的配置,或者愿意进行迁移,那么接下来需要指导用户如何配置。首先,安装相关的ROS2包和MoveIt2依赖。然后,配置机械的URDF文件和MoveIt2配置文件,这可能涉及到从MoveIt1迁移到MoveIt2的步骤,因为两者的配置文件结构有所不同。用户可能需要使用MoveIt Setup Assistant来生成新的配置,或者调整现有的配置文件以适应MoveIt2。 接下来是网络配置部分,确保机械的IP地址正确,ROS2能够与机械的控制器通信。引用中提到设置robot_ip参数,这在MoveIt2中同样重要,需要在launch文件中正确指定,或者在代码中动态配置。 然后是实现路径规划的代码部分。在MoveIt2中,通常使用C++或Python的API来编写运动规划代码。需要指导用户如何初始化MoveGroupInterface,设置目标位置或姿态,进行规划并执行。同时,可能需要处理运动学求解器的配置,比如选择kdl或trac_ik插件,并确保参数正确。 此外,用户可能遇到驱动问题,如引用[3]中的错误,这可能涉及到机械驱动是否兼容MoveIt2,或者在ROS2中的驱动程序是否存在。如果官方驱动仅支持ROS1,可能需要通过ros1_bridge桥接,但这会增加复杂性。需要提醒用户检查驱动兼容性,并参考官方文档或社区资源。 最后,生成相关问题,帮助用户深入理解可能遇到的挑战,比如如何调试规划失败、如何处理实时控制、如何优化轨迹等。需要确保回答结构清晰,分步骤说明,同时引用之前的配置示例来增强可靠性。</think>### Aubo i5 配置 MoveIt2 路径规划代码实现教程 #### 一、环境配置 1. **安装ROS2与MoveIt2** - 确认系统环境为Ubuntu 22.04 + ROS2 Humble - 安装MoveIt2核心包: ```bash sudo apt install ros-humble-moveit ``` - 检查Aubo机械ROS2驱动包是否支持MoveIt2,需确认官方或社区是否提供`aubo_ros2`适配包[^3]。 2. **网络配置** - 设置机械与控制端的IP为同一网段,例如机械IP设为`192.168.1.40`,PC端IP设为`192.168.1.100` - 在launch文件中指定机械IP: ```xml <launch> <arg name="robot_ip" default="192.168.1.40"/> <include file="$(find aubo_i5_moveit_config)/launch/moveit_planning_execution.launch"> <arg name="robot_ip" value="$(arg robot_ip)"/> </include> </launch> ``` #### 二、MoveIt2接口调用 1. **Python代码实现** ```python # 导入MoveIt2 Python接口 from moveit.core.robot_model import RobotModel from moveit.planning import MoveItPy # 初始化MoveIt2moveit = MoveItPy(node_name="aubo_planner") # 创建运动规划组 arm_group = moveit.get_planning_group("manipulator") # 设置目标姿态(示例:关空间目标) joint_goal = [0.0, -1.57, 1.57, 0.0, 0.0, 0.0] arm_group.set_joint_value_target(joint_goal) # 执行路径规划 plan_result = arm_group.plan() if plan_result: arm_group.execute() # 执行规划轨迹 ``` 2. **关键参数配置** - 在`moveit_config`包中检查`kinematics.yaml`文件: ```yaml manipulator: kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin kinematics_solver_timeout: 0.005 ``` #### 三、调试技巧 1. **可视化验证** - 通过RViz2加载机械模型: ```bash ros2 launch aubo_i5_moveit_config demo.launch.py ``` - 使用MoveIt2的MotionPlanning插件手动测试规划可行性[^2] 2. **常见错误处理** - **驱动连接失败**:检查防火墙设置与IP连通性 - **规划失败**:调整`planner_configs`参数或尝试不同规划算法(如RRT、PRM) - **执行抖动**:在`joint_limits.yaml`中设置合理的速度/加速度限制 ```python # 示例:添加路径约束 from moveit.core import Constraints constraints = Constraints() constraints.name = "joint_limits" constraints.joint_constraints = [ {"joint_name": "shoulder_joint", "position": 0.0, "tolerance_above": 0.01, "tolerance_below": 0.01} ] arm_group.set_path_constraints(constraints) ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值