ROS探索总结-61.MoveIt!编程驾驭机械臂运动控制

说明:

介绍MoveIt!编程驾驭机械臂运动控制

正文

本讲我们将从以下四个部分进行讲解。

首先来回顾下MoveIt!编程接口的框架。

MoveIt!提供三种主要的交互方式:C++接口、Python接口以及上位机Rivz插件接口,无论哪种形式,底层都是和move_group核心节点交互,完成功能算法的调用。

对比C++和Python两种编程方式,在流程上完全一致,API接口的名字也基本相同。

完整的MoveIt!程序流程如下,不可或缺的步骤是:确定控制对象的规划组、设置目标位姿、进行运动规划、执行规划轨迹。

API接口众多,而且有多态性,所以在开发过程中大家一定离不开官方的API文档,这里有最完整的接口介绍。

接下来我们就来了解一下MoveIt!中的关键编程方法,第一种是关节空间运动。

在关节空间运动中,机械臂各轴独立完成轨迹插补,终端轨迹是自由曲线,常用于码垛、搬运、分拣等对运动轨迹没有强制约束的场景,其中的关键就是对目标姿态的描述。

可以在关节空间下直接通过各轴的位置描述目标姿态,这里需要调用MoveIt!提供的set_joint_value_target函数实现。

也可以在工作空间下通过终端的位姿+姿态进行描述,需要调用set_pose_target函数进行设置。

还有很多场景下对机械臂的终端轨迹有要求,那就需要用到笛卡尔空间下的运动规划功能了。

比如让机械臂的终端走出一条直线。

我们可以对比笛卡尔运动和关节空间下经过同样路径点的轨迹区别,如下图所示,一个是自由曲线,一个是直线轨迹。

这里笛卡尔运动规划使用的关键函数是MoveIt!中的compute_cartesian_path,它可以将多个路点waypoints之间通过直线轨迹连接到一起,返回值fraction表示可规划轨迹的覆盖率。

在机械臂运动过程中,如果有障碍物的话,还需要考虑避障的问题。

比如下图中机械臂在运动规划时,就需要考虑到绿色障碍物的避障问题。

MoveIt!中有一个场景监听器模块,就是用来检测外部场景信息的,障碍物可以通过三种方式加入场景中:rviz可视化添加、程序添加、传感器检测。本讲我们主要介绍前两种方式。

在rviz的MoveIt!插件中有一个Scene Object标签页,可以将障碍物模型添加到场景当中来,此后机械臂在运动规划时就会考虑躲避该障碍物了。

另外一种方式是通过程序操作,不仅可以添加外界障碍物,还可以添加机械臂上的附着物体,模拟抓取到的物体,将作为机械臂的一部分,考虑与外界物体的碰撞。

这里涉及的主要函数是add_box和attach_box,前者是将添加的物体作为障碍物,后者是将添加的物体作为机械臂的一部分。

以上就是本讲的内容概要,详细讲解过程和仿真/真机演示请见具体课程。

