国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ROS 平臺(tái)的移動(dòng)機(jī)器人運(yùn)動(dòng)分析與仿真

2018-12-08 01:19:26張玉林陳勇林
關(guān)鍵詞:搖桿移動(dòng)機(jī)器人字節(jié)

張玉林 陳勇林

(重慶大學(xué)城市科技學(xué)院,重慶,402167)

0 引言

ROS(Robot Operating System)被稱為機(jī)器人操作系統(tǒng),但實(shí)際上其充當(dāng)?shù)氖峭ㄐ胖虚g件的角色,即:在已有操作系統(tǒng)的基礎(chǔ)上搭建一整套針對(duì)機(jī)器人系統(tǒng)的實(shí)現(xiàn)框架。此外,ROS還可以提供一組實(shí)用工具和軟件庫(kù),用于維護(hù)、構(gòu)建、編寫和執(zhí)行可用于多個(gè)計(jì)算平臺(tái)的軟件代碼[1]。

值得一提的是,由于ROS的設(shè)計(jì)者考慮到每個(gè)開發(fā)者使用的開發(fā)語(yǔ)言不同,因此將ROS設(shè)計(jì)成獨(dú)立開發(fā)語(yǔ)言,支持C++、Python等多種開發(fā)語(yǔ)言。除了官方提供的功能包之外,ROS還聚合了全世界開發(fā)者實(shí)現(xiàn)的大量開源功能包,如上海思嵐科技有限公司(SLAMTEC)發(fā)布了針對(duì)其自主研發(fā)的激光雷達(dá)RPLIDAR的ROS功能包rplidar_ros,這些開源功能包與ROS一起構(gòu)成了強(qiáng)大的開源生態(tài)環(huán)境。

ROS的系統(tǒng)結(jié)構(gòu)設(shè)計(jì)也頗具特色,其運(yùn)行時(shí)由多個(gè)松耦合的進(jìn)程組成,每個(gè)進(jìn)程ROS稱之為節(jié)點(diǎn),所有節(jié)點(diǎn)均可以運(yùn)行在一個(gè)處理器上,也可以分布式運(yùn)行在多個(gè)處理器上。在實(shí)際使用時(shí),這種松耦合的結(jié)構(gòu)設(shè)計(jì),可以讓開發(fā)者根據(jù)機(jī)器人所需功能靈活添加各個(gè)功能模塊。

1 理論分析

1.1 電機(jī)轉(zhuǎn)動(dòng)控制

電機(jī)的控制分為兩部分,一部分為電機(jī)轉(zhuǎn)動(dòng)方向的控制,另一部分為電機(jī)轉(zhuǎn)速的控制。電機(jī)轉(zhuǎn)動(dòng)方向用兩個(gè)MCU引腳來(lái)控制,假如:PIN_A=1,PIN_B=0 時(shí),電機(jī)正轉(zhuǎn);PIN_A=0,PIN_B=1 時(shí),電機(jī)反轉(zhuǎn);PIN_A=0,PIN_B=0 時(shí),電機(jī)停止轉(zhuǎn)動(dòng)。電機(jī)速度的控制則需要一個(gè)PWM輸出引腳,筆者通過(guò)控制輸出不同的PWM值來(lái)控制電機(jī)轉(zhuǎn)動(dòng)的速度。

1.2 PID控制

如果我們想控制小車以1m/s的速度做直線運(yùn)動(dòng),但由于地面阻力的影響,會(huì)造成小車的左右輪速度與目標(biāo)控制速度不同,故小車不會(huì)沿直線運(yùn)動(dòng),這時(shí)就需要加入PID控制。PID控制的原理就是:實(shí)時(shí)采集小車輪子真正的速度與控制的速度進(jìn)行對(duì)比,差則補(bǔ),多則減,這樣基本就可以實(shí)現(xiàn)對(duì)目標(biāo)的控制。該小車的PID算法如附錄A所示[2]。

1.3 小車轉(zhuǎn)彎控制

