关于视觉装置、ROS、机械臂之间的通信和系统协调

一、视觉检测装置与ROS实现通信
采用Movidius神经计算棒实现视觉检测装置基于ROS的实现与封装。轻松地将深度学习技术引入项目,和其他ROS节点无缝连接。
技术背景:
英特尔在2017年发布了Movidius神经计算棒,与英特尔Movidius神经计算棒一同发布的还有NCSDK和NCAppZoo,为用户在Movidius 神经计算棒之上开发各自的应用提供了良好的软件支持。
NCSDK目前提供了C和Python两种语言的编程的接口,通常应用开发者通过调用这些接口就能操作NCS做深度学习方面的图像预测工作。然而,机器人研究领域广泛采用ROS框架,这一框架下的各个应用通常采用消息(message)和话题(topic)的方式进行通信。
在这种特殊情况下,机器人应用开发者不得不对NCSDK做进一步的封装才能使其无缝工作在ROS系统中。
针对NCSDK到ROS系统的衔接问题,我们提出并实现了一种基于ROS系统的对NCSDK的封装。该项目目前已经在github上面开源。
主体由一个ROS发布节点和一个ROS服务节点组成,以适应不同的应用场景。ROS发布节点用于处理来自相机的视频流数据,预测结果以消息(message)的形式发布到相应的话题(topic)中,供上层应用调用。ROS服务节点用于处理单张图片数据,预测结果直接返回给上层消费服务的节点做进一步处理。为了更好的演示这两个节点的使用方法,我们还开发了多个客户端节点,最终处理结果会以图像的形式展现出来。
通过以上基于ROS系统的对NCSDK的封装。我们可以把视觉检测装置上任何视频、图片、位置信息等一切消息转换成ROS节点,通过节点发布ROS消息到相应主题,实现通信。如此一来,任何视觉检测装置的消息处理和通信都变成了ROS系统内的节点通信。

二、ROS与UR10通信,并在RVIZ上控制UR10。
1、首先导入UR10的URDF文件到ROS系统,建立三维仿真模型。
2、通过UR10在ROS系统下建立的安装库实现TCP协议通信
此时你就会看到RVIZ中的UR10机械臂和实物的状态是一致的,拖动UR10机械臂实物,在RVIZ里的机械臂也会跟着运动。此时,你可以在RVIZ中用鼠标拖动机械臂到达目标位置,在planing下点击plan,你就会看到UR10实物也会跟着运动到目标点。

三、视觉检测装置、ROS、机械手协调工作
1、视频流、图像以及其他进程的处理结果的显示
在基于ROS系统的对NCSDK的封装过后,生成的一系列ROS节点信息进行编程,实现对节点的操作,最终作为ROS系统下的程序输出即是基于ROS系统的对NCSDK的封装过后的相应的功能显示效果。(例如缺陷检测、目标识别、定位信息等)
2、机械手的运动控制和路径规划处理
(1)在基于ROS系统的对NCSDK的封装过后在ROS系统下获得的物体空间位置节点信息之后,将获得的空间位置节点传递给MoveIt模块进行运动规划。从而控制机械手的运动。
(2)ROS下机械手的路径规划问题:ROS为机械臂控制提供了强大的集成功能包,即Movelt,他涉及运动规划、碰撞检测、机械手抓取等领域。机械臂运动时根据具体的作业任务要求,轨迹规划需要在关节空间或者在笛卡尔坐标系下进行,给定起点和终点,特点情况下还需要给定关键点或者其他路径约束条件。采用基于随机采样的运动规划算法库OMPL完成轨迹规划,避开障碍物和自身干涉等碰撞状态。现在在笛卡尔坐标系下面进行运动规划,通过机器人逆运动学计算其转化为关节空间下的表示,Movelt默认用KDL库通过数值迭代算法求解逆运动学问题。

猜你喜欢

转载自blog.csdn.net/weizhangyjs/article/details/81299573