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

80a2dc5df5a2c4ed7c4358440d4674b9.png
本文参考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! 默认求解器无法处理多解情况?这个问题值得研究一下。

演示效果

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

参考文献

[1] Move Group Python Interface

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/293017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu如何杀死进程

一、得到所有进程 先用命令查询出所有进程 ps -ef 二、杀死进程 我们使用ps -ef命令之后,就会得到一些列进程信息,有进程pid什么的,如果你要杀死莫个进程的话,直接使用命令kill pid

Oracle to_char() to_date() to_number()函数

TO_CHAR 是把日期或数字转换为字符串TO_DATE 是把字符串转换为数据库中得日期类型转换函数TO_NUMBER 将字符转化为数字 TO_CHAR 使用TO_CHAR函数处理数字 TO_CHAR(number, 格式) TO_CHAR(salary,’$99,999.99’); 使用TO_CHAR函数处理日期 TO_CHAR(date,’格式’);  TO_NUM…

妄想性仮想人格障害 新手教程 +改动器

记得上次 HM 教程以后 我如今 继续写 Teatime 新作新手教程 首先我说下 此游戏 模式 AI2机械迷城 一共同拥有5关,结局从文本分析应该至少有两个 本文不是教你怎么玩通结局 安装没什么说的,APP就能够还不明确的上网找找教程 进入游戏后 首先要注意 上面的时间,一个是MM 生命 另外…

如何在宝塔面板启用 ASP.NET CORE 网站并自动申请 HTTPS 证书

要想在 Linux 上部署 ASP.NET CORE 网站,除了使用“宇内流云”大神的 Jexus 之外就是使用 Nginx 对 ASP.NET CORE 网站进行反向代理。常规的做法是在服务器上部署完成 ASP.NET 运行环境、网站程序之后,使用 Supervisor 对网站程序进程进行守护。网站程序…

竟然有如何奇葩的如厕方式......

1 密集恐惧症一下子都好啦(素材来源网络,侵删)▼2 请选择适合您的如厕方式(素材来源网络,侵删)▼3 为什么当年的粉丝没有现在像这样互掐(素材来源网络,侵删)▼4 怕什么…

crm开源系统 tp框架_八个开源的 Spring Boot 前后端分离项目,一定要收藏!

点击蓝色字关注我们前后端分离已经在慢慢走进各公司的技术栈,不少公司都已经切换到这个技术栈上面了。即使贵司目前没有切换到这个技术栈上面,也非常建议大家学习一下前后端分离开发,以免在公司干了两三年,SSH 框架用的滚瓜烂熟&a…

Spark运行原理剖析

http://ihoge.cn/2018/Spark%20Scheduler.html Apache Spark是一个开源的,强大的分布式查询和处理引擎。它提供MapReduce的灵活性和可扩展性,但速度明显更高。 Spark的核心是根据RDD来实现的,Spark Scheduler则为Spark核心实现的重要一环…

硬盘检测工具Smartmontools安装、部署、使用

在服务器管理的实际环境中,硬盘是最容易出现问题及发生故障的硬件,而且硬盘中存储着大量重要的数据,万一出现故障所造成的损失也是无法估计的,轻则需要化费大量的时间与精力去做数据恢复,重则硬盘报废,里面…

【转】Python可变长度的函数参数

http://www.pythoner.com/4.html转载于:https://www.cnblogs.com/liangnote/p/3964062.html

那些奇奇怪怪的男性用品......

1 原来浣熊竟是我自己(素材来源网络,侵删)▼2 能不能对全靠运气(素材来源网络,侵删)▼3 万万没想到是这个结局(素材来源网络,侵删)▼4 真实版出猪车(素材来…

Android之getCacheDir()和getFilesDir()方法区别

getCacheDir()和getFilesDir()方法区别. Activity提供了getCacheDir()和getFilesDir()方法: getCacheDir()方法用于获取/data/data//cache目录getFilesDir()方法用于获取/data/data//files目录//将文件写入SD卡内:获取SDCard的状态:Environment.getExtemalStorageSt…

.Net Minimal API 介绍

Minimal APIs 是.Net 6 中新增的模板,借助 C# 10 的一些特性以最少的代码运行一个 Web 服务。本文脱离 VS 通过 VS Code,完成一个简单的 Minimal Api 项目的开发。创建项目新建一个文件夹,用来管理我们的项目文件,文件夹内启动命令…

access 子窗体 鼠标滚动不工作_Python GUI项目实战(五)明细信息窗体的完善

前言上一节我们实现了明细窗体GUI的搭建,并且设置了查看、修改、添加三种不同的状态,框架搭建好了,内容并没有填充,本节我们继续完善这个项目,将学生信息填充进明细窗体中。一、填充当前学生信息1.需求目前我们已经实现…

弹性式分布数据集RDD——Pyspark基础 (二)

连载中:http://ihoge.cn/tags/pyspark/ title: 弹性式分布数据集RDD——Pyspark基础 (二) date: 2018-04-15 17:59:21 comments: true categories: - Spark tags: - pyspark RDD的内部运行方式 RDD不仅是一组不可变的JVM(…

centos安装kvm

KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器,存储管理模块等,所以代码…

http://blog.csdn.net/myan/article/details/1906

好奇点一下,有惊喜哦转载于:https://blog.51cto.com/bigmac/1275715

java.io.File.setExecutable(boolean executable) 方法来设置所有者对于此抽象路径名执行权限。

java.io.File.setExecutable(boolean executable) 方法来设置所有者对于此抽象路径名执行权限。 声明 以下是 java.io.File.setExecutable(boolean executable) 方法的声明: public boolean setExecutable(boolean executable) 参数 executable -- 设置访问权限为t…

导师都有哪些“秘密”没有告诉你?

全世界只有3.14 % 的人关注了爆炸吧知识真正决定人与人之间的差距的,其实是我们对事物的见识与内心的格局,见识的深浅决定人生的深浅,格局的大小决定了人生之路是宽是窄。今天给大家推荐几个有深度、有想法的公众号,希望能够给你带…

2021年全球知名开源项目大更新

下面简单回顾 2021 年一些带来较大变化和影响的项目更新信息。PHP 8.1.0 正式发布枚举,只读属性,First-class 可调用语法,新的初始化器,纯交集类型,Never 返回类型,Final 类常量,显式八进制数字…

C语言中extern的用法

C语言中的Extern用法 网上有很多帖子问C语言中Extern的用法,而且回答的详细程度各尽不同. 所以我就像写一篇博文来谈谈我对extern的看法,不一定十分恰当,只当大家共勉. 在具体到Extern的用法之前,有两个概念必须要能分清楚&#x…