一般情況下,我們要想控制小車前進(jìn)或者后退的速度,只需要利用PID算法控制兩個(gè)輪子的速度保持一致就可以做到。但如果我們要控制小車轉(zhuǎn)彎的角速度,則需要做一定的計(jì)算,其計(jì)算分析過(guò)程如圖1所示。

圖1 小車轉(zhuǎn)彎控制計(jì)算分析

1.4 參數(shù)測(cè)量與計(jì)算

當(dāng)小車轉(zhuǎn)向時(shí),四個(gè)輪胎都近似圍繞一個(gè)中心點(diǎn)旋轉(zhuǎn),以保證小車在行駛過(guò)程中的穩(wěn)定性,但是由于四輪差速轉(zhuǎn)向小車沒(méi)有轉(zhuǎn)向機(jī)構(gòu),很難保證其穩(wěn)定性。此外,小車轉(zhuǎn)向時(shí)很容易和地面發(fā)生滑移。本文把小車的形心作為質(zhì)心,并且忽略路面情況變化等的影響,得出四輪差速轉(zhuǎn)向小車的運(yùn)動(dòng)學(xué)模型,如圖2所示。

圖2 四輪差速轉(zhuǎn)向小車的運(yùn)動(dòng)學(xué)模型

式(1)-式(8)中,R1為左前輪轉(zhuǎn)動(dòng)半徑;R2為右前輪轉(zhuǎn)動(dòng)半徑;L為質(zhì)心到輪子的水平距離,R為小車質(zhì)心到旋轉(zhuǎn)中心點(diǎn)O的水平距離。

式(9)中,i為電動(dòng)機(jī)的減速比,r為車輪的半徑,電機(jī)的轉(zhuǎn)速可以根據(jù)得到。

本文根據(jù)小車的實(shí)際尺寸計(jì)算出所需數(shù)據(jù)。小車的各項(xiàng)參數(shù)計(jì)算如下:前后輪軸距K=168 mm,左右輪距離L=266 mm,車輪半徑r=130 mm,電動(dòng)機(jī)減速比1∶30。

假設(shè)小車轉(zhuǎn)向的角速度ω為5 rad/s,轉(zhuǎn)向半徑R為100 mm。由上面的公式便可得出小車各個(gè)輪子的轉(zhuǎn)速:n1=n3=18.3 r/min;n2=n4=116.1 r/min。

1.5 ROS平臺(tái)與底盤通信協(xié)議

ROS平臺(tái)與小車底盤的通信一般是通過(guò)串口或者CAN總線,本文采用串口作為通信方式,以下為自定義的通信數(shù)據(jù)格式。

1.5.1 小車底盤串口

串口接收:小車左右輪速度,單位:mm/s;10字節(jié)(所有數(shù)據(jù)都為float型,float型占4字節(jié)):右輪速度4字節(jié),左輪速度4字節(jié),結(jié)束符“ ”2字節(jié)。

串口發(fā)送:里程計(jì)x, y坐標(biāo)、線速度、角速度和方向角,單位依次為:mm、mm、mm/s、rad/s、rad;21字節(jié)(所有數(shù)據(jù)都為float型,float型占4字節(jié)):x坐標(biāo)4字節(jié),y坐標(biāo)4字節(jié),線速度4字節(jié),角速度4字節(jié),方向角4字節(jié),結(jié)束符“ ”1字節(jié)。

1.5.2 ROS平臺(tái)串口節(jié)點(diǎn)

寫入串口:左右輪速度,單位為mm/s;10字節(jié):右輪速度4字節(jié),左輪速度4字節(jié),結(jié)束符“ ”2字節(jié)。

讀取串口:小車x、y坐標(biāo)、方向角、線速度、角速度,單位依次為:mm、mm、rad、mm/s、rad/s;21字節(jié):X坐標(biāo)4字節(jié),Y坐標(biāo)4字節(jié),方向角4字節(jié),線速度4字節(jié),角速度4字節(jié),結(jié)束符“ ”1字節(jié)。

2 運(yùn)動(dòng)規(guī)劃仿真

2.1 屬性配置

