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