本文参考Moveit!官方文档。
系统:ubuntu 18.04 / 16.04
ROS:Melodic / Kinetic

概述

基于python的运动组API是最简单的MoveIt!用户接口。其中提供了用户常用的大量功能封装,例如:

  • 设置目标关节控制或笛卡尔空间位置
  • 创建运动规划
  • 移动机器人
  • 在环境中添加对象
  • 将对象与机器人连接或断开

下载示例功能包

我们通过官方的示例功能包来分析该API的用法。首先将两个官方的示例下载到工作空间的src目录并编译:

对Kinetic版本的ROS:

sudo apt-get install ros-kinetic-franka-description
cd ~/catkin_ws/src
git clone -b kinetic-devel https://github.com/ros-planning/moveit_tutorials.git
git clone -b kinetic-devel https://github.com/ros-planning/panda_moveit_config.git
cd ~/catkin_ws/
catkin_make

对Melodic版本的ROS:

sudo apt-get install ros-melodic-franka-description
cd ~/catkin_ws/src
git clone https://github.com/ros-planning/moveit_tutorials.git -b melodic-devel
git clone https://github.com/ros-planning/panda_moveit_config.git -b melodic-devel
cd ~/catkin_ws/
catkin_make

分别是机器人模型、官方教程功能包和panda机械臂的配置功能包。

运行rviz和MoveGroup节点

ctrl+alt+T 打开两个终端,依次运行下列两行命令。第一行命令在终端中加载完毕后,再运行第二行:

roslaunch panda_moveit_config demo.launch
rosrun moveit_tutorials move_group_python_interface_tutorial.py

在第二个终端中依次敲击回车键,在rviz界面中可以看到机器人执行如下动作:

  1. 机器人规划并运动到关节目标位姿
  2. 机器人向目标位姿规划一条路径
  3. 机器人规划了一条笛卡尔空间的路径
  4. 机器人再次规划了一条笛卡尔空间路径
  5. 机器人执行了该笛卡尔空间路径
  6. 在Panda机械臂的末端出现了一个小箱子
  7. 小箱子改变了颜色,表示它现在已经附加在了机械臂上
  8. 机械臂附带着小箱子规划并执行了一条笛卡尔空间路径
  9. 小箱子再次改变颜色,说明它现在已经脱离了机械臂
  10. 小箱子消失

代码与注释

下面为 move_group_python_interface_tutorial.py 的代码,已将所有注释和打印语句翻译,可直接替换 ~/catkin_ws/src/moveit_tutorials/doc/move_group_python_interface/scripts/ 路径下的同名文件。

友情提示:

要充分理解本章的代码,除了要懂得基本的python语法和面向对象的编程结构以外,还需要有基本的机器人运动学知识,包括但不限于:

  • 理解关节空间位置与笛卡尔空间位姿的区别
  • 什么是路径规划,关节空间与笛卡尔空间路径规划的区别
#!/usr/bin/env python

上一篇文章的遗留问题:公差检测函数 all_close()决定动作是否执行

在上一篇文章的最后,我提到了rviz规划界面的不稳定性。这是因为函数all_close()多次用来检测规划状态与当前状态是否相符。在纯粹做运动规划的理想状态下,即使公差很小也不会有什么影响。但实际环境或仿真环境会影响机器人的当前状态。例如由于基座运动、刚度过小导致的位置误差,会使得公差检测不通过,进而导致运动规划失败。这种情况下,应当适当加大允许的公差范围。

值得研究的一个问题

在实验过程中,发现机械臂位姿偶尔会发生跳变,应该是求逆解时的多解造成的。难道 Moveit! 默认求解器无法处理多解情况?这个问题值得研究一下。

演示效果

ROS机械臂的控制API示例https://www.zhihu.com/video/1104515064329170944

参考文献

[1] Move Group Python Interface

