メインコンテンツ

derivative

二輪のビークル モデルの時間微分

R2021b 以降

説明

stateDot = derivative(kinematicModel,state,cmds) は、二輪の運動学的ビークル運動モデル kinematicModel について、現在の状態微分 stateDot を 3 要素ベクトル [xDot yDot thetaDot] として返します。xDot および yDot はメートル/秒単位で指定されるビークルの速度を参照します。thetaDot はラジアン/秒単位で指定されるビークルの向きの角速度です。

すべて折りたたむ

ロボットを作成し、初期の開始位置および向きを設定します。

kinematicModel = bicycleKinematics;
initialState = [0 0 0];

シミュレーションの時間範囲を 0.05 秒のタイム ステップで 1 秒に設定し、入力コマンドでビークル速度を 2 m/s、ステアリング角度を pi/4 ラジアンに設定して、左折を作成します。ode45ソルバーを関数 derivative で使用することにより、ロボットの動作をシミュレートします。

tspan = 0:0.05:1;
inputs = [2 pi/4]; %Turn left
[t,y] = ode45(@(t,y)derivative(kinematicModel,y,inputs),tspan,initialState);

パスをプロットします。

figure
plot(y(:,1),y(:,2))

Figure contains an axes object. The axes object contains an object of type line.

入力引数

すべて折りたたむ

二輪の運動学的運動モデル。bicycleKinematics オブジェクトとして指定します。

現在のビークルの状態。[x y theta] 形式の 3 要素ベクトルとして返されます。

x および y はメートル/秒単位で指定されるビークルの位置を参照します。theta はラジアン/秒単位で指定されるビークルの向きです。

運動モデルへの入力コマンド。2 要素ベクトルとして指定します。motionModelVehicleInputs プロパティの値によって、このコマンド ベクトルの形式が決まります。bicycleKinematics オブジェクトの有効な VehicleInputs の値は次のとおりです。

  • "VehicleSpeedSteeringAngle" –– [v psiDot]

  • "VehicleSpeedHeadingRate" –– [v omegaDot]

v はメートル/秒単位の運動方向のビークル速度です。psiDot はラジアン/秒単位のステアリング角速度です。omegaDot は後車軸の角速度です。

出力引数

すべて折りたたむ

現在の状態の微分。[xDot yDot thetaDot] 形式の 3 要素ベクトルとして返されます。xDot および yDot はメートル/秒単位で返されるビークルの速度を参照します。thetaDot はラジアン/秒単位で返されるビークルの向きの角速度です。

参照

[1] Lynch, Kevin M., and Frank C. Park. Modern Robotics: Mechanics, Planning, and Control. 1st ed. Cambridge, MA: Cambridge University Press, 2017.

拡張機能

すべて展開する

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2021b で導入