0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

純跟蹤算法用于無人車自動(dòng)泊車

新機(jī)器視覺 ? 來源:CSDN ? 2023-01-05 15:29 ? 次閱讀

	

目的

使用簡單的“純跟蹤算法”實(shí)現(xiàn)無人車自動(dòng)泊車或者位姿調(diào)整。在泊車或者工業(yè)場景,如果空間不夠,那么車輛經(jīng)常需要做一些大角度的轉(zhuǎn)向或者倒車,例如叉車。

這些場景與一般的道路行駛場景可能有所區(qū)別,道路行駛一般只考慮前進(jìn)方向的高速行駛,并且轉(zhuǎn)向曲率不會太大。泊車場景恰好相反,曲率大、速度慢,而且伴隨行駛方向的變化。

道路行駛下的跟蹤已經(jīng)被研究的比較深入了,那么道路行駛使用的跟蹤算法還適用于倒車場景嗎?本文我們來研究一下這個(gè)問題。

c58d945a-8cc9-11ed-bfe3-dac502259ad0.gif

c5f85ef2-8cc9-11ed-bfe3-dac502259ad0.gif

Reeds-Sheep曲線

假設(shè)無人車的運(yùn)動(dòng)路徑是已知的,筆者使用 https://github.com/hbanzhaf/steering_functions 中提出的曲率連續(xù)的改進(jìn)Reeds-Sheep曲線生成路徑。

程序輸出的路徑是一系列離散的點(diǎn),點(diǎn)之間的距離可以自定義,筆者選擇每5毫米一個(gè)點(diǎn),程序中設(shè)置DISCRETIZATION=0.005。

路徑采用nav_msgs::Path消息發(fā)出。

純跟蹤算法

純跟蹤算法(Pure Pursuit)首先要指定一個(gè)被跟蹤的目標(biāo)點(diǎn)。

原始版本的純跟蹤算法只討論了跟蹤無人車前方的點(diǎn),對于Reeds-Sheep曲線這種包含運(yùn)動(dòng)方向變化的曲線,無人車既需要前進(jìn)也需要后退,但是想實(shí)現(xiàn)后退也非常簡單。

筆者將被跟蹤的目標(biāo)點(diǎn)稱為局部目標(biāo)(local goal)無人車真正最終的靜態(tài)目標(biāo)點(diǎn)則稱為全局目標(biāo)(global goal)。

純跟蹤需要無人車的定位,仿真時(shí)假設(shè)這個(gè)定位信息ROS中的/base_pose_ground_truth消息給出。局部目標(biāo)的計(jì)算方式是,遍歷路徑,找到第一個(gè)離無人車≥ d l 的路徑點(diǎn)。

d l 就是前視距離,d l 越小跟蹤精度越高,但是越容易導(dǎo)致震蕩。機(jī)器人在運(yùn)動(dòng)時(shí),這個(gè)局部目標(biāo)也會更新。

如果找到的局部目標(biāo)落在了無人車的后方,此時(shí)意味著無人車需要后退,只需要將速度取負(fù)值即可,前輪轉(zhuǎn)角不用變。

出現(xiàn)的問題

1.轉(zhuǎn)折點(diǎn)

在仿真時(shí)出現(xiàn)了一些問題。首先,最困難的是對于尖點(diǎn)(cusp)怎么處理。因?yàn)楹芏嗲闆r下,Reeds-Sheep曲線都包含尖點(diǎn),在尖點(diǎn)處車輛會改變運(yùn)動(dòng)方向。

如果使用純跟蹤算法跟蹤這個(gè)路徑,那么在尖點(diǎn)處會出現(xiàn)一個(gè)問題。因?yàn)榧兏櫵惴傄付ㄒ粋€(gè)跟蹤點(diǎn),這個(gè)跟蹤點(diǎn)一般在車輛前方或者后方一定距離(d l )處。

在向尖點(diǎn)運(yùn)動(dòng)時(shí),車輛不會正好處于尖點(diǎn)上,而是提前離開。下圖中的d l = 0.2后面也采用這一數(shù)值。

圖中的黃點(diǎn)是被跟蹤的局部目標(biāo),紅色點(diǎn)表示無人車后輪軸中心處的實(shí)時(shí)位置。

c62a08f8-8cc9-11ed-bfe3-dac502259ad0.png

