摘要:本項(xiàng)目重點(diǎn)研究依賴于開(kāi)源機(jī)器人操作系統(tǒng)ROS平臺(tái),在3D動(dòng)態(tài)模擬器軟件Gazebo中,通過(guò)鍵盤或Xbox360控制模擬UAV Hector Quadrotor從而實(shí)現(xiàn)四旋翼室內(nèi)與室外的仿真飛行。
關(guān)鍵詞:ROS; Gazebo;Hector;Quadrotor
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)08-0259-02
新手在練習(xí)四旋翼飛行器控制飛行時(shí),經(jīng)常會(huì)因技術(shù)不夠熟練而出現(xiàn)炸機(jī)的現(xiàn)象,損壞飛行器硬件造成不必要的損失。通過(guò)采用實(shí)時(shí)仿真的形式,降低練習(xí)時(shí)的損耗。本項(xiàng)目重點(diǎn)研究hector_quadrotor飛行器自主導(dǎo)航,避障和路徑規(guī)劃。軟件依賴于機(jī)器人操作系統(tǒng)(ROS)軟件。ROS提供硬件抽象,設(shè)備驅(qū)動(dòng),庫(kù),可視化工具,消息傳遞,包管理等。Gazebo提供精確和高效地模擬復(fù)雜室內(nèi)和室外環(huán)境中飛行器的能力[1]。
在ROS環(huán)境下,無(wú)人機(jī)的仿真有三種實(shí)現(xiàn)方式,一種是mav-ros配合sitl的仿真,其次是hector_quadrotor ros package,第三種是ETH新出的一個(gè)gazebo環(huán)境仿真包。在上述三種方式中,sitl的設(shè)置比較煩瑣,無(wú)人機(jī)的控制主要通過(guò)指令實(shí)現(xiàn)。hec-tor_quadrotor開(kāi)發(fā)比較完善,不僅可以使用xbox作為飛機(jī)的遙控器,而且還可以使用鍵盤對(duì)無(wú)人機(jī)進(jìn)行控制。rotorS是新出的包,里邊給}H了幾種商用的飛機(jī)模型,控制指令是ros meassage[2]。本文重點(diǎn)介紹Hector Quadrotor四旋翼控制模擬的實(shí)現(xiàn)方法。
Hector Quadrotor是用于ROS Gazebo環(huán)境中的模擬四旋翼UAV ,Hector Quadrotor綜合功能包里包含了UAV的URDF描述建模、飛行控制以及在Gazebo中運(yùn)行四旋翼飛行器仿真的啟動(dòng)文件等。
Hector Quadrotor有兩個(gè)仿真應(yīng)用場(chǎng)景,分別為室內(nèi)和室外,本文以此分為兩部分闡述在Gazebo中模擬Hector四旋翼飛行器。
1 準(zhǔn)備工作
仿真之前需要安裝Hector Quadrotor功能包,以安裝Hector Quadroter的ROS Indigo版本,執(zhí)行命令
$ sudo apt-get update
$sudo apt-get install ros-indigo-hector-quadrotor-demo
大量的ROS功能包被下載并且安裝,hector_quadrotor_demo就是下載的主要hector_quadrotor包。其中包與四旋翼無(wú)人機(jī)系統(tǒng)建模,控制及仿真相關(guān)的包。Hector_quadrotor_description提供了通用的四旋翼URDF模型以及各種各樣的傳感器。Hector_quadrotor_gazebo包含了在Gazebo中運(yùn)行四旋翼模型所需要的launch file以及依賴信息。Hector_quadrotor_teleop包含一個(gè)允許使用gamepad控制旋翼的節(jié)點(diǎn)。Hector_quadrotor_gazebo_plugins提供在Gazebo仿真環(huán)境中進(jìn)行四旋翼仿真的所需的特定的plugins。[3]
2 在Gazebo中啟動(dòng)Hector四旋翼飛行器
在仿真之前,首先在終端窗口執(zhí)行$ roscore命令啟動(dòng)ros-master。
2.1 室外飛行Hector
室外飛行的軟件已經(jīng)包含在Hector_quadrotor中,鍵入以下命令啟動(dòng)室外仿真:
$ roslaunch hector_quadrotor_demo outdoor_flight_gazebo.launch
命令執(zhí)行完成后,會(huì)在Gazebo中加載一個(gè)滾動(dòng)景觀環(huán)境,并生成一個(gè)Hector Quadrotor模型。同時(shí)啟動(dòng)一個(gè)rvIz節(jié)點(diǎn),為四旋翼飛行器戶外飛行配置。大量的飛行坐標(biāo)和控制參數(shù)信息也會(huì)初始化并加載給Parameter Server。Quadrotor_propulsion插件的四旋翼推理模型參數(shù)和quadrotor_aerodvnamics插件的阻力模型參數(shù)會(huì)顯示出來(lái)。然后出現(xiàn)physics dynamic reconfig-ure ready。
2.2 室內(nèi)飛行Hector
在hector_quadrotor綜合功能包里包含四旋翼飛行器室內(nèi)的SLAM例程軟件,鍵入以下命令啟動(dòng)仿真:
$ roslaunch hector_quadrotor_demo indoor_slam_gazebo.launch
仿真啟動(dòng)之后,將在rviz和Gazebo中顯示W(wǎng)illow Garage辦公室,Hector開(kāi)始位于室內(nèi)房間的地板上。此時(shí)通過(guò)執(zhí)行hec-tor_quadrotor_teleop xbox_controller.launch控制Hector的飛行。
3 控制Hector四旋翼的飛行
在Gazeboo中啟動(dòng)HectorQuadrotor后,四旋翼飛行器出現(xiàn)在模擬場(chǎng)景的地面上,準(zhǔn)備起飛。在它的主電機(jī)座上有一個(gè)紅色標(biāo)記指示了它的前進(jìn)方向。要實(shí)現(xiàn)對(duì)Hec-tor Quadrotor的控制飛行,可以通過(guò)Xbox 360控制器或者計(jì)算機(jī)的鍵盤。
3.1 Xbox360控制四旋翼飛行
要將仿真四旋翼飛行器飛行起來(lái),必須啟動(dòng)Xbox 360控制器的操縱桿控制器軟件。打開(kāi)另一個(gè)終端窗口,通過(guò)hec-tor_quadrotor_teleop功能包中的啟動(dòng)文件來(lái)啟動(dòng)操縱桿控制器:
$ roslaunch hector_quadrotor_teleop xbox_controller.launch
這個(gè)過(guò)程會(huì)啟動(dòng)一個(gè)j oy_node節(jié)點(diǎn),用來(lái)處理Xbox 360控制器上左操縱桿和右操縱桿的操作輸入。此節(jié)點(diǎn)發(fā)布的消息包含操縱桿軸和按鈕的當(dāng)前狀態(tài)。而quadrotor_teleop節(jié)點(diǎn)會(huì)訂閱這些信息,然后在主題cmd_vel上發(fā)布提供了四旋翼飛行器飛行的速度和方向的消息。用操縱桿控制飛行器在模擬的戶外環(huán)境飛行。飛行員的視圖可以在rviz屏幕左下角的攝像頭圖像視圖中看到。
3.2 鍵盤控制四旋翼飛行
執(zhí)行命令git clone https://github.com/ros-teleop/teleop_twist_keyboardT載ROS Python包,放在建立的工作空間并編譯。使用命令
$ rosrun teleop_twist_keyboardteleop_twist_keyboard.py運(yùn)行該節(jié)點(diǎn)。注意首先按t建讓飛機(jī)飛起來(lái)才能進(jìn)行其他控制,否則現(xiàn)象是控制鍵飛機(jī)沒(méi)有反應(yīng)。鼠標(biāo)指針必須位于teleop_twist_keyboard終端窗口,否則鍵盤無(wú)法控制模擬四旋翼飛行。
3.3 rqt_graph工具查看節(jié)點(diǎn)和主題之間的交互關(guān)系
在終端窗口執(zhí)行命令$ros run rqt_graph rqt_graph,rqLgrph工具中顯示活動(dòng)節(jié)點(diǎn)和主題之間的交互關(guān)系。圖中橢圓形框表示當(dāng)前活動(dòng)的節(jié)點(diǎn),矩形框表示主題,節(jié)點(diǎn)發(fā)布消息到主題用箭頭指向表示。
4 結(jié)論
在實(shí)踐環(huán)節(jié)中引入Hector四旋翼仿真,從室內(nèi)和室外兩類不同環(huán)境下模擬四旋翼飛行器的飛行。極大限度降低了初學(xué)者對(duì)四旋翼硬件耗材的依賴,降低了新手訓(xùn)練時(shí)的經(jīng)濟(jì)成本。
參考文獻(xiàn):
[1] Wil Selby.ros integration[EB/OL].https://www.wilselby.com/re-search/ros-integration/,2017.
[2] Carol Fairchild and Thomas L.Harman.《ROS /robotics By Ex-ample》[M]。Making a Robot Fly[C].北京:機(jī)械工業(yè)出版社,2018.
【通聯(lián)編輯:光文玲】
基金項(xiàng)目:大學(xué)生創(chuàng)新、創(chuàng)業(yè)實(shí)踐項(xiàng)目(項(xiàng)目編號(hào):201911050032T)
作者簡(jiǎn)介:滕步煒(1974-),男,計(jì)算機(jī)網(wǎng)絡(luò)控制工程碩士,副教授,主要研究方向?yàn)橛?jì)算機(jī)技術(shù)領(lǐng)域的教學(xué)與科研工作。