MoveIt与RobotStudio

本文对比了MoveIt与RobotStudio的功能与应用,MoveIt专长于运动规划,而RobotStudio则侧重于路径仿真实验。文章还介绍了MoveIt中的五种运动规划器及其参数配置的重要性,并提及了noether刀具路径规划包在工业过程中的应用,以及ROS与ABB机器人控制器接口的相关细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、MoveIt与RobotStudio

MoveIt主要用于运动规划,RobotStudio主要用于对规划后的路径进行仿真。两者用途不同,不具有相互替代性。 使用MoveIt可以规划出避免碰撞的笛卡尔路径,但是对于某一个路径点,MoveIt选择的轴配置与RobotStudio选择的轴配置可能会不一样(不清楚有没有办法可以避免),这样就可能存在MoveIt避障规划的路径,在RobotStudio下仿真时出现机械臂连杆与周围环境(比如筛盘,高的零件)碰撞的问题。  

MoveIt进行运动规划可以认为是事前避免(碰撞、不可达、奇异点等)

RobotStudio仿真后矫正,可以认为是事后修改(碰撞,不可达,奇异点等)。

MoveIt进行运动规划有很大可能是可以用的(需要ABB机器人控制器关闭轴配置功能)。MoveIt整合了最新的研究成果,世界各地名校的科研人员和各地工程师一起来迭代这款软件,做工程还是应该尽可能选这类软件。

二、MoveIt 圆弧设置接口

MoveIt中目前包含了5中运动规划器或者优化器。

  1. Open Motion Planning Library (OMPL)
  2. Pilz Industrial Motion Planner
  3. Stochastic Trajectory Optimization for Motion Planning (STOMP)
  4. Search-Based Planning Library (SBPL)
  5. Covariant Hamiltonian Optimization for Motion Planning (CHOMP)

  1. 除了pilz运动规划器没有明确的包含参数的构造函数之外,其他四种规划器(下图仅以CHOMP源码为例)在初始化时都需要输入规划或者优化参数。我不确定这些参数能否满足我们的圆弧调整需要。 对于这类规划算法的参数,调参是一项很重要的工作。调参也就是怎么配置参数能够满足我们的工程需要。  Pilz虽然没有参数设置,但是可以看到它的源码目录下包含轨迹生成圆弧,轨迹生产直线的类。具体怎么使用,能达到什么效果需要我们实践才能知道。

Pilz Industrial Motion Planner

CHOMP 运动规划器 具有参数设置接口

三、noether刀具路径规划(ROS-Industrial)

这个ROS-I包中包含了Advancing Front Meshing Algorithm,可以用于网格表面等值线生成。Add Advancing Front Meshing Algorithm to PCL · Issue #1946 · PointCloudLibrary/pcl (github.com)

该软件包依赖于 PCL 1.9.1+ 和 VTK 7.1+。 如果您使用的是 Ubuntu 系统版本 20.04+ (ROS Noetic/Foxy),您应该已经拥有这些并且可以跳到构建说明。 否则继续安装自定义 PCL 和 VTK 版本。

noether涵盖了一个框架的开发,用于从 3D 几何形状自动生成用于工业过程(例如喷漆或打磨)的高效刀具路径规划。 这项工作被组织成三个主要的软件模块。 第一个模块分析 3D 数据以提取对所需过程而言显着的特征。 第二个模块处理这些特征以生成刀具路径,以最佳地对各个特征执行过程。 最后一个模块,序列规划,确定处理整个零件的最佳顺序。

四、ROS与ABB机器人控制器接口

可以通过下面的接口实现与控制器的数据交互。

ABB机器人驱动接口:

ros-industrial/abb_robot_driver_interfaces: ROS message and service definitions for a ROS driver for ABB robots (github.com)

请注意,所包含的软件包尚未产品化,学术界是目标受众。

软件包按“原样”提供,因此只能获得有限的支持。

### 设置或优化 MoveIt 规划时间参数 #### 配置文件修改 为了设置或优化MoveIt路径规划的时间参数,可以通过编辑配置文件来进行。这些配置文件通常位于`<robot_moveit_config>/config`目录下。具体来说,可以调整`ompl_planning.yaml`文件中的参数以影响规划时间和性能[^1]。 ```yaml # Example of OMPL planning configuration snippet group_name: planner_configs: - SBLkConfigDefault - PRMstarkConfigDefault default_planner_request: planner_id: RRTConnectkConfigDefault num_planning_attempts: 80 allowed_planning_time: 5.0 ``` 上述代码片段展示了如何设定默认使用的规划器以及允许的最大规划时间为5秒。通过增加`allowed_planning_time`的值可延长规划过程所花费的时间,这可能有助于提高找到更优解的概率,但也可能导致整体效率下降。减少此数值则相反,可能会加快响应速度但牺牲了解的质量。 #### 使用STOMP进行轨迹优化 除了基本的OMPL规划外,还可以利用像STOMP这样的高级规划工具来进一步微调轨迹特性。STOMP能够基于随机梯度下降方法迭代改进初始猜测得到平滑且高效的运动方案。对于希望精细化控制整个动作流程的应用场合尤为适用[^2]。 当采用STOMP作为规划组件时,用户可以在其专属配置项内指定更多关于时间轴的信息: ```yaml # STOMP specific settings example stomp_interface: max_num_iterations: 300 cost_per_second_weight: 0.1 collision_cost_weight: 10.0 goal_tolerance: 0.01 ``` 这里定义了最大迭代次数(`max_num_iterations`)、每单位时间内成本权重(`cost_per_second_weight`)以及其他因素的影响程度。适当调节这些系数可以帮助平衡计算资源消耗同最终效果之间的关系。 #### 动态重规划机制 考虑到实际环境中可能存在动态变化的情况,有时单纯依靠一次性的长时间规划并不总是最优选择。因此引入了一种称为“在线重规划”的概念——即让系统能够在执行过程中持续监测环境并适时重新评估当前路线是否仍然有效。这种做法不仅提高了灵活性也增强了系统的鲁棒性[^4]。 ```cpp // C++ API call to trigger replan during execution move_group->asyncExecute(); if (needReplanConditionMet()) { move_group->stop(); // Stop current motion if necessary before replanning. move_group->setStartStateToCurrentState(); move_group->computeCartesianPath(...); } ``` 这段伪代码说明了怎样借助C++接口实现实时监控即时反应的功能组合。每当检测到需要更新现有计划的情形发生时(比如新出现了障碍物),就立即停止正在进行的动作并将最新状态设为新的起始点,随后再次启动新一轮的路径搜索工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值