這就導(dǎo)致車輛沒有完全位于路徑上,進(jìn)而導(dǎo)致后面的跟蹤出現(xiàn)橫向偏差(如下圖所示),即使采用曲率連續(xù)的Reeds-Sheep曲線版本也沒有用。

c63d0d5e-8cc9-11ed-bfe3-dac502259ad0.png

這是純跟蹤算法本身的問題嗎?不是,純跟蹤算法完全可以跟得上,我們?yōu)榱税踩ǔ0演敵鼋嵌冉o限幅了,如果解除限幅你就會發(fā)現(xiàn)純跟蹤算法完全可以準(zhǔn)確的跟蹤。

但是實(shí)際使用時(shí)我們又不可能解除限幅,所以怎么解決這個(gè)問題呢?

一種是直接增大一點(diǎn)Reeds-Sheep曲線的最小轉(zhuǎn)向半徑,令其略大于車輛的真實(shí)最小轉(zhuǎn)向半徑,筆者嘗試增加了約10%,跟蹤情況如下圖。

另一種方法是增加尖點(diǎn)(cusp)部分的長度,這可以通過改變主程序(steering_functions_node.cpp)中的sigma_max_變量實(shí)現(xiàn),sigma_max_越小,過渡部分越長,最好大于d l 試驗(yàn)發(fā)現(xiàn)取sigma_max_=0.5左右就可以。

c6605dae-8cc9-11ed-bfe3-dac502259ad0.png

控制指令如下圖所示。

c677c1ba-8cc9-11ed-bfe3-dac502259ad0.jpg

速度單獨(dú)進(jìn)行規(guī)劃,然后疊加到路徑上,如下圖所示。

c68636fa-8cc9-11ed-bfe3-dac502259ad0.png

c69db97e-8cc9-11ed-bfe3-dac502259ad0.gif

c6b5e92c-8cc9-11ed-bfe3-dac502259ad0.jpg

2.定位誤差

前面的控制都假設(shè)定位是完美的,不存在定位誤差。如果加入定位誤差,純跟蹤算法的表現(xiàn)會怎么樣呢?

我們用隨機(jī)數(shù)來模擬定位誤差,定位誤差一般是正太分布的,因此用正態(tài)分布函數(shù)std::normal_distribution生成隨機(jī)數(shù),均值總是取0,標(biāo)準(zhǔn)差決定了誤差的范圍。

首先取小的標(biāo)準(zhǔn)差—— 1mm,無人車的表現(xiàn)如下圖所示,無人車的跟蹤效果比較好。

c6c589cc-8cc9-11ed-bfe3-dac502259ad0.png

但是前輪轉(zhuǎn)角的變化卻非常劇烈,如下圖所示。這還僅僅是1mm左右的誤差,這在實(shí)際中是幾乎不可能達(dá)到的。

c6e30466-8cc9-11ed-bfe3-dac502259ad0.png

標(biāo)準(zhǔn)差為1cm時(shí)的表現(xiàn)如下圖所示,已經(jīng)產(chǎn)生了明顯的橫向跟蹤偏差。

c6ff45f4-8cc9-11ed-bfe3-dac502259ad0.png

此時(shí)前輪轉(zhuǎn)角已經(jīng)慘不忍睹了,如下圖所示,這還是1cm左右的誤差,實(shí)際中無人車的定位要達(dá)到1cm也是很困難的。

c72033ae-8cc9-11ed-bfe3-dac502259ad0.png

標(biāo)準(zhǔn)差為5cm時(shí)的表現(xiàn)如下圖所示,這個(gè)誤差是一般室外衛(wèi)星定位的誤差范圍,也就是常見的誤差,此時(shí)無人車徹底無法跟蹤。

c731056c-8cc9-11ed-bfe3-dac502259ad0.png

不僅前輪轉(zhuǎn)角更瘋狂了,而且由于橫向偏差已經(jīng)超過了前視距離d l ,局部目標(biāo)已經(jīng)出現(xiàn)在無人車側(cè)面了,導(dǎo)致無人車完全無法跟蹤了,如下圖所示。

這說明純跟蹤算法對定位誤差是極其敏感的,在實(shí)際應(yīng)用時(shí)這是個(gè)非常嚴(yán)重的問題。

c74351f4-8cc9-11ed-bfe3-dac502259ad0.png

算法理解