本文使用程序工具moveit setup assistant對(duì)機(jī)器人進(jìn)行屬性配置,其界面如圖3所示。

圖3 Moveit屬性設(shè)置界面

2.2 關(guān)節(jié)運(yùn)動(dòng)仿真

本文通過(guò)moveit setup assistant,成功使用Rviz進(jìn)行了機(jī)器人關(guān)節(jié)運(yùn)動(dòng)仿真和整體運(yùn)動(dòng)仿真,如圖4-圖7所示。URDF(Unified Robot Description Format)為統(tǒng)一機(jī)器人描述格式,ROS中的URDF功能包中包含一個(gè)URDF的C++解析器,URDF文件使用XML格式描述機(jī)器人模型。

圖4 URDF模型關(guān)鍵運(yùn)動(dòng)仿真

圖5 利用Rviz對(duì)機(jī)器人進(jìn)行運(yùn)動(dòng)規(guī)劃

圖6 Rviz呈現(xiàn)的小車模型

圖7 Rviz呈現(xiàn)的小車運(yùn)動(dòng)軌跡

2.3 模塊運(yùn)動(dòng)仿真

本文首先通過(guò)Rviz對(duì)機(jī)器人模塊進(jìn)行運(yùn)動(dòng)仿真(圖8為L(zhǎng)inux命令代碼操作)[3]。

圖8 通過(guò)Linux命令直接仿真機(jī)器人運(yùn)動(dòng)

然后,編寫.launch文件(c++編寫)存放在package包內(nèi)的launch文件(file)中,在Linux命令框中用roslaunch代碼讀取.launch文件(文件中有機(jī)器人運(yùn)動(dòng)規(guī)劃代碼),如圖9所示。

圖9 通過(guò)launch文件編寫代碼對(duì)機(jī)器人進(jìn)行復(fù)雜運(yùn)動(dòng)仿真

最后,用apt-get在ROS官網(wǎng)上下載搖桿包,通過(guò)搖桿仿真控制機(jī)器人運(yùn)動(dòng),如圖10所示。

圖10 通過(guò)搖桿控制規(guī)劃?rùn)C(jī)器人運(yùn)動(dòng)路線

2.4 控制模擬

圖10中右邊命令框Arbotix Controller是模擬搖桿控制器,系統(tǒng)首先通過(guò)采集搖桿節(jié)點(diǎn)輸入數(shù)據(jù)向機(jī)器人節(jié)點(diǎn)發(fā)送Topic消息,并用Rosrun運(yùn)行rqt_graph彈出如圖11界面,對(duì)機(jī)器人節(jié)點(diǎn)間的Topic話題進(jìn)行可視化分析[4];然后用Marker對(duì)機(jī)器人運(yùn)動(dòng)軌跡進(jìn)行第三方控制[5],控制流程和路徑控制如圖12、圖13所示。

圖11 機(jī)器人節(jié)點(diǎn)話題可視化分析

圖12 Marker控制流程

圖13 Rviz路徑控制

從上述介紹可知,小車運(yùn)動(dòng)規(guī)劃仿真包括:環(huán)境搭建與機(jī)器人屬性設(shè)置、運(yùn)動(dòng)規(guī)劃模擬、可視化界面呈現(xiàn)與分析、節(jié)點(diǎn)話題可視化分析。

3 結(jié)果分析

在ROS平臺(tái)相應(yīng)仿真軟件的幫助下,機(jī)器人運(yùn)動(dòng)控制系統(tǒng)的設(shè)計(jì)大幅度簡(jiǎn)化。上述運(yùn)動(dòng)規(guī)劃仿真逐步實(shí)現(xiàn)了小車從路徑控制到搖桿控制的過(guò)程。本文通過(guò)模擬分析,得到了機(jī)器人運(yùn)動(dòng)模式及相應(yīng)的控制方法,為后續(xù)硬件搭建與功能的實(shí)現(xiàn)提供了參考。

