基于ROS设计一款机械臂控制系统 [转发]

  • Post author:
  • Post category:其他

ROS探索总结-66.基于ROS设计一款机械臂控制系统

ROS探索总结-66.基于ROS设计一款机械臂控制系统

说明:

  • 介绍如何基于ROS设计一款机械臂控制系统

正文

请输入图片描述

  • 今天我们将从以下两个方面为大家介绍ROS机械臂控制系统的设计。

请输入图片描述

  • 首先我们来看看ROS控制系统的设计方法。

请输入图片描述

  • 回顾之前介绍的这张框架图,其中抽象出了控制系统的关键部分,虚线左边可以利用MoveIt!快速搭建运动规划层的功能,具体如何将规划得到的数据落实到机器人上的绿色部分,是我们要实现的重点。

请输入图片描述

  • 这里可以用之前讲过的ros_control来实现,ros_control主要分成两个层次,一个是硬件无关的控制算法,一个是和硬件相关的硬件抽象层,需要根据使用的硬件来实现硬件抽象层的read和write方法。

请输入图片描述

  • ros_control是一个控制器框架,如果其中没有满足我们的控制器,也可以自己进行实现,如下是一个简单的闭环控制器结构。

请输入图片描述

  • 以上只是针对控制的部分,整个机械臂控制系统的搭建可以参考ROS-I的五层架构。

请输入图片描述

  • PROBOT Anno的控制系统就是基于ROS-I框架实现的,我们以此为例为大家介绍一种控制系统的设计方法。

请输入图片描述

  • PROBOT Anno的定位是桌面级科研和学习的ROS机械臂平台,充分支持ROS中的各种开发接口功能,目前已经上市,大家也可以参考wiki上的介绍。

请输入图片描述

  • 在硬件层面上,PROBOT Anno的控制系统以我们开发的ROBCELL控制器为核心,向上连接PC端运行的ROS环境,向下连接驱动器和电机,驱动机械臂运动,还可以通过IO控制外部继电器。

请输入图片描述

  • 在软件层面上,我们基于ROS-I设计了控制系统的框架。上边四个层次运行在ROS环境中,完成机械臂的运动规划和应用处理,然后用simple message发给底层控制器。控制器基于ARM+FPGA的异构SoC平台,FPGA端完成电机控制、接口扩展、算法加速等,ARM端实现轨迹控制、运动学、系统管理等,具体每个层次实现的功能如下。

请输入图片描述

  • 交互层基于Rviz设计了一系列便于使用的交互界面。

请输入图片描述

  • 规划层利用MoveIt!实现运动规划,集成Opencv和Tensorflow实现图像处理和识别,调用科大讯飞SDK实现语音识别,扩展交互能力。

请输入图片描述

  • 控制和反馈信息都需要封装成具体的数据流发送,我们将这些数据划分成了四种类型。

请输入图片描述

  • 数据封装好之后就可以利用simple message发送出去了。

请输入图片描述

  • 控制器是设计和实现的重点,我们基于ROS中的部分功能包,进行了源码级的移植和优化。在设计时需要注意部分功能对实时性要求较高,我们单独放到了一个ARM裸核里进行处理,最大程度提高实时性。

请输入图片描述

  • 硬件上除了六轴本体之外,还可选配多种终端执行器、相机和麦克风阵列。

请输入图片描述

请输入图片描述

  • 为了最大程度提高控制器和驱动器的一体化性能,我们还设计了集成伺服驱动算法的SoC。

请输入图片描述

  • 精简的平台设计不再需要繁杂的通信和接线,在大大减小控制系统体积和成本的同时,提高了机器人的控制性能。

请输入图片描述

  • 以上就是本讲的内容精要,详细讲解过程和仿真/真机演示过程请见具体课程。

请输入图片描述