教程 | 阿克曼结构移动机器人的gazebo仿真(一)
第一章、從SOLIDWORKS中導(dǎo)出URDF
? ? ? ?二輪差速小車已經(jīng)完結(jié)。接下去要進(jìn)入阿克曼結(jié)構(gòu)移動(dòng)機(jī)器人的仿真。阿克曼小車的結(jié)構(gòu)也就是我們看到最多的應(yīng)用最廣的車型,也稱為car-like robot。在這里先挖下一個(gè)大坑,因?yàn)橐龅臇|西很多,目前要做的僅僅是讓阿克曼小車能夠在gazebo仿真器中跑動(dòng)起來,并且能夠進(jìn)行建圖導(dǎo)航即可,后續(xù)再對(duì)其進(jìn)行拓展。本次系列要做的還是類似于二輪差速車仿真實(shí)現(xiàn)這樣的一個(gè)流程,不過這次要分別用Twist消息和ackermann消息實(shí)現(xiàn)阿克曼小車的運(yùn)動(dòng),以及建圖導(dǎo)航,請(qǐng)各位拭目以待。
1.配置sw_urdf_exporter插件
? ? ? ?在二輪差速小車gazebo仿真的第一章已經(jīng)說到配置的方法,這邊再給一個(gè)插件的下載地址
[http://wiki.ros.org/sw_urdf_exporter] ? ?http://wiki.ros.org/sw_urdf_exporter?
下載sw2urdfSetup.exe文件后點(diǎn)擊安裝,安裝后就能用插件從SolidWorks中導(dǎo)出URDF模型了。
2.打開創(chuàng)建好的solidworks模型
? ? ? 下面是裝配好的tianracer阿克曼小車模型裝配體(這里非常感謝天之博特的模型支持),值得注意的是在裝配的過程中,小車的車頭要指向X軸正方向,豎直方向?yàn)閆軸正方向,這些在裝配的過程中需要額外注意,否則導(dǎo)出的URDF文件在gazebo或者RVIZ中小車的方位會(huì)有問題,如小車直接側(cè)翻等等。
3.創(chuàng)建所有l(wèi)ink點(diǎn)和坐標(biāo)系和joint軸線
? ? ? ?與差速小車配置有所不同的是,這次需要將點(diǎn)、坐標(biāo)系、軸線混合起來配置。因?yàn)橛行┑胤叫枰玫絻奢S線的交點(diǎn)作為點(diǎn),然后構(gòu)建坐標(biāo)系,配置深度攝像頭、激光雷達(dá)、單目攝像頭的方式與之前配置差速小車傳感器配件的方式一樣,我們還可以找一個(gè)小零件做imu傳感器模塊(其實(shí)仿真環(huán)境里面沒有必要用到imu,但是為了還原真實(shí)性的話可以放置用一下),以上配置方式我按下不表,可參考二輪差速小車的配置方式。附上鏈接:
[ROS學(xué)習(xí)初探之自建小車模型并進(jìn)行仿真(一)]??
? ? ?接下去重點(diǎn)講一下阿克曼底盤的配置,我們先看一下阿克曼車的運(yùn)動(dòng)學(xué)模型:
我們可以看到車子轉(zhuǎn)彎的時(shí)候兩前輪會(huì)發(fā)生擺轉(zhuǎn),在模型中令小車轉(zhuǎn)向的是與兩前輪相連接的轉(zhuǎn)向鉸鏈也叫steering hinge,前邊兩個(gè)steering hinge通過連桿連接形成正梯形四邊形結(jié)構(gòu),正因?yàn)槭翘厥獾恼菪嗡倪呅谓Y(jié)構(gòu),使得兩前輪的轉(zhuǎn)動(dòng)角度不同,且四輪的旋轉(zhuǎn)中心可匯交與車外的一點(diǎn),而這一點(diǎn)即使小車的旋轉(zhuǎn)中心。通過控制steering hinge的轉(zhuǎn)動(dòng)角度,可求得小車的最小轉(zhuǎn)彎半徑,在這里我們要記錄一下車子前后輪的輪距wheel base,以及左右輪的寬度,以便于后續(xù)的需要。前后輪的配置與二輪差速小車的配置一致這里不再贅述。主要講一下steering hinge,先配置left steering hinge ,在配置的時(shí)候盡量保持前后輪平行,并在配置前將與之相配合的輪子隱形以便于配置,并且需要將連桿刪去(gazebo無法仿真四邊形機(jī)構(gòu)),因其與base_link相配合,我們?cè)赽ase_link上邊設(shè)置其旋轉(zhuǎn)軸,并將其命名為le_steer:
接著我們?cè)趌eft steering hinge上創(chuàng)建左輪的轉(zhuǎn)動(dòng)軸,并將其命名為le_fr_wh:
選擇參考幾何體--點(diǎn),選擇剛剛建立的兩軸線交叉生成點(diǎn),該點(diǎn)為left steering hinge以及l(fā)eft front wheel旋轉(zhuǎn)軸的交點(diǎn):
以點(diǎn)為基準(zhǔn)建立坐標(biāo)系并將其命名為le_steer_hinge:
我們對(duì)right steering hinge的配置如法炮制,至此坐標(biāo)系和軸線已經(jīng)全部配置完畢。
4.使用sw_urdf_exporter插件導(dǎo)出URDF
? ? ?依次點(diǎn)擊“工具—File—Export as URDF”打開插件,首先配置的是URDF Exporter界面,配置方法在二輪差速小車章節(jié)已經(jīng)寫的比較詳細(xì)了,這里不再贅述,值得注意的是前輪的配置parent link 到child link的順序依次是base_link-->steering_hinge-->front_wheel,并且steering hinge的joint type是revolute,wheel的joint type是continuous,傳感器的joint type是fixed。如下圖所示:
至此URDF Exporter界面已經(jīng)配置完畢,點(diǎn)擊“Preview and Export”選項(xiàng),會(huì)出現(xiàn)一個(gè)新的界面,先配置的是各個(gè)joint,在這里我們需要配置一下兩個(gè)steering hinge joint以及四個(gè)wheel joint的limit參數(shù),如下圖所示:
其他的joint可以不用去配置,接著點(diǎn)擊next進(jìn)入link配置界面:
在此界面無需做太多的配置,慣量參數(shù)可以在后期配置,這里我們通過修改color的參數(shù)來設(shè)置各個(gè)link的顏色。
? ? ? 檢查無誤后點(diǎn)擊“Export URDF and Meshes”。選擇路徑對(duì)導(dǎo)出文件進(jìn)行保存。切記命名的時(shí)候,文件名不能帶有大寫字母和中文,以免出現(xiàn)問題。我們將其命名為“racebot_description”。
小結(jié)
? ? ? 以上便是從solidworks導(dǎo)出阿克曼小車urdf的全部過程。接下去要做的便是將導(dǎo)出的功能包放進(jìn)ubuntu系統(tǒng)并對(duì)其進(jìn)行配置,先做一個(gè)鍵盤控制節(jié)點(diǎn)用Twist消息類型控制小車運(yùn)動(dòng)的實(shí)現(xiàn),敬請(qǐng)期待。
參考資料
1.[ROS學(xué)習(xí)初探之自建小車模型并進(jìn)行仿真(一)]?
https://blog.csdn.net/qq_48427527/article/details/108071749?spm=1001.2014.3001.5501
總結(jié)
以上是生活随笔為你收集整理的教程 | 阿克曼结构移动机器人的gazebo仿真(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐八款好用的项目管理工具
- 下一篇: 四书五经之大学