ros创建工作空间_ROS入门学习之七Moveit机械臂控制

c1bdab73c4ec7ed3a977e89c34dd1a42.png

1.MoveIt!系统架构

MoveIt是什么:

  • 一个易于使用的集成化开发平台
  • 由一系列移动操作的功能包组成:运动规划、操作控制、3D感知、运动学、控制与导航算法
  • 提供友好的GUI
  • 可应用于工业、商业、研发和其他领域
  • ROS社区中使用度排名前三的功能包

376296555c083fc63d33c5d71566daf2.png

系统架构

用户接口(User Interface)

  • C++:使用move_group_interface包提供的API
  • Python:使用moveit_commander包提供的API
  • GUI:使用Moveit!的rviz插件

ROS参数服务器

  • URDF:robot_description参数,获取机器人URDF模型的描述信息
  • SRDF:robot_description_semantic参数,获取机器人模型的配置信息
  • config:机器人的其他配置信息,例如关节限位、运动学插件、运动规划插件

机器人

Topic和Action通信

d4db9935ff13bce2b2213b6c43005e72.png

系统架构

a3fdb316cb0fe4f7254740689d7ae442.png

eccd3b8080d5bec66f8c27a4142f3a96.png

约束条件

  • 位置约束:限制link的运动区域
  • 方向约束:限制link的运动方向(roll、pitch和yaw)
  • 可见性约束:限制link上的某点在某区域内的可见性(通过视觉传感器)
  • joint约束:限制joint的运动范围
  • 用户定义约束:用户通过回调函数自定义所需的约束条件

适配器

  • FixStartStateBounds:修复joint的初始极限
  • FixWorkspaceBounds:设置一个默认尺寸的工作空间
  • FixStateCollision:修复碰撞配置文件
  • FixStatePathConstraints:找到满足约束的姿态作为机器人的初始姿态
  • AddTimeParameterization:为空间轨迹进行速度、加速度约束,为每个轨迹点加入速度、加速度、时间等参数

监听信息

  • 状态信息(State Information)机器人的关节话题joint_states
  • 传感器信息(Sensor Information)机器人的传感器信息
  • 外界环境信息(World geometry Information)通过传感器建立的周围环境信息

514db13e1f0397bb862bd5c80f6f2ee5.png

MoveIt!使用步骤

  • 1)组装:创建机器人URDF模型
  • 2)配置:使用MoveIt!Setup Assistant工具生成配置文件
  • 3)驱动:添加机器人控制器插件(controller)
  • 4)控制:MoveIt!控制机器人运动(算法仿真、物理仿真)

2.创建机械臂模型与配置文件

宏定义

363d34ce2b84dd2872e79e18f0798358.png

link与joint

ba222d9f737f1aea9039848d9355cea8.png

gazebo属性

90b79c58fb6b1dfb3c6c33916c2dc9f7.png

可视化

70a6f4ae480a5cfac2dd70bdef603326.png

模型可视化

roslaunch marm_description view_arm.launch

6b75bd27df11aae601e225f22d7ffea9.png

启动MoveIt!Setup Assistant

rosrun moveit_setup_assistant moveit_setup_assistant

f462aeb42ed7827ca4bf4edd2bae226e.png

89f459f956d164d09d5a45a0f4f7de7c.png

6668bf8d532aa5d1303760e01371935c.png

e3d704240204630db4edca44782adf56.png

b9735c8e705a3c52e24784a8864f43e0.png

e708a49081dfe02dd403d0aa68eaba37.png

04ff4091c91d3575a1a39439cec05ab5.png

f480516f0d69ab8fb5420c7f90311786.png

27e8730d6a0540d80b507cd99a99f787.png

28e799eaac4b4a95a655711bd625258e.png

5280e23228601161c518b74b471975d6.png

启动demo

roslaunch marm_moveit_config demo.launch

拖动规划

fbd9fd9d483cec916140b4a79b212031.png

随机目标点规划

9e1df22e3920321ecbf1e9e6489ccf89.png

设置初始位姿

80422ec13f64c7f20874cb19e34e4d9d.png

加入场景物体

924094e4a9354bebf57a8d608bfb0535.png

碰撞检测

7cd4a8b91fd7fb4cb7ca9dfcb034467f.png

3.MoveIt!编程练习

6b901abc76c3814e2bd30420d39a44b9.png

编程接口

0a3bddaa19aab6cb438ae3dd3c749313.png

关节空间规划

9d28884b26df5534d89df0faaaf9bfb8.png

关节空间规划例程

roslaunch marm_moveit_config demo.launch 
rosrun marm_planning moveit_fk_demo.py 

工作空间规划

2e6c2296946f21c86efabccb9161c72b.png

工作空间规划例程

roslaunch marm_moveit_config demo.launch 
rosrun marm_planning moveit_ik_demo.py 

笛卡尔路径规划

f6b8fb2ecf5cc274e798a8e6111e494c.png

工作空间规划例程

roslaunch marm_moveit_config demo.launch 
rosrun marm_planning moveit_cartesian_demo.py _cartesian:=True(走直线) 
rosrun marm_planning moveit_cartesian_demo.py _cartesian:=False(走曲线) 

