基于ROS的人形机器人建模与仿真
2020-12-31袁丹鹤杜玉晓江鑫向颖王焕
袁丹鹤 杜玉晓 江鑫 向颖 王焕
特约论文
基于ROS的人形机器人建模与仿真
袁丹鹤 杜玉晓 江鑫 向颖 王焕
(广东工业大学自动化学院,广东 广州 510006)
在人形机器人硬件设计基础上,构建ROS环境下基于DARwIn-OP2人形机器人外壳的URDF仿真模型;并利用Moveit!和Gazebo对该机器人的左手及左腿进行联合仿真。仿真结果验证了该机器人关节的可操作性和运动控制的可行性,为后续复杂运动规划等问题的研究提供基础。
人形机器人;ROS;DARwIn-OP2;建模仿真
0 引言
机器人技术始于上世纪五十年代,德沃尔和英格伯格在1961年联手制造了第一台可编程的实用工业机器人Unimate[1]。随着科学技术的发展,机器人已渗透于人类生活的各个领域。与工业机器人不同,人形机器人因具有类似人的形态,人们对它的接受度更高。人形机器人已成为当前机器人领域的研究热点[2],其集机械、电子、计算机、材料、传感器、控制技术、通信、人工智能和人工心理等多门学科于一体,代表了一个国家的科技发展水平[3]。
几十年来,许多国家陆续推出了不同的人形机器人。同时,随着机器人技术的快速发展,相应的开发环境越来越多、体系也越来越复杂,机器人面临软件通用性不足和复用性差等问题,使其发展面临严峻考验。为提高机器人研发过程中的软件复用率,2010年机器人操作系统(robot operating system,ROS)[4]发布。ROS是一个开源机器人操作系统平台,采取分布式结构框架,点对点设计,具有多语言支持、架构简单、集成度高及组件化工具包丰富等特点。
本文在硬件设计基础上,提出一种基于ROS的人形机器人软件框架,并在ROS环境下搭建人形机器人模型和Gazebo仿真环境,通过Moveit!对Gazebo环境下的人形机器人左手和左腿进行运动仿真。
1 人形机器人总体设计
1.1 机器人硬件设计
人形机器人硬件系统主要由上层嵌入式计算系统和底层控制系统构成。上层嵌入式计算系统主要由主控制器PICO-HC101和USB摄像头组成,负责视觉感知和运动规划等复杂算法的计算;底层控制系统主要由子控制器STM32舵机控制板、MX-28T舵机和IMU等组成,负责控制舵机和收集IMU等传感器信息。人形机器人硬件系统框架[5]如图1所示。
图1 人形机器人硬件系统框架[5]
主控制器PICO-HC101最高可搭载2 GHz的Intel® Atom™ E3845/ Celeron® J1900/N2807处理器和8 GB的SODIMM,以及各种通信接口包括USB 3.0/2.0,STAT,DP/VGA和w/LAN。子控制器STM32舵机控制板主要负责主控制器、舵机和传感器之间的实时通信,主芯片选用STM32F103RET6(下文简称STM32)单片机,并在板上集成了陀螺仪和加速度计传感器。
主控制器通过USB接口与外部通信,与子控制器的数据收发需要通过STM32设计USB转串口电路实现;通过STM32设计串口转TTL及I2C/SPI实现舵机、IMU与子控制器的通信。因此,要实现主控制器对机器人的稳定控制,STM32电路设计尤为重要。STM32电路图[6]如图2所示,其与主控制器、舵机和IMU的通信电路图参见文献[7]。
图2 子控制器主芯片STM32F103RET6电路图[6]
1.2 机器人软件设计
ROS是一个次级机器人操作系统,点对点的设计,可将机器人的功能模块分割成节点的多个独立进程,每个节点负责处理一个功能模块,且各节点分开编写、编译和启动。不同节点之间通过基于发布/订阅模型的话题(Topic)和基于客服端/服务器模型的服务(Service),实现消息(Message)在节点间的交换。这种松耦合连接体系结构使机器人系统功能实现模块化设计,各模块之间具有相对较高的独立性。
本文设计的基于ROS的人形机器人软件框架如图3所示,分为硬件层、操作系统层、中间层和应用层。ROS作为次级操作系统,无法直接在计算机硬件上运行,需要搭载在Linux系统上。为此,在主控制器上移植了Ubuntu 16.04LTS系统,并选取与之对应的Kinetic版本ROS作为人形机器人的软件平台。
图3 基于ROS的人形机器人软件框架
应用层的行为控制模块、机器人控制模块、视觉模块和运动模块等是本软件控制系统的研究重点。将每个功能模块设计成一个节点,并在ROS Master管理下正常运行。其中,行为控制模块负责较高级别的规划和控制任务,整合处理各模块的话题消息;机器人控制模块是底层控制部分的核心,负责传感器与舵机的实时控制,通过STM32舵机控制板和硬件接口组件实现通信,需要设计2个硬件接口,1个用于真实机器人通信,1个用于仿真的虚拟接口模拟通信;视觉模块是机器人感知周围环境的重要功能模块,可以细分为视频采集、目标检测跟踪和目标测距等多个子节点;运动模块具有步态、头部控制、动作控制和跌倒检测4个核心子节点。
1.3 机器人关节角度限制
基于ROS的人形机器人舵机分布及ID分配如图4所示,全身共有20个自由度(degree of freedom,DOF),其中头部2个、左右手各3个、左右腿各6个。
图4 人形机器人舵机分布及ID分配图[5]
对人形机器人关节角度范围限制时,应尽可能考虑正常人类相应关节的活动角度范围,以保证机器人类似正常人类运动。由文献[8]可知:正常人类头部、左手及左腿各关节的活动范围如表1所示。由于本文人形机器人的关节数量相对人类少得多,因此在动力学和运动学上会有一定的差异。此外,为避免外壳模型碰撞,且机器人可执行一些人类不能执行的动作,机器人关节角度范围相对于人类有一定调整,如表1所示。
表1 正常人类及人形机器人关节角度范围
2 人形机器人模型建立
2.1 URDF文件
URDF是ROS中使用XML(可扩展标记语言)格式描述机器人模型的文件[9],包括机器人的外观形状、尺寸、颜色、物理属性和关节类型等基本属性。编写URDF文件需要遵守的基本编程语法[10]
表2 URDF基本语法
其中,
其中,必须指定
2.2 机器人URDF模型构建
[12],是一款开源平台人形机器人,其与本文人形机器人具有相似的机械结构,因此使用其官网下载的STL格式外壳文件,用于本文基于ROS的人形机器人模型构建。
首先,使用表2中的基本指令构建不考虑模型尺寸大小信息的URDF基本树形结构,并使用
图5 使用check_urdf命令解析的URDF文件
在基本树形结构机器人模型下,首先,为每个joint添加
图6 基于ROS的人形机器人URDF模型整体结构图
2.3 Rviz显示URDF模型
Rviz是ROS根据机器人系统可视化需求提供的一款三维可视化工具,可以显示URDF文件描述的机器人模型、运动状态、传感器信息和周围环境等多种数据。
实现Rviz对机器人的显示,需要在launch文件中配置参数加载机器人URDF模型;配置joint_state_ publisher节点以发布机器人关节状态;配置robot_ state_publisher节点以发布坐标变换关系(transform,TF);配置Rviz节点以运行Rviz可视化界面。基于DARwIn-OP2外壳的人形机器人在Rviz中的三维仿真模型如图7所示。
图7 人形机器人在Rviz中的三维仿真模型
3 Gazebo与Moveit!联合仿真
3.1 Gazebo物理仿真环境搭建
Gazebo是一个三维物理仿真平台,因具有强大的物理引擎及高质量的图形渲染,使其可以提供高保真度的物理模拟,从而得以在复杂环境中准确、有效地模仿机器人。因此,在不具备机器人实体的情况下,通过Gazebo来仿真机器人是一个较好选择。
搭建Gazebo物理仿真环境,首先,为人形机器人配置Gazebo属性,分为以下4步:
1)为link添加惯性参数
2)为link添加
3)添加传动装置
4)添加Gazebo控制器插件。
其次,配置launch文件,将人形机器人模型加载到Gazebo仿真环境中;最后,直接添加环境模型或使用Building Editor创建仿真环境。人形机器人在Gazebo中的仿真环境如图8所示。
图8 Gazebo仿真环境下的人形机器人
3.2 Moveit!配置
Moveit!是一个集成化开发平台,包含操作控制、三维感知、运动规划、运动学、控制和导航算法,核心节点是move_group,通过Topic和Action与机器人通信。使用Moveit! Setup Assistant可以方便快速地对人形机器人进行配置。本文对机器人的左手和左腿进行配置的主要步骤如下:
1)加载人形机器人URDF模型;
2)配置自碰撞矩阵;
3)配置虚拟关节;
4)创建左手和左腿规划组;
5)定义机器人自定义位姿;
6)配置无用关节;
7)生成配置文件。
配置完成后,在生成的功能包内含一个简单的演示demo,用以测试配置是否成功,运行界面如图9所示。
图9 Moveit! demo运行界面
3.3 Moveit!控制Gazebo中的人形机器人
虽然实现了人形机器人的Gazebo环境搭建以及Moveit!的配置,并通过Rviz显示,但如果想使用Moveit!控制Gazebo中的人形机器人运动,还需完善相关配置。
ros_control是ROS提供用于机器人控制的中间件,包含不同类型的控制器和接口,用于虚拟接口的配置。机器人通过Moveit!完成左手或左腿的运动规划后,输出一个含有规划轨迹的action,再通过虚拟接口中配置的控制器将action中的信息转化成仿真机器人各关节需要的位置信息,用于控制机器人关节组在Gazebo环境中的运动,具体配置内容如下:
Gazebo方面,首先,创建控制器配置文件以配置joint_position_controller控制器;其次,创建控制器launch文件,在内加载控制器配置参数及控制器,并运行robot_state_publisher节点;最后,创建顶层launch文件,包含上述控制器launch文件,并启动Gazebo仿真环境。
Moveit!方面,首先,创建轨迹控制配置文件以配置Joint Trajectory Controller控制器,并通过创建launch文件加载轨迹控制器配置参数;其次,修改Moveit!控制器配置文件,并在其中增加控制器的命名空间;然后,修改Moveit!功能包中的XXX_moveit_ controller_ manager.launch.xml文件,加载修改后的控制器配置文件;随后,配置关节状态控制器配置文件,并创建相关launch文件加载关节状态控制器配置参数;接着,创建规划执行的launch文件,包含Moveit!功能包中的move_group.launch和moveit_rviz.launch文件;最后,创建顶层launch文件,启动机器人Gazebo仿真环境,包含上述所有控制器顶层launch文件和规划执行launch文件以启动Moveit!。
Rviz和Gazebo启动后,在MotionPlanning中分别对人形机器人的左手及左腿进行规划并执行,运行效果如图10和图11所示。由图10、图11可以看到:Gazebo中人形机器人开始运动,同时在Rviz中也会同步显示。
图10 机器人左手Moveit!+Gazebo仿真效果
4 结论
本文在人形机器人硬件设计基础上,介绍了ROS平台中使用URDF文件构建机器人模型的方法,实现了基于DARwIn-OP2人形机器人外壳的机器人三维模型构建,并搭建了相关物理仿真环境。通过Moveit!和Gazebo进行相关控制器的参数配置,对人形机器人的左手和左腿进行了联合仿真。仿真结果表明:本文设计的基于ROS的人形机器人可进行有效运动,验证了该模型的合理性,并为人形机器人在ROS环境中进行复杂的运动规划及控制打下了基础,同时对后期人形机器人的控制提供了可行性验证。
[1] 赵泊渌,谈英姿.机器人控制软件的发展与研究现状[J].工业控制计算机, 2014,27(4):108-110.
[2] 王南.人形机器人运动控制研究[D].北京:华北电力大学, 2016.
[3] 解仑,王志良,李敏嘉.双足步行机器人[M].北京:机械工业出版社, 2017.
[4] QUIGLEY M, GERKEY B, CONLEY K, et al. ROS: an open-source robot operating system[C]. ICRA Workshop on Open Source Software, 2009.
[5] 李步恒.基于双控制器与ROS平台的人形机器人系统设计[D].广州:广东工业大学,2018.
[6] 王敬宇.人形机器人控制器设计及步态控制算法研究[D].广州:广东工业大学,2019.
[7] 陈梓瀚,杜玉晓,李步恒,等.基于双控制器的人形机器人系统[J].自动化与信息工程,2018,39(5):33-37.
[8] HIRUKAW H, KAJITA S, KANEHIRO F, et al. The human-size humanoid robot that can walk, lie down and get up[J]. International Journal of Robotics Research, 2005, 24(9):755-769.
[9] 鹿霖,谢树新.ROS环境下的机器人仿真模型构建方法研究[J].现代电子技术,2018,41(7):102-105,110.
[10] 于程隆,李志奇,樊春光,等.基于ROS的机器人宇航员模型构建与仿真验证[J].机械与电子,2018,36(3):61-64,68.
[11] 曹正万,平雪良,陈盛龙,等.基于ROS的机器人模型构建方法研究[J].组合机床与自动化加工技术,2015(8):51-54.
[12] HA I , TAMURA Y , ASAMA H . Development of open platform humanoid robot DARwIn-OP[J]. Advanced Robotics, 2013, 27(3):223-232.
Model Construction and Simulation of Humanoid Robot Based on ROS
Yuan Danhe Du Yuxiao Jiang Xin Xiang Ying Wang Huan
(School of Automation, Guangdong University of Technology, Guangzhou 510006, China)
Based on the hardware design of humanoid robot, the URDF simulation model based on DARwIn-OP2 humanoid robot shell under ROS environment is constructed, and the left hand and left leg of the robot are jointly simulated by Moveit! and Gazebo. The simulation results verify the operability of the robot joint and the feasibility of motion control, and provide the basis for the follow-up study of complex motion planning and other issues.
humanoid robot; ROS; DARwIn-OP2; modeling and simulation
TP242.6
A
1674-2605(2020)06-0002-07
10.3969/j.issn.1674-2605.2020.06.002
袁丹鹤,男,1993年生,硕士研究生,主要研究方向:人形机器人、机器视觉。
杜玉晓(通信作者),男,1973年生,副教授,硕士生导师,主要研究方向:医疗器械设备及脑机接口(BCI)技术、数字图像处理、自动化装备与集成。E-mail: yuxiaodu@126.com