基于ROS平臺(tái)的輔助機(jī)器視覺與運(yùn)動(dòng)規(guī)劃把機(jī)器人設(shè)計(jì)成兩個(gè)板塊,首先,上位機(jī)樹莓派通過(guò)ROS的通信協(xié)議接收下位機(jī)Arduino接收的攝像頭等傳感器數(shù)據(jù),并進(jìn)行SLAM與基于PID算法的路徑規(guī)劃等運(yùn)算預(yù)處理,然后將預(yù)處理數(shù)據(jù)結(jié)果通過(guò)ROS通信協(xié)議返還給下位機(jī)Arduino進(jìn)行數(shù)據(jù)結(jié)果解析,并對(duì)包括舵機(jī)轉(zhuǎn)速、攝像頭朝向等外部控制參數(shù)進(jìn)行直接操作,最終實(shí)現(xiàn)機(jī)器人的運(yùn)動(dòng)控制。移動(dòng)機(jī)器人系統(tǒng)設(shè)計(jì)如圖14所示。

圖14 移動(dòng)機(jī)器人系統(tǒng)設(shè)計(jì)

4 總結(jié)

針對(duì)當(dāng)前實(shí)現(xiàn)室內(nèi)環(huán)境定位與地圖構(gòu)建( SLAM)功能的移動(dòng)機(jī)器人成本高等問(wèn)題,本文提出了一種低成本的開源移動(dòng)機(jī)器人 控制系統(tǒng)方案,以控制芯片 Arduino為基礎(chǔ),通過(guò)將開源機(jī)器人操作系統(tǒng)(ROS)移植到開源嵌入式系統(tǒng)當(dāng)中,設(shè)計(jì)出基于 ROS 的分布式上位機(jī)控制軟件和實(shí)時(shí)操作系統(tǒng)的下位機(jī)程序,從而完成移動(dòng)機(jī)器人控制系統(tǒng)的搭建,實(shí)現(xiàn)移動(dòng)機(jī)器人的分布式控制。移動(dòng)機(jī)器人所使用的軟硬件均開源,且成本低、性能高、可擴(kuò)展性好。實(shí)驗(yàn)結(jié)果表明,該控制系統(tǒng)具有較好的穩(wěn)定性和實(shí)時(shí)性,而且該研究對(duì)移動(dòng)機(jī)器人的開發(fā)與實(shí)際應(yīng)用提供了一個(gè)新的思路與方法。

本文最后的附錄A和附錄B,分別介紹了小車的PID算法和小車運(yùn)動(dòng)控制所需調(diào)用的ROS的C++庫(kù),供相關(guān)研發(fā)人員參考。

猜你喜歡
搖桿移動(dòng)機(jī)器人字節(jié)
移動(dòng)機(jī)器人自主動(dòng)態(tài)避障方法
街機(jī)、格斗游戲更暢爽
電腦愛好者(2022年5期)2022-05-30 14:58:47
No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
曲柄搖桿機(jī)構(gòu)的急回程度分析與探討*
曲柄與搖桿擺角的關(guān)系
No.10 “字節(jié)跳動(dòng)手機(jī)”要來(lái)了?
簡(jiǎn)談MC7字節(jié)碼
基于Twincat的移動(dòng)機(jī)器人制孔系統(tǒng)
曲柄搖桿行星系取苗機(jī)構(gòu)參數(shù)匹配與優(yōu)化
極坐標(biāo)系下移動(dòng)機(jī)器人的點(diǎn)鎮(zhèn)定
恭城| 台前县| 万源市| 合山市| 东兰县| 平南县| 凤台县| 烟台市| 景东| 长岛县| 苍溪县| 延庆县| 嵊州市| 平邑县| 上高县| 永善县| 息烽县| 聂荣县| 新平| 贵州省| 安化县| 龙岩市| 土默特右旗| 定南县| 崇文区| 花垣县| 盘锦市| 灵川县| 武邑县| 吉首市| 香格里拉县| 钦州市| 额敏县| 宁化县| 仁布县| 固阳县| 大竹县| 昭觉县| 信宜市| 湖北省| 葫芦岛市|