為了易于理解純跟蹤算法,筆者用Mathematica設(shè)計(jì)了一個(gè)小程序,你可以用鼠標(biāo)拖動(dòng)目標(biāo)點(diǎn)(綠色點(diǎn)),并觀察前輪的轉(zhuǎn)角,如下圖。

目標(biāo)點(diǎn)是純跟蹤算法中的核心概念,這個(gè)目標(biāo)點(diǎn)是人為設(shè)計(jì)或者選擇的。跟蹤性能的好壞不僅取決于控制參數(shù)的選擇,目標(biāo)點(diǎn)的選擇也起到重要的作用。

當(dāng)目標(biāo)點(diǎn)選取的不好時(shí),例如距離無人車當(dāng)前位置過近,則會出現(xiàn)控制量劇烈變化。

c752bedc-8cc9-11ed-bfe3-dac502259ad0.gif

你也可以用鼠標(biāo)拖動(dòng)無人車的參考點(diǎn),觀察前輪的轉(zhuǎn)角,如下圖。從圖中可以發(fā)現(xiàn),在距離目標(biāo)比較近時(shí),純跟蹤算法的表現(xiàn)很糟糕,參考點(diǎn)位置有一點(diǎn)點(diǎn)改變都會導(dǎo)致前輪轉(zhuǎn)角劇烈變化。

但是無人車的定位本身是必然存在偏差的,所以純跟蹤算法在前視距離短時(shí)穩(wěn)定性并不好。

c8880c8a-8cc9-11ed-bfe3-dac502259ad0.gif

cuboid[center_: {0, 0}, dim_, radius_: 0] := Rectangle[center - dim/2, center + dim/2, RoundingRadius -> 0.01];
move2D[shape_, pose_] := Translate[Rotate[shape, pose[[3]], {0, 0}], pose[[1 ;; 2]]];
L = 1.64; 
[Delta]max = 25 Degree ;
bicycle[pose_, [Delta]_] := {
  rearWheel = cuboid[{0, 0}, {0.4, 0.1}, 0.1];
  frontWheel = move2D[rearWheel, {L, 0, [Delta]}];
  trunk = cuboid[{L/2, 0}, {L, 0.02}, 0.1];
  move2D[{Blue, frontWheel, rearWheel, Black, trunk, Red, Circle[{L, 0}, 0.22, {0, [Delta]}]}, pose]
  };
Manipulate[
 pose = Flatten@{p, [Theta]};
 dirvec = AngleVector[[Theta]];
 vertvec = {-dirvec[[2]], dirvec[[1]]};
 p1 = p + L*dirvec;
 dl = Norm[goal - p];
 [Alpha] = VectorAngle[goal - p, {1, 0}] - [Theta];
 [Delta] = ArcTan[2*L*Sin[[Alpha]]/dl];
 R = Abs[dl/2/Sin[[Alpha]]];
 c = p + Sign[[Alpha]]*R*vertvec;
 a1 = -VectorAngle[p - c, {1, 0}];
 a2 = -VectorAngle[goal - c, {1, 0}];
 Graphics[{bicycle[pose, [Delta]], Point[c], AbsoluteThickness[1], 
  Line[{p1, p1 + AngleVector[[Theta] + [Delta]]*0.3}], AbsoluteDashing[{6, 3}], Black, Line[{p, p1 + dirvec*0.3}], Gray, Line[{p, c}], Line[{c, goal}], Line[{goal, p}], Line[{c, p1}], Orange, Circle[c, R(*,{a1,a2}*)], AbsolutePointSize[8], White, Point[p], Red, Point[c], Darker@Green, Point[goal], Red, Text[Style[ "[Delta]=" <> ToString@Round[[Delta]*180/Pi, 0.01] <> "[Degree]", FontSize -> 16], p1 + dirvec*0.5], Text["!(*SubscriptBox[(d), (l)])=" <> ToString@Round[dl, 0.01], (p + goal)/2 + {0, 0.1}]}, 
 ImageSize -> 600, PlotRange -> 1.5 {{-1.5, 1.5}, {-0.5, 1.5}}, 
 Axes -> False], {{p, {0, 0}}, Locator, Appearance -> Graphics@Point[{0, 0}]}, {{goal, {0.16, 0.12}}, Locator, Appearance -> Graphics[{Green, Point[{0, 0}]}]}, {{[Theta], Pi/6}, 0, 2 Pi, 0.01}, TrackedSymbols :> True, Initialization :> {goal = {0.16, 0.12}}]

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 跟蹤算法
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

    13000
  • 自動(dòng)泊車
    +關(guān)注

    關(guān)注

    0

    文章

    100

    瀏覽量

    13667
  • 無人車
    +關(guān)注

    關(guān)注

    1

    文章

    299

    瀏覽量

    36446

