導(dǎo)跟隨與環(huán)繞運(yùn)動(dòng):多智能體協(xié)同控制實(shí)戰(zhàn)解析)
簡介針對(duì)多智能體領(lǐng)導(dǎo)跟隨環(huán)繞運(yùn)動(dòng)這一典型協(xié)同控制場景這份資源提供了完整的MATLAB仿真與演示資料適合學(xué)習(xí)多智能體協(xié)同控制、機(jī)器人編隊(duì)及避障算法的研究人員、研究生或競賽團(tuán)隊(duì)。包內(nèi)共33個(gè)文件涵蓋16個(gè)m源碼腳本如領(lǐng)導(dǎo)者-跟隨者控制、圓形軌跡生成、避障算法等、8個(gè)mp4仿真視頻、4個(gè)docx算法說明與作業(yè)文檔、4個(gè)gif動(dòng)態(tài)效果圖及1張截圖壓縮包大小約31.38MB便于離線學(xué)習(xí)與復(fù)現(xiàn)。目前已有103人學(xué)習(xí)下載。通過學(xué)習(xí)可掌握領(lǐng)導(dǎo)跟隨角色定義、分布式控制、路徑規(guī)劃與動(dòng)態(tài)避障等關(guān)鍵實(shí)現(xiàn)思路配套視頻與文檔能直觀對(duì)照仿真結(jié)果與代碼邏輯節(jié)省從理論到實(shí)踐的摸索時(shí)間。 開篇直接聊點(diǎn)實(shí)在的多智能體協(xié)同控制這幾年已經(jīng)不只是PPT里的概念了巡檢編隊(duì)、無人機(jī)燈光秀、倉儲(chǔ)機(jī)器人調(diào)度、甚至無人艇護(hù)航本質(zhì)上都在做同一件事——讓一群個(gè)體按統(tǒng)一意圖動(dòng)起來。而在這些任務(wù)里“領(lǐng)導(dǎo)跟隨Leader-Follower”加“環(huán)繞運(yùn)動(dòng)”又是一個(gè)特別經(jīng)典又特別出效果的組合。領(lǐng)導(dǎo)負(fù)責(zé)帶節(jié)奏規(guī)劃參考軌跡跟隨者保持特定編隊(duì)構(gòu)型圍繞某個(gè)目標(biāo)點(diǎn)或圍繞領(lǐng)導(dǎo)者持續(xù)運(yùn)動(dòng)。這個(gè)模式既能體現(xiàn)集群的靈活性又能考核系統(tǒng)在動(dòng)態(tài)約束下的穩(wěn)定性、一致性和避碰能力非常適合做算法驗(yàn)證和實(shí)際部署的起點(diǎn)。這篇文章我會(huì)從整個(gè)任務(wù)的拆解思路講起一路講到控制律設(shè)計(jì)、仿真環(huán)境搭建、參數(shù)整定和典型坑位盡量讓拿到這個(gè)項(xiàng)目標(biāo)題的人從零開始也能跑通自己的多智能體領(lǐng)導(dǎo)跟隨環(huán)繞系統(tǒng)。1. 項(xiàng)目思路拆解領(lǐng)導(dǎo)跟隨和環(huán)繞運(yùn)動(dòng)到底在解決什么問題1.1 任務(wù)需求解析不是所有“跟著走”都叫領(lǐng)導(dǎo)跟隨先說概念?!邦I(lǐng)導(dǎo)跟隨”聽起來像是老司機(jī)帶路后面的車跟著就行但在多智能體系統(tǒng)里這件事遠(yuǎn)沒這么簡單。領(lǐng)導(dǎo)跟隨包含兩層意思一是狀態(tài)一致性所有智能體的位置、速度、朝向最終要收斂到一條共同軌跡的鄰域內(nèi)二是角色不對(duì)稱性領(lǐng)導(dǎo)者可以獨(dú)立規(guī)劃參考軌跡或者接收外部指令跟隨者無權(quán)改變隊(duì)形結(jié)構(gòu)只能通過局部感知和通信去跟蹤相對(duì)位置關(guān)系。在環(huán)繞運(yùn)動(dòng)這個(gè)具體任務(wù)里通常有兩種理解方式。第一種是以領(lǐng)導(dǎo)者為中心所有跟隨者圍繞它做圓周運(yùn)動(dòng)比如保護(hù)型編隊(duì)、天線指向保持等任務(wù)。第二種是整個(gè)編隊(duì)圍繞某個(gè)外部目標(biāo)點(diǎn)做環(huán)繞領(lǐng)導(dǎo)者自身也在這條圓周軌跡上跟隨者在環(huán)繞的同時(shí)還要兼顧與領(lǐng)導(dǎo)者的編隊(duì)約束比如無人機(jī)群圍繞某個(gè)建筑物持續(xù)盤旋偵查。這兩種場景的差異會(huì)直接影響控制解算前一種只關(guān)心跟隨者與領(lǐng)導(dǎo)者的相對(duì)角度、相對(duì)距離后一種必須把“目標(biāo)點(diǎn)-全局坐標(biāo)”的幾何關(guān)系引入到每個(gè)智能體的參考軌跡里。1.2 為什么選擇環(huán)繞運(yùn)動(dòng)作為驗(yàn)證場景環(huán)繞運(yùn)動(dòng)之所以被反復(fù)作為多智能體算法的測試場景是因?yàn)樗瑫r(shí)包含定值調(diào)節(jié)、軌跡跟蹤和協(xié)調(diào)約束三類控制問題。普通的點(diǎn)到點(diǎn)運(yùn)動(dòng)每個(gè)智能體獨(dú)立跑一個(gè)PID就能完成并不體現(xiàn)協(xié)同。而環(huán)繞運(yùn)動(dòng)強(qiáng)行把每個(gè)智能體的期望位置綁定到一條閉合幾何曲線上每個(gè)智能體既要跟蹤自己的參考點(diǎn)又要考慮與相鄰個(gè)體的空間間隔、角速度匹配甚至通信拓?fù)渥兓@就直接把問題拉到了分布式協(xié)同控制層面。另外環(huán)繞運(yùn)動(dòng)天然具備周期性持續(xù)動(dòng)態(tài)變化非常適合驗(yàn)證算法在長時(shí)間運(yùn)行中的數(shù)值穩(wěn)定性和能量耗散情況。你在仿真里跑一個(gè)點(diǎn)到點(diǎn)任務(wù)可能幾秒就收斂了但環(huán)繞運(yùn)動(dòng)會(huì)要求系統(tǒng)持續(xù)運(yùn)行、持續(xù)修正、持續(xù)抗擾動(dòng)很多在靜態(tài)任務(wù)里發(fā)現(xiàn)不了的問題在這里都會(huì)暴露。1.3 多智能體系統(tǒng)核心架構(gòu)在這個(gè)項(xiàng)目里的體現(xiàn)實(shí)際開發(fā)環(huán)繞運(yùn)動(dòng)算法時(shí)不光是寫一個(gè)控制函數(shù)那么簡單。一個(gè)能真正運(yùn)行的多智能體系統(tǒng)通常包含決策層、通信層、狀態(tài)估計(jì)層和執(zhí)行層。決策層負(fù)責(zé)語義級(jí)別的任務(wù)分配比如“誰當(dāng)領(lǐng)導(dǎo)者”“各個(gè)跟隨者初始相位怎么排”通信層處理智能體之間的數(shù)據(jù)交換格式、頻率和網(wǎng)絡(luò)時(shí)延狀態(tài)估計(jì)層解決“我感知到的領(lǐng)導(dǎo)者在哪”的問題執(zhí)行層才輪到我們的核心控制律去算線速度和角速度指令。在這套架構(gòu)下領(lǐng)導(dǎo)跟隨環(huán)繞運(yùn)動(dòng)算法的重點(diǎn)會(huì)落到狀態(tài)估計(jì)和控制律兩個(gè)環(huán)節(jié)但如果你從頭搭建整個(gè)系統(tǒng)通信協(xié)議和仿真同步機(jī)制同樣重要。很多人算法寫得沒問題一上實(shí)物就崩多半是層的邊界沒劃清楚底層控制周期和通信周期混在一起狀態(tài)數(shù)據(jù)還沒更新完就已經(jīng)開始算控制器輸出了。2. 控制模型設(shè)計(jì)與算法選型關(guān)鍵數(shù)學(xué)細(xì)節(jié)和取舍2.1 運(yùn)動(dòng)學(xué)模型一階模型還是二階模型設(shè)計(jì)環(huán)繞控制律前先得選運(yùn)動(dòng)學(xué)模型。常見的做法有兩種一是直接使用單積分器模型即認(rèn)為智能體的速度指令可以直接等于期望速度二是使用unicycle模型也就是帶朝向約束的兩輪差速模型這是輪式機(jī)器人和大多數(shù)地面無人車的基礎(chǔ)模型。單積分器模型在仿真驗(yàn)證里很方便代碼簡潔收斂性分析也容易寫清楚適合快速驗(yàn)證算法結(jié)構(gòu)是否合理。但如果項(xiàng)目最終要轉(zhuǎn)實(shí)物單積分器模型會(huì)對(duì)執(zhí)行器提出不切實(shí)際的要求它假設(shè)機(jī)器人可以瞬間改變速度方向這在輪式機(jī)器人里基本做不到。因此如果這個(gè)項(xiàng)目最終要落地到差分驅(qū)動(dòng)機(jī)器人或四輪小車建議直接上unicycle模型用線速度和角速度作為控制輸入在控制器設(shè)計(jì)時(shí)就把運(yùn)動(dòng)學(xué)約束考慮進(jìn)去。2.2 相對(duì)位置誤差與控制律設(shè)計(jì)不考慮具體是哪種模型核心控制邏輯萬變不離其宗定義跟隨者與期望位置之間的誤差設(shè)計(jì)反饋控制律讓誤差收斂到零。設(shè)定一個(gè)典型場景領(lǐng)導(dǎo)者Leader圍繞目標(biāo)點(diǎn)做勻速圓周運(yùn)動(dòng)角速度為ω半徑為R0。跟隨者Follower的目標(biāo)是保持相對(duì)領(lǐng)導(dǎo)者一個(gè)固定的徑向距離d和相位角φ同時(shí)整體跟隨環(huán)繞運(yùn)動(dòng)。這時(shí)跟隨者的期望速度由兩部分構(gòu)成前饋速度領(lǐng)導(dǎo)者自身的運(yùn)動(dòng)速度以及反饋修正項(xiàng)補(bǔ)償兩者的位置誤差。寫成向量形式就是期望位置 領(lǐng)導(dǎo)者位置 旋轉(zhuǎn)矩陣(φ) * [d, 0]^T位置誤差 當(dāng)前實(shí)際位置 - 期望位置控制量 領(lǐng)導(dǎo)者速度 比例增益 * 位置誤差這里的比例增益需要根據(jù)系統(tǒng)響應(yīng)速度來整定。增益太小跟隨者會(huì)“拖尾”軌跡滯后嚴(yán)重增益太大會(huì)產(chǎn)生振蕩在物理機(jī)器人上還會(huì)導(dǎo)致執(zhí)行器飽和。如果希望跟隨者之間也保持均勻角度間隔比如4個(gè)跟隨者等間隔分布在圓周上那每個(gè)跟隨者的參考角度可以再疊加一個(gè)協(xié)同補(bǔ)償項(xiàng)這個(gè)補(bǔ)償項(xiàng)用相鄰智能體之間相位差來決定。常見做法是結(jié)合一致性算法將所有跟隨者的相位角平均值作為參考調(diào)整各自相位收斂到均勻分布狀態(tài)。2.3 參數(shù)計(jì)算實(shí)例一個(gè)可直接代入的示例為了讓算法不只是停留在公式里我給出一個(gè)具體的參數(shù)配置示例。設(shè)定領(lǐng)導(dǎo)者沿半徑R02.0m的圓周運(yùn)動(dòng)角速度ω0.3rad/s線速度約0.6m/s。跟隨者與領(lǐng)導(dǎo)者的期望徑向距離d1.0m期望相位角為π/4。領(lǐng)導(dǎo)者位置x_l(t) 2.0 * cos(0.3t)y_l(t) 2.0 * sin(0.3t)領(lǐng)導(dǎo)者速度vx_l(t) -0.6 * sin(0.3t)vy_l(t) 0.6 * cos(0.3t)跟隨者期望位置x_d x_l 1.0 * cos(atan2(y_l, x_l) π/4)y_d類似這是最核心的幾何解算??刂坡蓪懗纱a就三五行難的不是公式而是你先得搞清楚該參考哪個(gè)坐標(biāo)系。很多第一次寫環(huán)繞控制的同學(xué)直接把期望位置設(shè)在全局坐標(biāo)系原點(diǎn)附近一大塊區(qū)域里結(jié)果跟隨者全飛到圈子外面去了。正確思路是每一次控制循環(huán)都先用當(dāng)前領(lǐng)導(dǎo)者的位置和角度重新計(jì)算期望位置再更新控制量。3. 仿真環(huán)境搭建與實(shí)操步驟從零跑通領(lǐng)導(dǎo)跟隨環(huán)繞3.1 工具選型為什么建議用Python或者M(jìn)ATLAB做原型驗(yàn)證多智能體環(huán)繞控制的驗(yàn)證工具有很多種常見的有MATLAB/Simulink、Python配合NumPy/SciPy、ROS/Gazebo以及各種機(jī)器人仿真平臺(tái)。對(duì)于這個(gè)項(xiàng)目我個(gè)人的建議是前期用Python做快速原型中期如果涉及復(fù)雜傳感器建模再遷到仿真平臺(tái)。原因很簡單領(lǐng)導(dǎo)跟隨環(huán)繞運(yùn)動(dòng)的核心是控制器設(shè)計(jì)而不是物理引擎精度。在Python里寫一個(gè)基于單積分器或unicycle模型的仿真循環(huán)代碼量少、調(diào)試方便、可視化自由度高十分鐘就能看到算法效果。等你把核心控制律驗(yàn)證穩(wěn)定了再往仿真平臺(tái)遷移那時(shí)你只需要替換底層的“狀態(tài)更新”接口控制律本身可以原封不動(dòng)搬過去。如果一定要用ROS生態(tài)推薦用stage或gazebo配合TurtleBot模型但要注意把仿真步長和通信頻率調(diào)好避免因?yàn)槲锢硪娴臄?shù)值誤差掩蓋算法本身的性能。3.2 完整仿真流程框架設(shè)計(jì)一個(gè)完整的領(lǐng)導(dǎo)跟隨環(huán)繞仿真流程我的習(xí)慣是分成以下幾步初始化生成智能體的位置、速度、編號(hào)設(shè)定領(lǐng)導(dǎo)者軌跡參數(shù)分配跟隨者的初始相位角。狀態(tài)更新領(lǐng)導(dǎo)者基于預(yù)設(shè)軌跡更新位置和速度跟隨者讀取領(lǐng)導(dǎo)者狀態(tài)仿真里可以假設(shè)理想通信實(shí)物則要考慮感知延遲??刂坡捎?jì)算每個(gè)跟隨者按照第2節(jié)的設(shè)計(jì)計(jì)算控制指令更新自己的線速度和角速度。碰撞規(guī)避檢查智能體之間距離距離小于安全閾值時(shí)觸發(fā)避碰邏輯簡單做法是沿連線方向附加斥力項(xiàng)。數(shù)據(jù)記錄與指標(biāo)計(jì)算記錄軌跡、控制誤差、收斂時(shí)間、能量消耗等數(shù)據(jù)??梢暬c導(dǎo)出將軌跡繪制出來輸出每個(gè)時(shí)刻的位置誤差。3.3 核心代碼結(jié)構(gòu)演示以Python為例核心循環(huán)的大致結(jié)構(gòu)如下我寫的是簡化邏輯方便理解整體流程import numpy as np import matplotlib.pyplot as plt dt 0.01 T 30.0 t np.arange(0, T, dt) leader_pos np.zeros((len(t), 2)) leader_vel np.zeros((len(t), 2)) for i, time in enumerate(t): leader_pos[i, 0] 2.0 * np.cos(0.3 * time) leader_pos[i, 1] 2.0 * np.sin(0.3 * time) leader_vel[i, 0] -0.6 * np.sin(0.3 * time) leader_vel[i, 1] 0.6 * np.cos(0.3 * time)這段代碼生成了領(lǐng)導(dǎo)者的圓形軌跡和速度。接下來定義跟隨者初始位置和控制函數(shù)follower_pos np.array([[1.0, 0.0], [-0.5, 1.0], [0.5, -1.0], [-1.0, -0.5]], dtypefloat) Kp 1.5 for step in range(len(t) - 1): for i in range(follower_pos.shape[0]): # 期望位置領(lǐng)導(dǎo)者位置加上d距離和phase偏移 phase np.pi / 2 * i np.pi / 4 theta np.arctan2(leader_pos[step, 1], leader_pos[step, 0]) phase desired leader_pos[step] np.array([np.cos(theta), np.sin(theta)]) * 0.8 # 控制量領(lǐng)導(dǎo)者速度 位置誤差修正 error desired - follower_pos[i] vel_cmd leader_vel[step] Kp * error follower_pos[i] vel_cmd * dt這里我用了單積分器模型做演示所以控制量直接加到位置上。如果換成unicycle模型會(huì)在控制律里多一步從期望速度向量到期望朝向角的轉(zhuǎn)換再算角速度誤差。3.4 可視化檢查要點(diǎn)和驗(yàn)證標(biāo)準(zhǔn)跑完仿真后別看個(gè)動(dòng)畫覺得“哎還行”就結(jié)束了需要定量驗(yàn)證。至少要看這幾個(gè)指標(biāo)位置誤差穩(wěn)態(tài)值跟隨者實(shí)際位置與期望位置之間的距離誤差穩(wěn)態(tài)時(shí)應(yīng)該在0.05m以內(nèi)不然說明控制器增益不足或軌跡追蹤性能差。相位收斂性多個(gè)跟隨者之間的角度差是否按預(yù)設(shè)均勻分布收斂這個(gè)是判斷協(xié)同一致性是否起作用的關(guān)鍵指標(biāo)。避碰觸發(fā)情況智能體之間的最小距離是否大于安全閾值如果小于閾值要檢查初始相位設(shè)計(jì)是否不合理。暫態(tài)超調(diào)啟動(dòng)階段的誤差峰值有多大如果超過系統(tǒng)約束說明Kp太大或者初始速度不匹配。4. 常見問題與排查實(shí)錄那些別人不會(huì)寫在論文里的坑4.1 問題一跟隨者軌跡“螺旋發(fā)散”或“反復(fù)震蕩”這是我做這個(gè)項(xiàng)目時(shí)踩過最大的坑。現(xiàn)象是跟隨者在初始階段還能跟上軌跡但逐漸地要么離領(lǐng)導(dǎo)者越來越遠(yuǎn)要么在一個(gè)半徑附近來回震蕩。排查后發(fā)現(xiàn)核心原因是期望位置的計(jì)算使用了全局固定相位角但領(lǐng)導(dǎo)者在圓周上不同位置時(shí)相位偏移的方向解釋是不一樣的。解決辦法是把相位偏移放到領(lǐng)導(dǎo)者的運(yùn)動(dòng)方向上計(jì)算用領(lǐng)導(dǎo)者的速度方向角作為參考坐標(biāo)系而不是全局坐標(biāo)的固定角度。這樣無論領(lǐng)導(dǎo)者運(yùn)動(dòng)到哪里相位偏移都是相對(duì)于運(yùn)動(dòng)方向的符合“環(huán)繞”的語義。錯(cuò)誤方式正確方式相位角基于全局坐標(biāo)系固定值相位角基于領(lǐng)導(dǎo)者速度方向動(dòng)態(tài)計(jì)算期望位置計(jì)算一次不再更新每個(gè)控制周期都重新計(jì)算期望位置控制量只做位置跟蹤忽略速度前饋控制量包含前饋速度加反饋修正4.2 問題二通信延遲導(dǎo)致編隊(duì)“抖動(dòng)”仿真里我們默認(rèn)領(lǐng)導(dǎo)者狀態(tài)瞬間到達(dá)所有跟隨者。但實(shí)際系統(tǒng)尤其是無線通信場景一定有延遲。延遲會(huì)直接破壞控制系統(tǒng)的相位裕度導(dǎo)致跟隨者不斷在目標(biāo)位置附近抖動(dòng)。我在項(xiàng)目中加入了一個(gè)簡單的延遲模擬領(lǐng)導(dǎo)者的狀態(tài)不是當(dāng)期時(shí)刻的值而是滯后N步的數(shù)據(jù)用于控制計(jì)算。結(jié)果非常直觀地看到跟隨者開始抖動(dòng)。解決辦法有兩個(gè)一是減小控制增益降低系統(tǒng)響應(yīng)速度以換取穩(wěn)定性二是引入狀態(tài)預(yù)測用前幾步的領(lǐng)導(dǎo)者軌跡數(shù)據(jù)外推當(dāng)前時(shí)刻的估計(jì)值抵消延遲影響。物理機(jī)器人上更實(shí)用的做法是保持通信高頻、控制中頻讓控制周期小于通信周期而不是反過來。4.3 問題三多跟隨者之間的避碰失效題目里如果只寫了“領(lǐng)導(dǎo)跟隨環(huán)繞”沒有單獨(dú)提避碰很容易忽略這一層。等實(shí)際跟隨者數(shù)量增加到3個(gè)以上初始相位又設(shè)計(jì)得不合理時(shí)跟隨者之間會(huì)在啟動(dòng)階段相互穿越。我一開始也吃了這個(gè)虧后來在控制量上加了簡單的排斥項(xiàng)才解決。斥力項(xiàng)的計(jì)算思路不復(fù)雜兩個(gè)智能體距離小于安全半徑時(shí)沿著二者連線方向施加一個(gè)與距離成反比的排斥速度。但這會(huì)與主控制環(huán)的目標(biāo)跟蹤產(chǎn)生沖突所以需要設(shè)計(jì)優(yōu)先級(jí)通常把避碰做成“硬約束”距離小于安全半徑時(shí)強(qiáng)行覆蓋速度指令距離在安全閾值之外時(shí)正常執(zhí)行跟蹤控制。5. 從仿真到實(shí)物我的一些實(shí)操心法和擴(kuò)展思路5.1 關(guān)于參數(shù)整定的個(gè)人經(jīng)驗(yàn)環(huán)繞控制這個(gè)場景和一般軌跡跟蹤不太一樣它的核心參數(shù)是角速度匹配能力。跟隨者不僅要追位置還要在圓周上保持和領(lǐng)導(dǎo)者差不多的角速度不然會(huì)一直在“追趕-超調(diào)-再追趕”的循環(huán)里。因此控制律里如果只有位置比例項(xiàng)很難達(dá)到理想效果。我建議在反饋控制里額外增加一個(gè)速度匹配項(xiàng)把領(lǐng)導(dǎo)者的速度向量和跟隨者的速度向量差作為反饋量乘以一個(gè)較小的增益疊加到控制指令上。這樣做的好處是讓跟隨者在跟蹤位置的同時(shí)優(yōu)先去逼近領(lǐng)導(dǎo)者的運(yùn)動(dòng)狀態(tài)相當(dāng)于一個(gè)阻尼項(xiàng)能顯著抑制超調(diào)。這個(gè)思路和串級(jí)控制有點(diǎn)類似外環(huán)管位置收斂內(nèi)環(huán)管速度匹配。5.2 算法擴(kuò)展方向領(lǐng)導(dǎo)跟隨環(huán)繞運(yùn)動(dòng)做到穩(wěn)定運(yùn)行之后可選的擴(kuò)展方向其實(shí)很多。常見的有動(dòng)態(tài)拓?fù)渚庩?duì)切換智能體在跟隨者和領(lǐng)導(dǎo)者角色間切換、障礙物環(huán)境下的環(huán)繞與避障耦合、以及分布式估計(jì)下的領(lǐng)導(dǎo)者狀態(tài)估計(jì)領(lǐng)導(dǎo)者的軌跡只對(duì)部分跟隨者可見。這些方向都會(huì)讓項(xiàng)目從單一控制算法向系統(tǒng)架構(gòu)層面提升簡歷和論文里也更有價(jià)值。5.3 最后再分享一個(gè)小技巧仿真中如果想讓跟隨者之間的間距更均勻可以在初始相位設(shè)置上做文章但更優(yōu)雅的做法是加入一個(gè)相位一致性調(diào)節(jié)項(xiàng)讓每個(gè)跟隨者根據(jù)前后鄰居的相位差去調(diào)整自己的期望相位角。這個(gè)調(diào)節(jié)項(xiàng)在數(shù)學(xué)上類似于圖拉普拉斯矩陣的作用它會(huì)迫使所有相位差距收斂到預(yù)設(shè)目標(biāo)實(shí)際實(shí)現(xiàn)起來也就多寫幾行向量乘法的代碼但效果提升非常明顯。如果你在這個(gè)項(xiàng)目上卡了很久我強(qiáng)烈建議先從仿真環(huán)境跑通、從單跟隨者做起確認(rèn)跟蹤誤差收斂了再加編隊(duì)約束。別一上來就做多跟隨者那樣出了問題連定位錯(cuò)誤都費(fèi)勁。等單機(jī)環(huán)繞跟蹤穩(wěn)定了剩下的協(xié)同問題只是錦上添花。本文還有配套的精品資源點(diǎn)擊獲取