袁丹鶴 杜玉曉 江鑫 向穎 王煥
特約論文
基于ROS的人形機(jī)器人建模與仿真
袁丹鶴 杜玉曉 江鑫 向穎 王煥
(廣東工業(yè)大學(xué)自動(dòng)化學(xué)院,廣東 廣州 510006)
在人形機(jī)器人硬件設(shè)計(jì)基礎(chǔ)上,構(gòu)建ROS環(huán)境下基于DARwIn-OP2人形機(jī)器人外殼的URDF仿真模型;并利用Moveit!和Gazebo對(duì)該機(jī)器人的左手及左腿進(jìn)行聯(lián)合仿真。仿真結(jié)果驗(yàn)證了該機(jī)器人關(guān)節(jié)的可操作性和運(yùn)動(dòng)控制的可行性,為后續(xù)復(fù)雜運(yùn)動(dòng)規(guī)劃等問題的研究提供基礎(chǔ)。
人形機(jī)器人;ROS;DARwIn-OP2;建模仿真
機(jī)器人技術(shù)始于上世紀(jì)五十年代,德沃爾和英格伯格在1961年聯(lián)手制造了第一臺(tái)可編程的實(shí)用工業(yè)機(jī)器人Unimate[1]。隨著科學(xué)技術(shù)的發(fā)展,機(jī)器人已滲透于人類生活的各個(gè)領(lǐng)域。與工業(yè)機(jī)器人不同,人形機(jī)器人因具有類似人的形態(tài),人們對(duì)它的接受度更高。人形機(jī)器人已成為當(dāng)前機(jī)器人領(lǐng)域的研究熱點(diǎn)[2],其集機(jī)械、電子、計(jì)算機(jī)、材料、傳感器、控制技術(shù)、通信、人工智能和人工心理等多門學(xué)科于一體,代表了一個(gè)國(guó)家的科技發(fā)展水平[3]。
幾十年來,許多國(guó)家陸續(xù)推出了不同的人形機(jī)器人。同時(shí),隨著機(jī)器人技術(shù)的快速發(fā)展,相應(yīng)的開發(fā)環(huán)境越來越多、體系也越來越復(fù)雜,機(jī)器人面臨軟件通用性不足和復(fù)用性差等問題,使其發(fā)展面臨嚴(yán)峻考驗(yàn)。為提高機(jī)器人研發(fā)過程中的軟件復(fù)用率,2010年機(jī)器人操作系統(tǒng)(robot operating system,ROS)[4]發(fā)布。ROS是一個(gè)開源機(jī)器人操作系統(tǒng)平臺(tái),采取分布式結(jié)構(gòu)框架,點(diǎn)對(duì)點(diǎn)設(shè)計(jì),具有多語言支持、架構(gòu)簡(jiǎn)單、集成度高及組件化工具包豐富等特點(diǎn)。
本文在硬件設(shè)計(jì)基礎(chǔ)上,提出一種基于ROS的人形機(jī)器人軟件框架,并在ROS環(huán)境下搭建人形機(jī)器人模型和Gazebo仿真環(huán)境,通過Moveit!對(duì)Gazebo環(huán)境下的人形機(jī)器人左手和左腿進(jìn)行運(yùn)動(dòng)仿真。
人形機(jī)器人硬件系統(tǒng)主要由上層嵌入式計(jì)算系統(tǒng)和底層控制系統(tǒng)構(gòu)成。上層嵌入式計(jì)算系統(tǒng)主要由主控制器PICO-HC101和USB攝像頭組成,負(fù)責(zé)視覺感知和運(yùn)動(dòng)規(guī)劃等復(fù)雜算法的計(jì)算;底層控制系統(tǒng)主要由子控制器STM32舵機(jī)控制板、MX-28T舵機(jī)和IMU等組成,負(fù)責(zé)控制舵機(jī)和收集IMU等傳感器信息。人形機(jī)器人硬件系統(tǒng)框架[5]如圖1所示。
圖1 人形機(jī)器人硬件系統(tǒng)框架[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舵機(jī)控制板主要負(fù)責(zé)主控制器、舵機(jī)和傳感器之間的實(shí)時(shí)通信,主芯片選用STM32F103RET6(下文簡(jiǎn)稱STM32)單片機(jī),并在板上集成了陀螺儀和加速度計(jì)傳感器。
主控制器通過USB接口與外部通信,與子控制器的數(shù)據(jù)收發(fā)需要通過STM32設(shè)計(jì)USB轉(zhuǎn)串口電路實(shí)現(xiàn);通過STM32設(shè)計(jì)串口轉(zhuǎn)TTL及I2C/SPI實(shí)現(xiàn)舵機(jī)、IMU與子控制器的通信。因此,要實(shí)現(xiàn)主控制器對(duì)機(jī)器人的穩(wěn)定控制,STM32電路設(shè)計(jì)尤為重要。STM32電路圖[6]如圖2所示,其與主控制器、舵機(jī)和IMU的通信電路圖參見文獻(xiàn)[7]。
圖2 子控制器主芯片STM32F103RET6電路圖[6]
ROS是一個(gè)次級(jí)機(jī)器人操作系統(tǒng),點(diǎn)對(duì)點(diǎn)的設(shè)計(jì),可將機(jī)器人的功能模塊分割成節(jié)點(diǎn)的多個(gè)獨(dú)立進(jìn)程,每個(gè)節(jié)點(diǎn)負(fù)責(zé)處理一個(gè)功能模塊,且各節(jié)點(diǎn)分開編寫、編譯和啟動(dòng)。不同節(jié)點(diǎn)之間通過基于發(fā)布/訂閱模型的話題(Topic)和基于客服端/服務(wù)器模型的服務(wù)(Service),實(shí)現(xiàn)消息(Message)在節(jié)點(diǎn)間的交換。這種松耦合連接體系結(jié)構(gòu)使機(jī)器人系統(tǒng)功能實(shí)現(xiàn)模塊化設(shè)計(jì),各模塊之間具有相對(duì)較高的獨(dú)立性。
本文設(shè)計(jì)的基于ROS的人形機(jī)器人軟件框架如圖3所示,分為硬件層、操作系統(tǒng)層、中間層和應(yīng)用層。ROS作為次級(jí)操作系統(tǒng),無法直接在計(jì)算機(jī)硬件上運(yùn)行,需要搭載在Linux系統(tǒng)上。為此,在主控制器上移植了Ubuntu 16.04LTS系統(tǒng),并選取與之對(duì)應(yīng)的Kinetic版本ROS作為人形機(jī)器人的軟件平臺(tái)。
圖3 基于ROS的人形機(jī)器人軟件框架
應(yīng)用層的行為控制模塊、機(jī)器人控制模塊、視覺模塊和運(yùn)動(dòng)模塊等是本軟件控制系統(tǒng)的研究重點(diǎn)。將每個(gè)功能模塊設(shè)計(jì)成一個(gè)節(jié)點(diǎn),并在ROS Master管理下正常運(yùn)行。其中,行為控制模塊負(fù)責(zé)較高級(jí)別的規(guī)劃和控制任務(wù),整合處理各模塊的話題消息;機(jī)器人控制模塊是底層控制部分的核心,負(fù)責(zé)傳感器與舵機(jī)的實(shí)時(shí)控制,通過STM32舵機(jī)控制板和硬件接口組件實(shí)現(xiàn)通信,需要設(shè)計(jì)2個(gè)硬件接口,1個(gè)用于真實(shí)機(jī)器人通信,1個(gè)用于仿真的虛擬接口模擬通信;視覺模塊是機(jī)器人感知周圍環(huán)境的重要功能模塊,可以細(xì)分為視頻采集、目標(biāo)檢測(cè)跟蹤和目標(biāo)測(cè)距等多個(gè)子節(jié)點(diǎn);運(yùn)動(dòng)模塊具有步態(tài)、頭部控制、動(dòng)作控制和跌倒檢測(cè)4個(gè)核心子節(jié)點(diǎn)。
基于ROS的人形機(jī)器人舵機(jī)分布及ID分配如圖4所示,全身共有20個(gè)自由度(degree of freedom,DOF),其中頭部2個(gè)、左右手各3個(gè)、左右腿各6個(gè)。
圖4 人形機(jī)器人舵機(jī)分布及ID分配圖[5]
對(duì)人形機(jī)器人關(guān)節(jié)角度范圍限制時(shí),應(yīng)盡可能考慮正常人類相應(yīng)關(guān)節(jié)的活動(dòng)角度范圍,以保證機(jī)器人類似正常人類運(yùn)動(dòng)。由文獻(xiàn)[8]可知:正常人類頭部、左手及左腿各關(guān)節(jié)的活動(dòng)范圍如表1所示。由于本文人形機(jī)器人的關(guān)節(jié)數(shù)量相對(duì)人類少得多,因此在動(dòng)力學(xué)和運(yùn)動(dòng)學(xué)上會(huì)有一定的差異。此外,為避免外殼模型碰撞,且機(jī)器人可執(zhí)行一些人類不能執(zhí)行的動(dòng)作,機(jī)器人關(guān)節(jié)角度范圍相對(duì)于人類有一定調(diào)整,如表1所示。
表1 正常人類及人形機(jī)器人關(guān)節(jié)角度范圍
URDF是ROS中使用XML(可擴(kuò)展標(biāo)記語言)格式描述機(jī)器人模型的文件[9],包括機(jī)器人的外觀形狀、尺寸、顏色、物理屬性和關(guān)節(jié)類型等基本屬性。編寫URDF文件需要遵守的基本編程語法[10]
表2 URDF基本語法
其中,
其中,必須指定
[12],是一款開源平臺(tái)人形機(jī)器人,其與本文人形機(jī)器人具有相似的機(jī)械結(jié)構(gòu),因此使用其官網(wǎng)下載的STL格式外殼文件,用于本文基于ROS的人形機(jī)器人模型構(gòu)建。
首先,使用表2中的基本指令構(gòu)建不考慮模型尺寸大小信息的URDF基本樹形結(jié)構(gòu),并使用
圖5 使用check_urdf命令解析的URDF文件
在基本樹形結(jié)構(gòu)機(jī)器人模型下,首先,為每個(gè)joint添加
圖6 基于ROS的人形機(jī)器人URDF模型整體結(jié)構(gòu)圖
Rviz是ROS根據(jù)機(jī)器人系統(tǒng)可視化需求提供的一款三維可視化工具,可以顯示URDF文件描述的機(jī)器人模型、運(yùn)動(dòng)狀態(tài)、傳感器信息和周圍環(huán)境等多種數(shù)據(jù)。
實(shí)現(xiàn)Rviz對(duì)機(jī)器人的顯示,需要在launch文件中配置參數(shù)加載機(jī)器人URDF模型;配置joint_state_ publisher節(jié)點(diǎn)以發(fā)布機(jī)器人關(guān)節(jié)狀態(tài);配置robot_ state_publisher節(jié)點(diǎn)以發(fā)布坐標(biāo)變換關(guān)系(transform,TF);配置Rviz節(jié)點(diǎn)以運(yùn)行Rviz可視化界面?;贒ARwIn-OP2外殼的人形機(jī)器人在Rviz中的三維仿真模型如圖7所示。
圖7 人形機(jī)器人在Rviz中的三維仿真模型
Gazebo是一個(gè)三維物理仿真平臺(tái),因具有強(qiáng)大的物理引擎及高質(zhì)量的圖形渲染,使其可以提供高保真度的物理模擬,從而得以在復(fù)雜環(huán)境中準(zhǔn)確、有效地模仿機(jī)器人。因此,在不具備機(jī)器人實(shí)體的情況下,通過Gazebo來仿真機(jī)器人是一個(gè)較好選擇。
搭建Gazebo物理仿真環(huán)境,首先,為人形機(jī)器人配置Gazebo屬性,分為以下4步:
1)為link添加慣性參數(shù)
2)為link添加
3)添加傳動(dòng)裝置
4)添加Gazebo控制器插件。
其次,配置launch文件,將人形機(jī)器人模型加載到Gazebo仿真環(huán)境中;最后,直接添加環(huán)境模型或使用Building Editor創(chuàng)建仿真環(huán)境。人形機(jī)器人在Gazebo中的仿真環(huán)境如圖8所示。
圖8 Gazebo仿真環(huán)境下的人形機(jī)器人
Moveit!是一個(gè)集成化開發(fā)平臺(tái),包含操作控制、三維感知、運(yùn)動(dòng)規(guī)劃、運(yùn)動(dòng)學(xué)、控制和導(dǎo)航算法,核心節(jié)點(diǎn)是move_group,通過Topic和Action與機(jī)器人通信。使用Moveit! Setup Assistant可以方便快速地對(duì)人形機(jī)器人進(jìn)行配置。本文對(duì)機(jī)器人的左手和左腿進(jìn)行配置的主要步驟如下:
1)加載人形機(jī)器人URDF模型;
2)配置自碰撞矩陣;
3)配置虛擬關(guān)節(jié);
4)創(chuàng)建左手和左腿規(guī)劃組;
5)定義機(jī)器人自定義位姿;
6)配置無用關(guān)節(jié);
7)生成配置文件。
配置完成后,在生成的功能包內(nèi)含一個(gè)簡(jiǎn)單的演示demo,用以測(cè)試配置是否成功,運(yùn)行界面如圖9所示。
圖9 Moveit! demo運(yùn)行界面
雖然實(shí)現(xiàn)了人形機(jī)器人的Gazebo環(huán)境搭建以及Moveit!的配置,并通過Rviz顯示,但如果想使用Moveit!控制Gazebo中的人形機(jī)器人運(yùn)動(dòng),還需完善相關(guān)配置。
ros_control是ROS提供用于機(jī)器人控制的中間件,包含不同類型的控制器和接口,用于虛擬接口的配置。機(jī)器人通過Moveit!完成左手或左腿的運(yùn)動(dòng)規(guī)劃后,輸出一個(gè)含有規(guī)劃軌跡的action,再通過虛擬接口中配置的控制器將action中的信息轉(zhuǎn)化成仿真機(jī)器人各關(guān)節(jié)需要的位置信息,用于控制機(jī)器人關(guān)節(jié)組在Gazebo環(huán)境中的運(yùn)動(dòng),具體配置內(nèi)容如下:
Gazebo方面,首先,創(chuàng)建控制器配置文件以配置joint_position_controller控制器;其次,創(chuàng)建控制器launch文件,在內(nèi)加載控制器配置參數(shù)及控制器,并運(yùn)行robot_state_publisher節(jié)點(diǎn);最后,創(chuàng)建頂層launch文件,包含上述控制器launch文件,并啟動(dòng)Gazebo仿真環(huán)境。
Moveit!方面,首先,創(chuàng)建軌跡控制配置文件以配置Joint Trajectory Controller控制器,并通過創(chuàng)建launch文件加載軌跡控制器配置參數(shù);其次,修改Moveit!控制器配置文件,并在其中增加控制器的命名空間;然后,修改Moveit!功能包中的XXX_moveit_ controller_ manager.launch.xml文件,加載修改后的控制器配置文件;隨后,配置關(guān)節(jié)狀態(tài)控制器配置文件,并創(chuàng)建相關(guān)launch文件加載關(guān)節(jié)狀態(tài)控制器配置參數(shù);接著,創(chuàng)建規(guī)劃執(zhí)行的launch文件,包含Moveit!功能包中的move_group.launch和moveit_rviz.launch文件;最后,創(chuàng)建頂層launch文件,啟動(dòng)機(jī)器人Gazebo仿真環(huán)境,包含上述所有控制器頂層launch文件和規(guī)劃執(zhí)行l(wèi)aunch文件以啟動(dòng)Moveit!。
Rviz和Gazebo啟動(dòng)后,在MotionPlanning中分別對(duì)人形機(jī)器人的左手及左腿進(jìn)行規(guī)劃并執(zhí)行,運(yùn)行效果如圖10和圖11所示。由圖10、圖11可以看到:Gazebo中人形機(jī)器人開始運(yùn)動(dòng),同時(shí)在Rviz中也會(huì)同步顯示。
圖10 機(jī)器人左手Moveit!+Gazebo仿真效果
本文在人形機(jī)器人硬件設(shè)計(jì)基礎(chǔ)上,介紹了ROS平臺(tái)中使用URDF文件構(gòu)建機(jī)器人模型的方法,實(shí)現(xiàn)了基于DARwIn-OP2人形機(jī)器人外殼的機(jī)器人三維模型構(gòu)建,并搭建了相關(guān)物理仿真環(huán)境。通過Moveit!和Gazebo進(jìn)行相關(guān)控制器的參數(shù)配置,對(duì)人形機(jī)器人的左手和左腿進(jìn)行了聯(lián)合仿真。仿真結(jié)果表明:本文設(shè)計(jì)的基于ROS的人形機(jī)器人可進(jìn)行有效運(yùn)動(dòng),驗(yàn)證了該模型的合理性,并為人形機(jī)器人在ROS環(huán)境中進(jìn)行復(fù)雜的運(yùn)動(dòng)規(guī)劃及控制打下了基礎(chǔ),同時(shí)對(duì)后期人形機(jī)器人的控制提供了可行性驗(yàn)證。
[1] 趙泊淥,談?dòng)⒆?機(jī)器人控制軟件的發(fā)展與研究現(xiàn)狀[J].工業(yè)控制計(jì)算機(jī), 2014,27(4):108-110.
[2] 王南.人形機(jī)器人運(yùn)動(dòng)控制研究[D].北京:華北電力大學(xué), 2016.
[3] 解侖,王志良,李敏嘉.雙足步行機(jī)器人[M].北京:機(jī)械工業(yè)出版社, 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平臺(tái)的人形機(jī)器人系統(tǒng)設(shè)計(jì)[D].廣州:廣東工業(yè)大學(xué),2018.
[6] 王敬宇.人形機(jī)器人控制器設(shè)計(jì)及步態(tài)控制算法研究[D].廣州:廣東工業(yè)大學(xué),2019.
[7] 陳梓瀚,杜玉曉,李步恒,等.基于雙控制器的人形機(jī)器人系統(tǒng)[J].自動(dòng)化與信息工程,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環(huán)境下的機(jī)器人仿真模型構(gòu)建方法研究[J].現(xiàn)代電子技術(shù),2018,41(7):102-105,110.
[10] 于程隆,李志奇,樊春光,等.基于ROS的機(jī)器人宇航員模型構(gòu)建與仿真驗(yàn)證[J].機(jī)械與電子,2018,36(3):61-64,68.
[11] 曹正萬,平雪良,陳盛龍,等.基于ROS的機(jī)器人模型構(gòu)建方法研究[J].組合機(jī)床與自動(dòng)化加工技術(shù),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年生,碩士研究生,主要研究方向:人形機(jī)器人、機(jī)器視覺。
杜玉曉(通信作者),男,1973年生,副教授,碩士生導(dǎo)師,主要研究方向:醫(yī)療器械設(shè)備及腦機(jī)接口(BCI)技術(shù)、數(shù)字圖像處理、自動(dòng)化裝備與集成。E-mail: yuxiaodu@126.com