论文部分内容阅读
RoboCup Rescue是一个研究和展示先进机器人灾后搜救技术的国际性机器人竞赛平台,每年比赛规则均会做适当的调整,以逼近真实的灾害救援现场情况及环境。2016年德国莱比锡RoboCup Rescue国际比赛规则采用了美国DHS-NIST-ASTM机器人国际标准测试方法,预示着以后救援机器人功能趋向于模块化及灵活可扩展方向。因此研究一种功能模块化及可扩展的机器人本地控制系统有重要的意义。本文根据当前救援机器人的总体需求,设计并实现了基于ROS的救援机器人本地控制系统。论文首先介绍了救援机器人及其本地控制系统相关技术研究现状,根据2016年RoboCup Rescue比赛规则要求,对救援机器人本地控制系统进行了功能需求分析,设计了模块化、可扩展的分布式软硬件系统结构。其中硬件主控单元为PC/104工控机,其通过CAN总线与底层电机驱动器通信、通过USB总线与各传感器模块通信、通过以太网交换机与视频服务器模块实现局域网组网;在主控单元上运行的系统平台为基于ROS的Linux/Xenomai混合操作系统,各软件模块以分布式结构运行于操作系统之上。本文采用无刷直流电机作为机器人的执行器,在分析无刷直流电机基本控制理论和数学模型的基础上,设计了 一款可满足救援机器人各关节电机位置控制和速度控制模式的无刷直流电机驱动器,其中主控制器采用Freescale微控制器MKV11Z128VLF7,驱动电路采用Infineon智能功率模块IGCM15F60GA,通过反电动势过零检测法获取电机转子位置信号及速度,编码器获取电机位置,并设计了 CAN总线接口,便于机器人上多关节电机的部署与控制。本文为救援机器人本地控制系统提出一种既能满足机器人运动控制实时性,又能满足系统中多传感器信息采集的软件系统——基于ROS的混合操作系统,其在普通Linux系统的基础上通过Adeos/I-pipe硬件抽象层实现了 Xenomai实时系统的移植,构成Linux/Xenomai混合操作系统;然后分别在双内核上部署ROS,其中Xenomai上部署ROS通过Orocos软件框架及ROS包rtt_ros_integration实现。利用ROS中丰富的传感器驱动软件包及统一时钟通信机制,实现了包括激光、热成像仪、CO2、深度摄像头等传感器在机器人上的信息采集与数据的同步功能,以非实时ROS节点运行于Linux内核上;AHRS传感器数据用于机器人运动控制中,为运行于Xenomai实时内核上的实时ROS节点。在使用D-H法对6自由度机械臂进行正、逆运动学分析的基础上,利用ROS中MoveIt!软件包实现了机械臂的运动规划。机器人CANopen网络控制进程为机器人主控单元上运行的通信进程,其包含三个线程:遥控通信线程负责与远程操控端进行数据通信,为运行于Linux内核上的非实时线程;两个CANopen网络控制线程分别负责与两条CAN总线上的底层电机驱动器通信,为运行于Xenomai实时内核上的实时线程。