matlab机械臂工作空间代码_【ROS-Moveit!】机械臂控制探索(3)——基于python的API示例代码分析...相关推荐

  1. python鸭制作类代码_详解duck typing鸭子类型程序设计与Python的实现示例

    在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格.在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定. 这个概念的名字来源 ...

  2. python 蓝牙开发_基于python实现蓝牙通信代码实例

    这篇文章主要介绍了基于python实现蓝牙通信代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 安装和示例 linux下安装 sudo apt ...

  3. python写安卓app控制蓝牙_基于python实现蓝牙通信代码实例

    这篇文章主要介绍了基于python实现蓝牙通信代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 安装和示例 linux下安装 sudo apt ...

  4. python三维重建代码_基于Python的三维重建开源代码

    [实例简介] 基于Python的三维重建开源代码,包括特征提取,SFM,PMVS以及CMVS等相关功能! [实例截图] [核心代码] sfm-bundler(python) └── sfm-bundl ...

  5. 企业号微信支付 公众号支付 H5调起支付API示例代码 JSSDK C# .NET

    企业号微信支付 公众号支付 H5调起支付API示例代码 JSSDK C# .NET 原文:企业号微信支付 公众号支付 H5调起支付API示例代码 JSSDK C# .NET 先看效果 1.本文演示的是 ...

  6. 编写python扩展模块_《深度剖析CPython解释器》27. 使用Python/C API编写扩展模块:编写扩展模块的整体流程...

    楔子 到目前为止,我们已经介绍了很多关于解释器方面的内容,本来接下来应该要说内存管理的,但是个人觉得应该对前面的系列做一个总结.而最好的方式,就是使用Python/C API编写扩展模块,个人是这么认 ...

  7. matlab机械臂工作空间代码_轻型协作机械臂运动学及工作空间分析

    0 引言 OUR机械臂有别于传统工业机械臂,其特点是体积小.重量轻.有很快的运动速度和较大的活动范围,机械臂的最大运动速度可以达到180°/s,能够处理更复杂.更危险的工作,具有极强的灵活度.精确度和 ...

  8. python彩票分析_数字化场景应用平台加持,开课吧学员Python挑战赛秀出代码精彩...

    来源标题:数字化场景应用平台加持,开课吧学员Python挑战赛秀出代码精彩 企业在数字化转型过程中,如何应对数字化人才短缺成为了最大挑战.同时,很多企业还意识到在外部人才争夺战日益激烈的大背景下,仅仅 ...

  9. css 竖行进度图_前端学习--汇集了大量 CSS 的使用和学习的示例代码

    CSS-Inspiration 这里可以让你寻找到使用或者是学习 CSS 的灵感,以分类的形式,展示不同 CSS 属性或者不同的课题使用 CSS 来解决的各种方法. 目前已有上百种的CSS 实现示例, ...

最新文章

  1. New Video Game Controlled By Kissing
  2. 在dbca建库的时候报ORA-27125错误的解决方法
  3. css3 制作平滑过度动画
  4. 六、pink老师学习笔记——CSS三角形之美 margin负值之美文字围绕浮动元素行内块元素布局的巧妙运用
  5. input内强制保留小数点后两位 位数不足时自动补0
  6. JavaScript 图片切割效果
  7. 牛逼!用 MySQL 实现一个分布式锁,这也太强了。。。
  8. Qt Embedded性能优化详解
  9. SVN的下载和文件更新
  10. Mac将Wps本地文件备份到云端
  11. 机器学习的transformer
  12. xml 中的 大于号,小于号
  13. 搜索引擎Autonomy
  14. RASP技术进阶系列(一):与WAF的“相爱相杀”
  15. 图神经网络系列(一)介绍及基本模型
  16. azure创建centos_如何使用Blazor和Azure计算机视觉创建光学字符读取器
  17. 互联网行测笔试题之最头疼的找规律
  18. 华为云,短信通信,群发推广运营短信,Java版
  19. 星星评分系统代码模板。
  20. Java期末复习速成(八)

热门文章

  1. 使用SWAGGER和ASP.NET CORE设置可选路由参数
  2. Azure认知服务之表单识别器
  3. 如何在ASP.NET Core中使用SignalR构建与Angular通信的实时通信应用程序
  4. 现在就是.Net最好的时代!我赞成,谁反对?
  5. Asp.Net Core Filter 深入浅出的那些事-AOP
  6. 分享一次与SharpDX坑爹Bug刚正面的过程
  7. k8s集群部分常见问题处理
  8. 阅读nopcommerce startup源码
  9. 在kubernetes 集群内访问k8s API服务
  10. 微软 Build 2019:Windows 10 隐退,IE 重生,Azure 成主角