热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

MoveIt编程实现机械臂自主避障运动(六)

MoveIt编程实现机械臂自主避障运动(六)调研结果如下:Moveit在规划路径的时候考虑如何躲避障碍物的问题,Moveit可以实时的检测空间中的障碍物,并规划出轨迹绕过障碍物。在

MoveIt编程实现机械臂自主避障运动(六)

调研结果如下: Moveit在规划路径的时候考虑如何躲避障碍物的问题,Moveit可以实时的检测空间中的障碍物,并 规划出轨迹绕过障碍物。

在场景中加入障碍物方式:

 

 

 

在Moveit中 具有一个规划场景监听器的模块结构,可以用来检测机器人场景中是否存在障碍物。

障 碍物有几种方式可以告诉监听器:

1. 通过Rviz界面的形式添加。



  1. 通过机器人的外部传感器,例如通过Kinect深度相机实时检测到的信息加入到场景中。



  2. 通过程序(C++/Python)编程进行添加。

     



机械臂避障视频:

https://www.youtube.com/watch?v=I0V4IsXn8bo

https://www.youtube.com/watch?v=jXBV7_y4150

 


1、通过Rviz界面的形式添加

 

1、在Rviz中,有Scene Objects选项卡,有Scene Objects选项卡,可以添加场景物体(机械臂);

2、再自己添加一些模型(障碍物)进来,点击Publish Scene将障碍物的位置发布出去;

3.拖拽机械臂,使机械臂碰撞障碍物,就会发现机械臂发生碰撞的部分变成了红色;



  1. 再次进行规划的时候,机械臂就会自动避开障碍物。



这种方法主要是 书籍《ROS机器人开发实践》和 古月居视频中介绍的方法。


2、通过程序(C++/Python)编程进行添加

当机械臂抓取到某个物体之后,它的轨迹进行规划的时候,需要将抓取得到的物体当作机械臂本身 的一部分,必要的时候要考虑抓取到的物体也不能发生碰撞。

 

打开模型,并进行附着物避障,是通过命 令 rosrun demo demo.py文件 ,即让抓到的物体也会进行避障,.py文件需要自己编写,主要涉及 关键API:

1、tool附着到机器人的终端,附着某物体到机器人上

scene.attach_box(end_effector_link, 'tool', p, tool_size)

将 end_effector_link为机械臂终端的坐标系

'tool'是要附着的对象 p为附着物的位置

tool_size为附着物体的尺寸

 

2、添加障碍物 scene.add_box('table', table_pose, table_size)

'table'是要添加的障碍物对象

table_pose为障碍物的姿态信息

table_size为障碍物的大小

 


3、通过机器人的外部传感器,例如通过Kinect深度相机实 时检测到的信息加入到场景中

大量调研和查阅知乎博客 ,看youtube视频,有了解到:Kinect深度相机实时检测到的信息,深度 图像和点云数据 真实的Kinect相机如下图:

 

 

 

 

 

真实相机:Kinect深度相机 ; 仿真相机 Camera ,在RVIZ仿真器里面有。

 

OpenCV :是一个插件,里面包含了许多的图像处理和视觉信息的算法,可以通过命令进行安装; CvBridge:是ROS提供的package,v_bridge用于ROS图像和OpenCV图像的转换

 

流程如下:

1、传感器 摄像头(比如Kinect深度相机摄像头)拍摄的RGB图像数据,通过回调函数转为OpenCV 中的Mat数据格式;

2、OpenCV把图像信息转为CvBridge格式;

3、CvBridge格式可以转化为ROS 图像信息;

4、OpenCV和ROS之间可以进行图像信息的相互转换 需要注意的是ROS中发布的消息是不支持图片的,所以需要image_transport(image_transport实 例,用来发布和订阅ROS系统的图像)的支持。 但是image_transport实例包和openCV的格式不兼容,所以需要cv_bridge做格式变换。最后照相 机发布的消息类型是sensor_msgs包中的。

 


cv_bridge用于ROS图像和OpenCV图像的转换

 




  1. ROS图像消息转换为OpenCV图像的函数



cv_bridge源码中执行转换的类为CvImage,该类包含了OpenCV的Mat格式的图像、该消息的 encoding以及ROS header。 当cv_bridge将ROS的图像消息转换为OpenCV图像格式时都是通过CvImage类实现的。一般来 说,cv_bridge提供了两种方式转换为CvImage类,分别为复制(copy)和共享(share)。




  1. OpenCV图像转换为ROS消息的函数 在CvI

    mage类中执行的OpenCV图像转换为ROS消息的成员函数为 toImageMsg()。

     