避障规划

c37918dc0af0581ef79f28c64174a80d.png

自主避障规划例程

roslaunch marm_moveit_config demo.launch 
rosrun marm_planning moveit_obstacles_demo.py 

4.Gazebo机械臂仿真

关节轨迹控制器

Joint Trajectory Controller

  • 线性样条:位置连续,速度、加速度不连续
  • 三次样条:位置和速度连续,加速度不连续
  • 五次样条:位置、速度、加速度都连续

0cecea1ed7ad0f3051e46bc0ac2eacc2.png

a82f3560b90938f048a29aecd4165a6a.png

MoveIt!控制器

acc46f514f2fe9fa7415d6e4b9694b28.png

d230a4b12741c4d51ff18d5e776f591b.png

d230a4b12741c4d51ff18d5e776f591b.png

e60c39954ef8d2bb90c1138c6171714f.png

5ce8630a254ff9c568ffc65d2c3601bb.png

bdfee0477bca38ff3a65215c32111ef3.png

启动仿真环境

roslaunch marm_gazebo arm_bringup_moveit.launch 

f2b04294cfa42e3416f08e11f963abe0.png

5.ROS-I框架介绍

将ROS强大的功能应用到工业生产的过程中
为工业机器人的研究与应用提供快捷有效的开发途径
为工业机器人创建一个强大的社区支持
为工业机器人提供一站式的工业级ROS应用开发支持

63f42dcbe20b12412922d86c4e560982.png

总体架构

  • GUI:ROS中现在已有的UI工具和专门针对工业机器人通用的UI工具
  • ROS Layer:ROS基础框架,提供核心通信机制
  • MoveIt!Layer:为工业机器人提供规划、运动学等核心功能的解决方案
  • ROS-I Application Layer:处理工业生产的具体应用,目前也是针对未来的规划
  • ROS-I Interface Layer:接口层,工业机器人的客户端,通过simple message协议与机器人的控制器通信
  • ROS-I Simple Message Layer:通信层,定义了通信的协议,打包和解析通信数据
  • ROS-I Controller Layer:机器人厂商开发的工业机器人控制器

b0828a7fcae4ca0d0edf036aacc7b9bf.png
sudo apt-get install ros-kinetic-industrial-core 

基于ROS-I框架的应用(Kungfu Arm)

3ff6d380acd9ac3f372845144e266824.png

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

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

相关文章

常用于评价回归模型优劣的统计量包括( )。_第四十一讲 R-判断回归模型性能的指标...

当回归模型建立好以后,如何评价该回归模型是否与另一个回归模型有区别,如何比较两个回归模型的性能?这一讲中,我们将给大家介绍几个评价回归模型性能的统计指标。1. 模型性能指标在回归模型中,最常用的评估指标包括&am…

python 常用包_Python常用指引

Python常用指引Python常用指引的形式来源于Linux文档项目的常用指引章节,是一系列独立、指定主题并尝试完全覆盖该主题的文章集合。致力于提供比Python库参考帮助更详尽的文档。Python 3 是 Python 的未来,但 Python 2 仍处于活跃使用阶段,最…

读取当前linux进程内存_(笔记)Linux上的内存分配

作者: LemonNan原文: https://juejin.im/post/5ee3c34a518825430c3ad31d前言本篇是对Linux内存分配的一个学习笔记.程序内存结构下面是在 Linux/x86-32 中典型的一个进程内存结构文本段包含了进程运行的程序机器语言指令. 文本段具有只读属性, 以防止进程通过勘误指针意外修改自…

php改成IP连接数据库,thinkphp,pdo连接数据库,host自动被替换成了本机ip

