《機器人自動化:建模、仿真與控製》一一2.4習題
2.4習題
習題21——捕食者獵物係統的向量場
捕食者獵物係統也稱為LotkaVolterra係統,由下式表示:
x·1(t)=(1-x2(t))x1(t)
x·2(t)=(x1(t)-1)x2(t)
狀態變量x1(t)和x2(t)表示捕食者和獵物的數目。例如,x1表示獵物以千計數量,x2表示捕食者以千計數量。即使獵物和捕食者的數目是整數,我們仍假設x1和x2是實數。該狀態方程的二次項表示兩者之間的相互影響。當沒有捕食者時,獵物會以指數形式進行增長。同樣,當沒有獵物時捕食者的數目會減少。
(1)圖24是在網格[0,2]×[0,2]範圍內對應的演化函數的向量場:
f(x)=(1-x2)x1
(x1-1)x2
用這個圖來討論該係統的動力學行為。
(2)也利用該圖,給出平衡點並通過計算進行驗證。
圖24LotkaVolterra係統在(x1, x2)平麵的向量場
圖25狀態向量為x=(x1,x2)T=(θ,θ·)T的單擺
習題22——單擺的向量場
考慮由以下狀態方程描述的單擺:
x·1=x2
x·2=-gsinx1
與演化函數f(x)對應的向量場如圖26所示。
(1)根據圖示,給出平衡狀態的穩定點和不穩定點。
(2)根據歐拉法在圖中畫出單擺的軌跡。
圖26單擺在相平麵(x1,x2)=(θ,θ·)中的向量場
習題23——立方體模式
考慮三維立方體[0,1]×[0,1]×[0,1]。
(1)以矩陣形式給出它的模式。
(2)為了讓它繞著Ox軸旋轉角度θ,如何進行矩陣操作?
習題24——繪製汽車
下麵要設計一個名為voiture_draw(x)的MATLAB函數,用它繪製汽車在狀態x=(x,y,θ,v,δ)T的圖形,其中x, y, θ分別表示汽車的位姿(位置和方向),v表示汽車的速度,而δ是前輪的角度。
1)用齊次坐標定義底盤模式和兩個前輪的共同模式。
2)定義底盤,左前輪和右前輪的變換矩陣。
3)寫出名為car_draw(x)的MATLAB函數,用它繪製出給定狀態x下的小汽車。
習題25——單擺的仿真
考慮由以下差分方程描述的單擺:
θ··=-gsinθl
其中,θ表示單擺的角度,g=981ms-2,l=1m。在時刻t=0對單擺初始化,對應的θ=1且θ·=0rad·s-1,然後放開單擺讓其自由運動。編寫一個基於歐拉法的小程序(用類似MATLAB的語法),計算t=1s時單擺的角度。
習題26——Van der Pol係統
考慮由以下差分方程描述的係統:
y··+(y2-1)y·+y=0
1)選擇狀態向量為x=(yy·)T,給出係統的狀態方程。
2)在平衡點附近對係統線性化,求出係統的極點。該係統在平衡點附近是否穩定?
3)係統在狀態空間(x1, x2)的向量場如圖27所示,係統初始化為x0=(010)T,在圖中畫出係統在狀態空間的路徑x(t),並給出y(t)的形式。
圖27Van der Pol係統的向量場
4)路徑可能是一個環嗎?
5)對該係統進行仿真,選擇歐拉法還是龍格庫塔法可以得到更好的效果,抑或兩者效果相當?
習題27——汽車仿真
考慮由以下狀態方程描述的汽車:
x·
y·
θ·
v·
δ·=vcosδcosθ
vcosδsinθ
vsinδL
u1
u2
給定狀態向量x=(x,y,θ,v,δ)T,汽車初始狀態為x(0)=(00070)T,即在時刻t=0,車輛在原點,方向角為0,速度為7ms-1,且前輪與車軸平行。設控製向量u(t)保持為常量且等於(0 02)T,這意味著車輛不會加速(因為u1=0),同時方向盤以恒定速度02rad·s-1旋轉(因為u2=02)。編寫一個MATLAB程序,要求以001s的采樣步長和歐拉法仿真10s內車輛的動態變化。
習題28——用泰勒法的積分
考慮由下述狀態方程描述的機器人(如坦克):
x·1
x·2
x·3
x·4
x·5=x4cosx3
x4sinx3
x5
u1
u2
試用泰勒法給出二階積分,其輸入為:
u=u1
u2=cos(t)
sin(t)
習題29——三輪車車輪的半徑
考慮如圖28所示三輪車的三維表示,圖中的小黑點在高度為r的同一水平麵上,空心小圈則在高度為0的同一個水平麵上。
圖中用粗線表示的前輪半徑與水平麵之間的夾角為α。給出x, y, θ, δ, α, L, r的函數和在Ox軸上的半徑(粗線)位置與前輪之間的變換矩陣表達式(用齊次坐標),表達式應為矩陣乘法的形式。
習題210——用MATLAB對三輪車進行三維仿真
圖29中三輪車的驅動程序有兩個控製:前輪的加速度及方向盤的旋轉速度。該係統的狀態變量由位置坐標(後橋中心的坐標(x, y)、三輪車的方向角θ以及前輪的角度δ)和前輪中心的速度v組成。從習題111可知,三輪車的演化方程(與汽車類似)為:
其中,L=3為後橋和前輪中心的距離,狀態向量為x=(x, y, θ, v, δ)T,每個後輪與三輪車軸的距離為e=2m,輪子半徑為r=1m。
圖29用於仿真的三輪車機器人
1)建立三輪車車體的模式,用齊次坐標和Rodrigues公式在3維空間對其進行旋轉和平移。
2)創建tricycle_draw函數,參考圖210,畫出帶有輪子的三輪車的三維圖形。這個函數以狀態向量x作為參數。
3)用速度合成法,計算每個輪子的速度。
4)根據三輪車行駛過程中輪子(對應圖中的編號1到3)的旋轉狀態,增加3個狀態變量α1、α2、α3,分別對應三個輪子的角度,給出係統新的狀態方程,並用MATLAB對該係統進行仿真。
習題211——機械臂
圖211所示的機器人操作手由三個機械臂串聯構成。第一個臂長度為3,可繞Oz軸旋轉。第二個臂長度為2,位於第一個臂的末端,也繞Oz軸旋轉。第三個臂長度為1,位於第二個臂的末端,可繞第二個臂的軸旋轉。該機器人有3個自由度x=(α1, α2, α3),其中αi表示每個機械臂的角度。選擇單位立方體來表示每個機械臂的基本模式,假設每個機械臂是一個厚度為03的平行六麵體。為了符合機械臂的形式,其模式必須是類似的,用對角陣來表示。其次,為了獲得正確的位置,它還可以進行旋轉和平移。設計一個MATLAB程序對該係統進行仿真,並具有圖中類似的3D顯示。
圖211由三個機械臂構成的機器人操作手
習題212——用MATLAB對熘冰機器人進行仿真和控製
圖212所示的熘冰車有5隻冰鞋,可在結冰的湖麵上滑動[JAU 10]。該係統有兩個輸入:前冰鞋角度β的正切值u1(為了避免奇異點,選擇正切值作為輸入)和夾角為δ的兩個雪橇結合處的轉矩u2。推力僅僅來源於轉矩u2,它與蛇或鰻魚的推力模式相似[BOY 06]。而對u1的控製並不能給係統任何能量。
圖212熘冰機器人
式中,v是前軸中心的速度。這是一個簡化和歸一化模型,為簡化起見,統一選取單位係數(質量、黏性摩擦、軸間距等)。
2)用歐拉法對係統仿真2s,初始狀態為x=(0, 0, 0, 3, 05)T,采樣周期為dt=005s,輸入為u=(1, 0)T,並對結果進行討論。
3)嚐試用仿生學控製該係統,如重現蛇的推進方式,選取u1為以下形式:
u1=p1cos(p2t)+p3
其中,p1是幅度,p2是脈衝,p3是偏差。選取推進轉矩u2為推動力,即δ··u2≥0,δ··u2對應機器人的能量,它被轉換為動能。對該控製進行編程,並且選擇恰當的參數以保證有效的推進,在你的電腦中再現如圖213的兩種行為。
圖213受控熘冰機器人的仿真
4)增加第二個控製環去控製控製器參數pi,使機器人能夠跟蹤一個期望的航向角θ。
最後更新:2017-08-17 12:02:47