深度图像和点云:

 

 

 参考博客:https://blog.csdn.net/zzu_seu/article/details/90642477

 

 

 

 

 

 

 

 

 

雪儿言


原文链接:https://www.cnblogs.com/weixq351/p/14917288.html



推荐阅读
  • 深入解析IGMP各版本特性及其演进
    本文详细探讨了Internet组管理协议(IGMP)的不同版本,包括IGMPv1的基础功能、IGMPv2的增强特性和IGMPv3的重要改进。特别分析了IGMPv3如何支持特定源组播(SSM)模型,并介绍了各版本之间的主要差异。 ... [详细]
  • 设有10个取值范围为0~9的互不相等的整数存放在数组A[10]中,要求将它们从小到大排序,并存放在一个新数组B[10]中(数据结构;Language:C)
    编程思想:将A的整数按其取值直接放入B的相应位置即可实现A中整数从小到大的排列。代码:#include包含scanf_s()和pri ... [详细]
  • 本文详细介绍了在Linux环境下如何有效地管理任务,包括撤销操作、挂起与恢复任务、终止后台程序以及取消定时任务的方法。这些技巧对于提高日常工作效率和系统维护至关重要。 ... [详细]
  • 前言无论是对于刚入行工作还是已经工作几年的java开发者来说,面试求职始终是你需要直面的一件事情。首先梳理自己的知识体系,针对性准备,会有事半功倍的效果。我们往往会把重点放在技术上 ... [详细]
  • 华硕主板BIOS更新指南(图文)
    本文详细介绍了如何安全有效地更新华硕主板的BIOS,包括准备工作、具体步骤以及注意事项。BIOS是计算机基本输入输出系统的关键组成部分,负责初始化硬件并加载操作系统,定期更新BIOS可以增强系统的稳定性和兼容性。 ... [详细]
  • 初探Java编程:从入门到实践
    本文旨在为初学者提供Java编程的基础知识,涵盖程序、算法、流程图的概念,以及JDK环境的配置和Eclipse的使用方法。 ... [详细]
  • 作为一名跨专业考生,最近在备战研究生入学考试的计算机编程部分。虽然没有编程基础,但通过九度在线教育平台的机试教程逐步学习,进展顺利。直到遇到贪心算法相关的题目,特别是浙江大学2012年的一道机试题——《加油还是不加油》,才遇到了挑战。本文将分享我在解决这一问题过程中的思考与学习体会。 ... [详细]
  • 切面编程在软件开发中的应用远不止于减少代码冗余,它还能够显著提升系统的模块化程度。利用AOP技术,开发人员可以有效地将那些跨越多个模块的功能独立出来,从而增强系统的内聚性和可维护性。 ... [详细]
  • 深入理解装饰器:从基础到高级应用
    本文将详细介绍装饰器的基础概念、简易与高级实现、常见练习及装饰器的固定模式和语法糖等知识点,帮助读者全面掌握装饰器的应用。 ... [详细]
  • MySQL锁机制详解
    本文深入探讨了MySQL中的锁机制,包括表级锁、行级锁以及元数据锁,通过实例详细解释了各种锁的工作原理及其应用场景。同时,文章还介绍了如何通过锁来优化数据库性能,避免常见的并发问题。 ... [详细]
  • Python数据类型6 字典
    字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包 ... [详细]
  • 使用Python程序显示图像
    本文介绍如何使用Python编写程序来显示图像,适合初学者学习和实践。 ... [详细]
  • 随着机器人技术的不断进步,波士顿动力公司近期的创新成果再次吸引了公众的目光。特别是其Atlas机器人完成高难度后空翻动作,标志着机器人运动能力的重大突破。 ... [详细]
  • EasyMock实战指南
    本文介绍了如何使用EasyMock进行单元测试,特别是当测试对象的合作者依赖于外部资源或尚未实现时。通过具体的示例,展示了EasyMock在模拟对象行为方面的强大功能。 ... [详细]
  • 如何处理MySQL命令行中文乱码问题
    本文详细探讨了MySQL命令行中出现中文乱码的原因及解决方案,通过调整配置文件和执行特定SQL命令来确保字符集正确设置,为用户提供了一个有效的解决路径。 ... [详细]
author-avatar
法华大道暴力喵一只
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有