class DBAccess extends PDO{ private $charset; // 数据库字符集public $cacheDir_cache_$98sdf29fw!d#s4fef/; public $prename; public $time; function __construct($dsn, $user, $password){ try{ parent::__construct($dsn, $user, $pa…

django开源电子文档管理系统_「开源推荐」BookStack v2.8 发布,简洁美观的在线文档管理系统

程序介绍BookStack,基于 Mindoc、使用Go语言的Beego框架开发的功能类似GitBook和看云的在线文档管理系统,拥有简洁美观的页面布局,实现了文档采集、导入、电子书生成以及版本控制等强大的文档功能,并推出了配套的开源微信小程序 B…

matlab 随机森林算法_随机森林算法

随机森林是一种灵活,易于使用的机器学习算法,即使没有超参数调整,也能在大多数情况下产生出色的结果。它也是最常用的算法之一,因为它简单,并且可以用于分类和回归任务。在这篇文章中,您将学习随机森林算法…

opengl 纹理贴到对应的位置_一步步学OpenGL(27) -《公告牌技术与几何着色器》

教程 27公告牌技术与几何着色器原文: http://ogldev.atspace.co.uk/www/tutorial27/tutorial27.htmlCSDN完整版专栏: https://blog.csdn.net/cordova/article/category/9266966背景从最初的一系列教程我们已经应用过了顶点着色器和片段着色器&#xff0c…

python 当前目录_virtualenvwrapper打造多版本Python环境

前言面对多个 Python 开发项目时,需要针对不同的项目创建相应的开发环境。通常情况下,使用 virtualenv 创建一个虚拟的独立 Python 环境,但是 virtualenv 创建的环境相对分散不便于管理。这里推荐使用 virtualenvwrapper 来创建集中的便于管理…

oracle装了客户端怎么登陆账号,分享Oracle 11G Client 客户端安装步骤(图文详解)...

Oracle 11G Client 客户端安装步骤,具体如下:下载地址:http://www.gimoo.net/database/167737.html先将下载下来的ZIP文件解压,并运行setup.exe文件。执行到第四步之后,出现错误,直接点全部忽略就可以了。把…

python与excel互通_【python】python vs Excel ( 与mysql数据库之间的交互)

【python】python vs Excel ( 与mysql数据库之间的交互) 通过python与mysql数据库做交互 到目前为止大部分案例的演示数据都是基于文件进行读取的。那么python如何跟数据库之间做交互才是未来我们真正需要关心的。因为我们的数据最终还是要存储到数据库中去的。 python与数据库…

基于matlab的车牌识别系统程序,基于matlab的车牌识别系统的设计(附程序).doc

基于matlab的车牌识别系统的设计(附程序).doc 1车牌识别系统的设计1.摘要:汽车牌照自动识别系统是制约道路交通智能化的重要因素,包括车牌定位、字符分割和字符识别三个主要部分。本文首先确定车辆牌照在原始图像中的水平位置和垂直位置,从而定位车辆牌照…

python英文词云代码_使用python实现个性化词云的方法

先上图片词云图 需要模板 pip install jieba pip install wordcloud 还需要安装另外两个东西这两个我也不太懂借鉴百度写上去的 pip install scipy pip install matplotlib 因为用ubuntu系统所有没有windows那么麻烦,也没有那么多报错 看到好多人制作自己的词云有没…

linux监测node进程,通过node_exporter监控linux服务器一

前言:node_exporter用于监控*nux系统,使用go编写的收集器prometheus服务器:192.168.199.222监控服务器 192.168.199.221在192.168.199.221下载node_exporterwget https://github.com/prometheus/node_exporter/releases/download/v*/node_exp…

k8s 离线安装_阿里开源 k8s 事件通知服务

背景在 Kubernetes 开源生态中,资源监控有 metrics-server、Prometheus等,但这些监控并不能实时推送 Kubernetes 事件,监控准确性也不足。当 kubernetes 集群中发生 Pod因为 OOM 、拉取不到镜像、健康检查不通过等错误导致重启,集…

kali linux解密栅栏密码,最详细bugku加密小白解法---持续更新!

bugku加密!安排本文持续更新1 摩斯密码2 栅栏密码3 Ook密码4 brain密码5 easycrypto密码6 base647 散乱的密文8 凯撒密码9 一段base6410 !?11 []-12 奇怪的密码--凯撒变式13 托马斯杰斐逊--转轮加密14 伪加密15 告诉你个秘密16 这不是MD517 贝…

linux命令 重定向%3e,linux输出信息调试信息重定向

在运行linux的时候有所有的调试信息可以分为三个部分1、bootloader输出信息U-Boot 1.3.2(Nov 19 2016 - 22:02:08)DRAM: 64 MBFlash: 512 kBNAND: 64 MiBIn: serialOut: serialErr: serialHit any key to stop autoboot: 0[yqliu2410 #] tftpFound DM9000 ID:90000a46 at addre…

360加固一键脱壳工具2020_如何脱壳加固过的Apk并利用其API“走近数据库”

0x00 寻找突破口打开首页,emm就一个登录页面,没了随便写点东西提交看看天生手欠的我一不小心就多输了一个单引号WDNMD,除了数字和字母其他都不行?这叫我怎么测?刚刚要放弃,就在这时,首页的一个二维码吸引了我正是安卓端的软件,眼前一亮,仿佛找到了打开新世界的大门开开心心地…

python 函数递归_Python零基础之三元表达式、函数递归、匿名函数教程!超级详细!...

目录一、三元表达式二、函数递归 递归调用的定义递归分为两个阶段:递归,回溯三、匿名函数 什么是匿名函数?有名字的函数与匿名函数的对比lambda匿名函数的应用四、内置函数 #注意:内置函数id()可以返回一个对象的身份,…

linux 内核空间占用cpu百分比过高,linux下分析java程序占用CPU、内存过高

一、CPU过高分析1)使用TOP命令查看CPU、内存使用状态可以发现CPU占用主要分为两部分,一部分为系统内核空间占用CPU百分比,一部分为用户空间占用CPU百分比。其中CPU状态中标示id的为空闲CPU百分比。当空闲CPU百分比越低,说明CPU占用率越高。2)…

springboot 获取application参数_LOOK ! SpringBoot的外部化配置最全解析

本篇要点介绍各种配置方式的优先级。介绍各种外部化配置方式。介绍yaml的格式及原理。介绍如何绑定并测试类型安全的属性配置。介绍ConfigurationProperties与Value的区别。一、SpringBoot官方文档对于外部化配置的介绍及作用顺序SpringBoot支持多种外部化配置,以便…