为MoveIt Task Constructor添加GUI界面功能

4 篇文章 2 订阅
4 篇文章 0 订阅


前言

MoveIt 从版本 Noetic 开始,加入了 Task Constructor 框架,其提供了一种灵活和透明的方式来定义和计划由多个相互依赖的子任务组成的操作。该框架使用容器的概念对运动的基本阶段进行分层组织,能够实现运动任务的顺序组合和并行组合

使用 Task Constructor 能够快速的组合出特定场景的运动规划任务,但目前为止,Task Constructor 仅支持使用编写代码的方式,对于部分终端用户来说,代码编写有一些技术要求,对编程语言也需要有一个学习过程。本文介绍一个基于 Task Constructor 开发的图形化界面功能,可用通过使用图形化的界面构建 Task Constructor 的运动规划和执行
在这里插入图片描述

MoveIt Task Constructor 提供了多种容器策略,组合方式非常灵活,本文介绍的图形化功能目前仅支持 Serial Container 以及 MoveTo 和 MoveRelative 两种 stage,其他策略将会在后续完善

本文介绍内容的完整源码可以在 GitHub 下载


1 重构和新建内容

重构和新建内容涉及到对 MoveIt Task Constructor 的构建理解和各个类间的层次关系的理解,本文不再对其做详细解释和说明,读者可以在 GitHub 下载完整源码参考

FilePackageClassComment
task_view.uimoveit_task_constructor_visualization重构增加了execute按钮; 重命名了右键弹出菜单;增加了load/save按钮
task_panel_p.h task_panel.h task_panel.cppmoveit_task_constructor_visualization重构重构了addTask和removeStages函数
task_display.h task_display.cppmoveit_task_constructor_visualization重构增加了interactive marker
container.h container.cppmoveit_task_constructor_core重构增加了通过序号获取stage元素的函数
cartesian_path.h joint_interpolation.hmoveit_task_constructor_core重构增加了planner的获取函数
introspection.cppmoveit_task_constructor_core重构重构instrospection的namespace为公共适应多任务文件的加载
CMakeLists.txtmoveit_task_constructor_visualization重构新增文件的导入
add_task_stage.h add_task_stage.cppmoveit_task_constructor_visualization新增GUI界面的控件属性及其对应的操作逻辑
whi_logo.pngmoveit_task_constructor_visualization新增logo图像

2 使用

2.1 下载并编译

进入 ROS 的工作目录,这里假设工作目录命名为 catkin_workspace:

cd ~/catkin_workspace/src
git clone https://github.com/xinjuezou-whi/moveit_task_constructor.git

随后通过 rosdep 检查并安装所需依赖:

rosdep install --from-paths . --ignore-src --rosdistro $ROS_DISTRO

最后编译,编译完成记得为终端添加工作目录:

catkin build
source ~/catkin_workspace/devel/setup.bash

2.2 运行

编译完成后在 RViz 的 MoveIt 环境中就能添加 Motion Planning Task 插件运行,如果直接运行 MoveIt Task Constructor 的 demo.launch 将不需要其他前置环境的设置,可以直接使用本文 GUI 功能;如果运行其他 MoveIt 的环境,比如 Motion Planning 则需要做一些简单的环境配置

2.2.1 MoveIt Task Constructor 的 demo 运行

运行 Task Constructor 的 demo.launch:

roslaunch moveit_task_constructor_demo demo.launch

右键点击“Motion Planning tasks”,在弹出菜单中选择“Add task or stage”。在弹出的对话框中即可设置 task 的 stage,目前支持 serial container 中的 MoveTo 和 MoveRelative stage。目标 stage 设置完成后,将“Task Solution topic”设置为:

/whi_gui/solution

随后将看到创建的 stage:
在这里插入图片描述

2.2.2 MoveIt 的其他环境运行

首先需要引入“ExecuteTaskSolutionCapability”,否则执行运动路径将不能得到响应。在包含引用“move_group.launch”的 launch 文件后,比如 moveit_config 的“demo.launch",加入如下语句:

<param name="move_group/capabilities" value="move_group/ExecuteTaskSolutionCapability" />

在这里插入图片描述

同时,值得注意的是:MoveIt Task Constructor 在规划路径时会要求获得执行末端的 tip,否则将无法规划路径。这个要求即待控制的机械臂需要配置好 end effector,配置过程可以参考官网说明,这里不再累述

随后,在运行的 RViz 中添加“Motion Planning Tasks”插件:
在这里插入图片描述

当上述环境配置都完成后,即可以通过 MoveIt Task Constructor 构建目标任务,本文的 GUI 功能依然支持原有的编码形式。下面两个示例分别是苇航智能用于演示的 6DOF 机械臂,以及 AR2/3 开源硬件机械臂

WHI 6DOF arm:
在这里插入图片描述

AR2/3 arm:
在这里插入图片描述

2.2.3 循环执行

勾选Loop后,点击Execute,所构建的任务路径将被循环执行:
在这里插入图片描述

保存和加载

构建的任务及其阶段可以保存为yaml文件,并通过从保存的yaml文件中加载来重用:
在这里插入图片描述


如果加载的yaml文件包含了多个任务,则首先需要将“Task Solution topic” 主题设置为“/whi_gui/solution”,否则将只能显示最后一个任务

在这里插入图片描述


总结

ROS 精神在于开源贡献,人人都可以分享自身的成果,同时也享受他人成果带来的便利。本文将对 MoveIt Task Constructor 的图形化界面的拓展开发做了一个分享,希望借此能够给同样运用 ROS 平台的读者多少带来一些参考。

本文说明的源代码,可以完整的在 GitHub 下载,如果文中出现了描述错误以及不清晰的地方,欢迎指正,共同交流:xinjue.zou.whi@gmail.com

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值