为什么使用Industrial_trajectory_filters包?因为Moveit生产的轨迹是等距而非等时的。但是在工业应用的机器人中,通常都是按照固定的周期来控制关节轴运动。因此moveit原生的轨迹与实际机器人控制需求之间存在不匹配,这就需要通过一定的方法或工具来进行对接。Industrial_trajectory_filters功能包便可以解决轨迹对接匹配问题。为了使用Industrial_trajectory_filters包,我们首先先要了解moveit中的Planning Request Adapters的概念。

#Planning Adapter
Planning Request Adapter是Moveit中的一个概念,它可以用来修改轨迹。在Moveit中已有的Planning adapter包括AddTimeParameterization、FixWorkspaceBounds、FixStartBounds、FixStartStateCollision、FixStartStatePathConstraints、CHOMPOptimizerAdapter等等。使用Planning Adapter的概念,多个运动规划算法可以在一个pipeline中使用来产生具有鲁棒性的运动规划。例如,一个运动规划的采样pipeline可能包含了一个初始的由OMPL产生的规划,然后由CHOMP来优化产生比单独使用OMPL或CHOMP更好的路径。类似地,使用Planning Adapter的概念,依赖于机器人的操作环境,其他的运动规划器也可以进行混合和匹配。

Filters

Industrial_trajectory_filters包中包含了过滤机器人轨迹的方法。这些方法针对于工业机器人的应用。

uniform_sample_filter

对一个规划的轨迹进行重采样,在采用点之间使用统一的时间步进。重采样通过在关节空间中使用一个高阶样条曲线来完成。该过滤器需要全定义的轨迹,即轨迹点包含位置、速度和加速度。

参数

sample_duration (float) — 两个路径点间的时间步进值(单位为秒)

n_point_filter

将轨迹减少为<=N个轨迹点。这个减少过程仅使用已存在的点(并不做重采样和插值的过程)。这个filter最好与均匀采样轨迹一起使用,但也不是必须的。如果轨迹本身就少于N个点,那么这个filter就不起作用。

参数

n_points (float) — 最大路径点数量(>=2)

在Moveit中应用Filter

Planning Request Adapter - 普通用法

为了在由Moveit产生的package中使用新的Planning Request Adapter,需要做下面的工作:

  1. 打开由moveit产生的实际机器人package中的ompl_planning_pipeline.launch文件,添加你的filter到planning_adapters列表的第一行:
<arg name="planning_adapters" value="my_filter_package/MyFilterdefault_planner_request_adapters/AddTimeParameterizationdefault_planner_request_adapters/FixWorkspaceBoundsdefault_planner_request_adapters/FixStartStateBoundsdefault_planner_request_adapters/FixStartStateCollisiondefault_planner_request_adapters/FixStartStatePathConstraints" />
  1. 在同样的launch文件中,用ROS的方式声明你的filter所使用的参数,例如
<param name="my_filter_parameter" value="0.005">
  1. 到了这里,你就可以使用filter了。从机器人的moveit配置包中运行demo.launch,并使用Rviz中的MovePlanningPlugin创建一个规划路径,如果filter有输出,那么就能直接看到生成的轨迹输出。

示例

下面的例子使用industrial_trajectory_filters包中的均匀采样过滤器。

  1. 按照上面的步骤,将UniformSampleFilter加入到planning_adapters中,并配置参数:
<arg name="planning_adapters" value="industrial_trajectory_filters/UniformSampleFilterdefault_planner_request_adapters/AddTimeParameterizationdefault_planner_request_adapters/FixWorkspaceBoundsdefault_planner_request_adapters/FixStartStateBoundsdefault_planner_request_adapters/FixStartStateCollisiondefault_planner_request_adapters/FixStartStatePathConstraints" />
<param name="sample_duration" value="0.2"/>

完成这样的配置后,再由Moveit生成的轨迹就是固定时间步进的均匀采样点。