原文標(biāo)題:純跟蹤算法用于無人車自動(dòng)泊車

文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    自動(dòng)泊車HiL仿真測試介紹#自動(dòng)泊車 #VTHiL

    自動(dòng)泊車
    北匯信息POLELINK
    發(fā)布于 :2024年10月11日 18:29:19

    智駕仿真測試實(shí)戰(zhàn)之自動(dòng)泊車HiL仿真測試

    汽車進(jìn)入智能化時(shí)代,自動(dòng)泊車功能已成為標(biāo)配。在研發(fā)測試階段,實(shí)測試面臨測試場景覆蓋度不足、效率低下和成本高昂等挑戰(zhàn)。為解決這些問題,本文提出一種自動(dòng)
    的頭像 發(fā)表于 10-10 08:05 ?2572次閱讀
    智駕仿真測試實(shí)戰(zhàn)之<b class='flag-5'>自動(dòng)</b><b class='flag-5'>泊車</b>HiL仿真測試

    從小鵬M03自動(dòng)泊車撞上奧迪聊聊智駕現(xiàn)狀

    最近有一位網(wǎng)友在微博上發(fā)文稱,在使用小鵬MONA M03自動(dòng)泊車功能時(shí),撞到了別人的,其中特別強(qiáng)調(diào)了在自動(dòng)泊車過程中,已經(jīng)檢測到了對方車輛
    的頭像 發(fā)表于 09-20 08:59 ?917次閱讀
    從小鵬M03<b class='flag-5'>自動(dòng)</b><b class='flag-5'>泊車</b>撞上奧迪聊聊智駕現(xiàn)狀

    自動(dòng)共振跟蹤的優(yōu)勢

    電子發(fā)燒友網(wǎng)站提供《自動(dòng)共振跟蹤的優(yōu)勢.pdf》資料免費(fèi)下載
    發(fā)表于 09-18 14:28 ?0次下載
    <b class='flag-5'>自動(dòng)</b>共振<b class='flag-5'>跟蹤</b>的優(yōu)勢

    抖動(dòng)跟蹤不丟失 慧視圖像跟蹤板和自研算法強(qiáng)勢升級

    圖像跟蹤板應(yīng)用場景的不斷增加,為了滿足更復(fù)雜場景的需求,目標(biāo)跟蹤算法跟蹤能力也在不斷提升。例如在無人機(jī)領(lǐng)域,圖像
    的頭像 發(fā)表于 09-04 08:05 ?293次閱讀
    抖動(dòng)<b class='flag-5'>跟蹤</b>不丟失 慧視圖像<b class='flag-5'>跟蹤</b>板和自研<b class='flag-5'>算法</b>強(qiáng)勢升級

    宏景智駕自動(dòng)泊車2.0系統(tǒng)征服高難度車位

    隨著自動(dòng)泊車技術(shù)(APA)的進(jìn)步以及裝車成本的降低,該功能已經(jīng)實(shí)現(xiàn)在多種場景下的落地,有效解決了用戶泊車難問題。近年來,各大主機(jī)廠加大對自動(dòng)泊車
    的頭像 發(fā)表于 07-30 15:15 ?562次閱讀

    FPGA在自動(dòng)駕駛領(lǐng)域有哪些應(yīng)用?

    低,適合用于實(shí)現(xiàn)高效的圖像算法,如車道線檢測、交通標(biāo)志識別等。 雷達(dá)和LiDAR處理:自動(dòng)駕駛汽車通常會使用雷達(dá)和LiDAR(激光雷達(dá))等多種傳感器來獲取環(huán)境信息。FPGA能夠協(xié)助完成這些傳感器
    發(fā)表于 07-29 17:09

    超聲波雷達(dá)在APA自動(dòng)泊車功能中的應(yīng)用與仿真

    自動(dòng)泊車輔助系統(tǒng)(APA)是現(xiàn)代汽車智能駕駛技術(shù)的重要組成部分,該系統(tǒng)使得車輛能夠在沒有任何人為干預(yù)的情況下,自動(dòng)完成泊車過程。具體來說,APA系統(tǒng)在
    的頭像 發(fā)表于 07-19 08:25 ?3400次閱讀
    超聲波雷達(dá)在APA<b class='flag-5'>自動(dòng)</b><b class='flag-5'>泊車</b>功能中的應(yīng)用與仿真

    特斯拉全新自動(dòng)泊車功能上線,可平行泊車

     據(jù)Not a Tesla App報(bào)道,此次2024年2月11日的軟件更新新增內(nèi)容包括自動(dòng)泊車以及平行泊車等功能。在行車時(shí),車輛屏幕將標(biāo)示出可用車位,并以紅色P標(biāo)記做特殊提示;同時(shí),駕駛員亦有權(quán)自行選擇其它高亮顯示的車位。
    的頭像 發(fā)表于 03-22 11:16 ?617次閱讀

    自動(dòng)泊車和遙控泊車的區(qū)別

    存在著顯著的差異。本文將比較自動(dòng)泊車和遙控泊車的區(qū)別。 一、自動(dòng)泊車技術(shù) 自動(dòng)
    的頭像 發(fā)表于 01-31 13:43 ?1750次閱讀

    告別停車煩惱:自動(dòng)泊車技術(shù)引領(lǐng)新時(shí)代

    隨著科技的不斷發(fā)展,自動(dòng)駕駛技術(shù)已經(jīng)成為汽車行業(yè)的一個(gè)重要研究方向。其中,自動(dòng)泊車技術(shù)作為自動(dòng)駕駛技術(shù)的一個(gè)重要應(yīng)用場景,受到了廣泛關(guān)注。自動(dòng)
    的頭像 發(fā)表于 01-05 10:02 ?384次閱讀
    告別停車煩惱:<b class='flag-5'>自動(dòng)</b><b class='flag-5'>泊車</b>技術(shù)引領(lǐng)新時(shí)代

    車載控制器顯示屏在電動(dòng)無人駕駛洗掃 新能源環(huán)衛(wèi)車上的應(yīng)用

    在這個(gè)迅速發(fā)展的科技時(shí)代,智能清潔正在開啟全新篇章。近來江蘇悅達(dá)推出了引人矚目的電動(dòng)無人駕駛洗掃。這款車輛不僅是卓越性能的代表,更是智慧和清潔的標(biāo)志。據(jù)了解,這款電動(dòng)
    的頭像 發(fā)表于 12-28 15:44 ?494次閱讀
    車載控制器顯示屏在<b class='flag-5'>純</b>電動(dòng)<b class='flag-5'>無人</b>駕駛洗掃<b class='flag-5'>車</b> 新能源環(huán)衛(wèi)車上的應(yīng)用

    電動(dòng)環(huán)衛(wèi)設(shè)計(jì)實(shí)例

    電動(dòng)環(huán)衛(wèi)作為新能源汽車中的重要部分,大力推進(jìn)該領(lǐng)域不同類型車型的大力發(fā)展,已成為當(dāng)下新能源汽車領(lǐng)域發(fā)展的重要方向。為此,重點(diǎn)對電動(dòng)環(huán)衛(wèi)的市場概況、結(jié)構(gòu)類型及結(jié)構(gòu)組成、近期公告車
    的頭像 發(fā)表于 12-18 17:06 ?1291次閱讀
    <b class='flag-5'>純</b>電動(dòng)環(huán)衛(wèi)<b class='flag-5'>車</b>設(shè)計(jì)實(shí)例

    知語云:低慢小無人機(jī)如何反制管制監(jiān)測行為?方式方法又是什么?

    ,ArtemRozantsev等人采用深度學(xué)習(xí)的方法,實(shí)現(xiàn)了用于無人機(jī)對小視場內(nèi)無人機(jī)的探測等。2018年,Opromolla等等人采用模板匹配、形態(tài)學(xué)濾波器等算法實(shí)現(xiàn)了用
    發(fā)表于 11-20 17:07

    無人駕駛車輛的反饋控制介紹

    及反饋控制等。在這里介紹和補(bǔ)充的是反饋控制部分。 1.2 橫向控制和縱向控制 反饋控制是無人 最底層 的軟件算法模塊,包括: 橫向控制,主要用于車輛方向盤的控制 縱向控制,主要
    的頭像 發(fā)表于 11-15 16:00 ?713次閱讀