python做运动控制_ROS探索总结-61.MoveIt!编程驾驭机械臂运动控制相关推荐

  1. 机器人学习必看系列:如何使用moveit控制真实机械臂?

    大家好,我是你们可爱的小鱼.最近关于moveit相关的问题感觉非常多,毕竟机械臂+视觉的应用的确是非常的火爆,小鱼都想直接开课教机械臂运动规划相关的了. 有的同学问小鱼,怎么使用moveit控制真实机 ...

  2. UR机械臂学习(8):Python实现机械臂运动控制(不使用MoveIt)

    以下是在gazebo仿真中使用,如果是控制真实机械臂,只需要修改订阅的话题即可 后期肯定会自己进行轨迹算法规划,用moveit的话想要更换算法太麻烦,所以尝试自己写程序不通过moveit来控制机械臂. ...

  3. python控制机械臂6轴_基于Firmata协议的ROS Moveit六轴机械臂设计

    ROS(Robot Operating System,开源机器人操作系统)是目前较为火热的一个一个机器人开发者平台.依赖于强大的资源库和开发者社区,ROS可以说是风靡全球. 在机器人开发的领域,机械臂 ...

  4. ROS下如何使用moveit驱动UR5机械臂

    转载:http://blog.csdn.net/jayandchuxu/article/details/54693870 原来的moveit实在Ubuntu12.04上安装的,ros版本是hydro, ...

  5. Moveit实际的机械臂控制(4)修改机械臂配置文件实现真实控制

    该部分内容主要参考合工大机器人实验室的内容,但是由于版本问题,我们可能好多地方的内容有些不一样. 一.需要修改的内容 1.1 demo.launch文件中参数fake_execution的值改为fal ...

  6. ros通过moveit控制真实机械臂

    1.demo.launch文件 在生成的demo.launch文件中,参数fake_execution的值改为false <include file="$(find tk7arm_mo ...

  7. 我终于实现Moveit+gazbeo对机械臂的联合仿真控制了

    开发机械臂,别的问题都好商量,但是对于实体机械臂这个烧钱的东西来说,绝对是一大批开发者的拦路虎.方法总比困难多.对于没有实体机械臂只能进行仿真的人来说,gazebo可真是太香了.但是浏览了一众网上的的 ...

  8. 不愧是大佬用Python做一个游戏辅助脚本,完整编程思路分享!

    一.说明 简述:本文将以4399小游戏< 宠物连连看经典版2 >作为测试案例,通过识别小图标,模拟鼠标点击,快速完成配对.对于有兴趣学习游戏脚本的同学有一定的帮助.文末有Python资料和 ...

  9. 用python做tkinter_Python下用Tkinter进行GUI编程

    Python可用的GUI编程的包很多,Tkinter也是其中一个半标准的工具包. 作为一个老牌的Python GUI工具包(皮皮书屋里找了本书,竟然是2001年的),它由Tk GUI包装而来.在Win ...

最新文章

  1. 使用容器的概念理解多维数组和多维空间
  2. pygame加载中文名mp3文件出现error
  3. 【JZOJ4307】喝喝喝
  4. Ubuntu 11.10不得不知的快捷键
  5. iOS 静态度制作方法详细
  6. 四、纤维素纤维使用P-N系阻燃剂协同作用的原理?
  7. tensorflow windows
  8. yolo 负样本_SSD——样本正负比控制+多尺度检测 (目标检测)(one-stage)(深度学习)(ECCV 2016)...
  9. 服务器挂在公网,如何禁止公司以外的人访问公司网站
  10. linux 按时间查找文件,linux 文件三种时间 和 find 按时间查找
  11. Spring Boot 项目工程模板
  12. 数据结构---哈希表的C语言实现
  13. 那些被苏宁奖励的人、重用的人
  14. Matrix Concatenate 矩阵串联
  15. matlab中:错误使用 handle.handle/set 对象无效或已删除
  16. 网络安全基础课程知识点(1)
  17. 达内python第一次月考题目_第一次月考试卷分析
  18. php开源混合模式吗,CSS3混合模式使用详解
  19. 挖地兔股票数据接口 tushare 初接触
  20. TIA PORTAL 导出导入数据块

热门文章

  1. Apache下的ArrayUtils工具类总结
  2. java 8大happen-before原则超全面详解
  3. 《maven官方文档》5分钟开始Maven
  4. 什么是Code Review 代码审查
  5. Java程序员从笨鸟到菜鸟之(七十九)细谈Spring(八)spring+hibernate整合基本详解
  6. Word中以交叉引用的方式插入参考文献
  7. 回顾我走过的编程之路
  8. 大话设计模式(十 会修电脑不会修收音机?——聊设计模式原则)
  9. 【OpenCV3】OpenCV3.2.0在VS2013环境下Cmake编译与快速配置
  10. react native 网络请求 axios