关于如何让moveit输出固定时间步长的轨迹点相关推荐

  1. 【python】无规律时间步长时序数据转为固定步长

    写在前面 日常可能会遇到时间步长无规律的数据,需要转化为固定时间步长,此时需要进行重采样或插值. 例子 在选择好时间间隔后,可以用pandas的resample来操作. import pandas a ...

  2. Fluent非稳态工况模拟中固定时间步数据输出

    Fluent非稳态工况模拟中固定时间步数据输出 1. 在fluent操作界面中,双击解决方案中的报告定义(report definitions) 2. 弹出的界面中,点击new后选择需要进行报告的数据 ...

  3. 【Kettle】如何输出固定格式报表

    我的工作是为公司分析部门提供数据,其中一部分是固定时间点提取的报表,这些报表的格式固定,每次机械化的修改参数→提取数据→复制粘贴,实在是繁琐.下面介绍一个我工作中使用kettle输出固定格式报表的例子 ...

  4. Multisim10中仿真时间步长与数码显示管的类型有关

    用Multisim10仿真一个数字频率计数器,单个模块仿真很顺利,无论是计数部分还是秒脉冲发生电路都正常工作,但最后连起来仿真的时候就无语了,由于要测量1s内的输入信号的频率,按道理说如果输入信号是1 ...

  5. ansys workbench17.0 lsdyna模块设置时间步长

    笔者在通过workbench中的lsdyna模块计算显式动力学分析时,遇到了得出结果时间步长过长的问题.由于受fluent思维的影响一直想改变分析设置的时间步长设置,但是一直找不到,今日通过看另一位大 ...

  6. STM32配置DAC输出固定电压和方波

    STM32F103VCT6自带两个12位DAC,DAC的转换速度一直没有查到,网上有人说是1MHZ的频率,那就是1us了.ADC的转换时间在56MHZ工作频率下为1us,在72MHZ工作频率下为1.1 ...

  7. 【限流算法】java实现固定时间窗口算法

    本文实现了一种基于java的固定时间窗口计数器算法 固定时间窗口计数器算法思想:在固定的时间窗口内,可以允许固定数量的请求进入.超过数量就拒绝或者排队,等下一个时间段进入. 优点:和令牌桶相比,这种算 ...

  8. openFOAM中时间步长计算参数是怎样读进程序的——初步理解框架

    内容如题,在阅读完大量的基础代码之后,我们现在可以尝试解读一下chemFOAM中的程序流程.因为内容很多,所以会分好几个子标题讲完. 我们使用openFOAM的过程中,通常是从tutorials中找到 ...

  9. ansys时间步长怎么设置_在 ANSYS Workbench 的动态、静态仿真中,设置子步长(时间步长)的目的分别是什么?_学小易找答案...

    [计算题]塔架静力-地震响应谱分析 Course-Work8_塔架响应谱分析.pdf [简答题]简述虚位移原理与最小势能原理? [简答题]如何对草图中几何模型进行尺寸标注? [简答题]记3-5个单词 ...

最新文章

  1. 阿里开源Sentinel流控框架基本介绍与简单使用
  2. 《Visual C++ 开发从入门到精通》——1.4 技术解惑
  3. mysql使用shell脚本部署_shell脚本部署mysql主从
  4. Hudson-ci/Using Hudson/Installing Hudson/Installing Hudson RPM--官方文档
  5. 17.深浅拷贝和写时拷贝
  6. linux 去掉登陆密码吗,Linux 清除 Windows用户登录密码
  7. Linux环境下Lapack软件包的编译和使用
  8. 2022年MySQL8 OCP最新题库整理,传授有缘人
  9. 微信小程序下拉刷新真机没效果_微信小程序下拉刷新上拉加载的两种实现方法...
  10. 爬取王者荣耀网站所有英雄皮肤图片
  11. 计算机桌面图标多一个箭头,怎么去掉电脑桌面图标箭头(一个小妙招解决win图标小箭头)...
  12. kernel - regulator
  13. 微信聊天记录删除了怎么恢复?通过这几种方法可以找回
  14. 法国大数据:智慧城市中的大数据
  15. 权值衰减weight decay的理解
  16. 微信小程序页面跳转后不显示内容
  17. python @符号
  18. Unity 小游戏-打砖块
  19. 【取模软件PCtoLCD2002使用教程】
  20. 投资理财-朋友好像的故事

热门文章

  1. 经纬度距离查询优化实例
  2. 前端-vue-node.js+很多学习资料
  3. 期货柜台怎样进行配置?
  4. 51nod 1009 数字1的数量(数学)
  5. SQL SERVER 链接服务器Mysql
  6. POC和frame_num的概念
  7. 使用uglifyjs压缩JS文件
  8. SpringSecurity 源码解析 | 加JWT 实战 之 授权流程源码分析
  9. 【2020算法练习一】笔试算法题 快手2020校园招聘秋招笔试--算法A试卷
  10. 一个最简单的shell程序