Main Content

bicycleKinematics

二輪のビークル モデル

R2019b 以降

説明

bicycleKinematics は、簡略化された乗用車型のビークル運動をシミュレートする二輪のビークル モデルを作成します。このモデルは、距離 WheelBase だけ離れた 2 本の車軸をもつビークルを表します。ビークルの状態は、3 要素ベクトル [x y theta] として定義されます。グローバルの xy 位置をメートル単位で、ビークルの向首角 theta をラジアン単位で指定します。前輪はステアリング角度 psi で旋回できます。ビークルの向き theta は後車軸の中心で定義されます。モデルの時間微分状態を計算するには、入力コマンドと現在のロボットの状態を指定して、関数 derivative を使用します。

作成

説明

kinematicModel = bicycleKinematics は、二輪の運動学モデル オブジェクトを、既定のプロパティ値で作成します。

kinematicModel = bicycleKinematics(Name,Value) は、追加のプロパティを指定された値に設定します。複数のプロパティを任意の順序で指定できます。

プロパティ

すべて展開する

ホイール ベースは前後の車軸間の距離を示し、メートル単位で指定されます。

ビークル速度範囲は、ビークルの最小速度と最大速度を指定する 2 要素ベクトル [MinSpeed MaxSpeed] です。メートル/秒単位で指定します。

最大ステアリング角度 psi はビークルが左右にステアリングできる最大角度を指し、ラジアン単位で指定します。このプロパティはユーザーが指定した状態入力の検証に使用されます。

MaxSteeringAnglepi/2 に設定されている場合は、MinimumTurningRadius の値が 0 になります。

この プロパティ は読み取り専用です。

ビークルの最小回転半径 (メートル単位)。数値スカラーとして指定します。最小半径はホイール ベースと最大ステアリング角度を使用して計算されます。

VehicleInputs プロパティは、関数 derivative を使用するときのモデル入力コマンドの形式を指定します。プロパティには 2 つの有効なオプションがあり、string または文字ベクトルとして指定します。

  • "VehicleSpeedSteeringAngle" — ビークルの速度とステアリング角度

  • "VehicleSpeedHeadingRate" — ビークルの速度と向首角速度

オブジェクト関数

derivativeビークルの状態の時間微分

すべて折りたたむ

ロボットの作成

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

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.

参照

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

[2] Corke, Peter I. Robotics, Vision and Control: Fundamental Algorithms in MATLAB. Springer, 2011.

拡張機能

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

バージョン履歴

R2019b で導入