作者:法华大道暴力喵一只 | 来源:互联网 | 2023-08-21 18:31
MoveIt编程实现机械臂自主避障运动(六)调研结果如下:Moveit在规划路径的时候考虑如何躲避障碍物的问题,Moveit可以实时的检测空间中的障碍物,并规划出轨迹绕过障碍物。在
MoveIt编程实现机械臂自主避障运动(六)
调研结果如下: Moveit在规划路径的时候考虑如何躲避障碍物的问题,Moveit可以实时的检测空间中的障碍物,并 规划出轨迹绕过障碍物。
在场景中加入障碍物方式:
在Moveit中 具有一个规划场景监听器的模块结构,可以用来检测机器人场景中是否存在障碍物。
障 碍物有几种方式可以告诉监听器:
1. 通过Rviz界面的形式添加。
通过机器人的外部传感器,例如通过Kinect深度相机实时检测到的信息加入到场景中。
通过程序(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.拖拽机械臂,使机械臂碰撞障碍物,就会发现机械臂发生碰撞的部分变成了红色;
再次进行规划的时候,机械臂就会自动避开障碍物。
这种方法主要是 书籍《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图像的转换
ROS图像消息转换为OpenCV图像的函数
cv_bridge源码中执行转换的类为CvImage,该类包含了OpenCV的Mat格式的图像、该消息的 encoding以及ROS header。 当cv_bridge将ROS的图像消息转换为OpenCV图像格式时都是通过CvImage类实现的。一般来 说,cv_bridge提供了两种方式转换为CvImage类,分别为复制(copy)和共享(share)。
OpenCV图像转换为ROS消息的函数 在CvI
mage类中执行的OpenCV图像转换为ROS消息的成员函数为 toImageMsg()。
深度图像和点云:
参考博客:https://blog.csdn.net/zzu_seu/article/details/90642477
雪儿言
原文链接:https://www.cnblogs.com/weixq351/p/14917288.html