Main Content

differentialDriveKinematics

差動駆動型ビークル モデル

説明

differentialDriveKinematics は、簡略化されたビークル運動をシミュレートする差動駆動型ビークル モデルを作成します。このモデルは、単一の固定車軸と、指定のトラック幅分離れた車輪をもつビークルを近似します。車輪は独立に駆動することが可能です。ビークルの速度と向きは、車軸の中央を基準に定義されます。ビークルの状態は、3 要素ベクトル [x y theta] として定義されます。グローバルの xy 位置をメートル単位で、ビークルの向き theta をラジアン単位で指定します。モデルについて時間微分状態を計算するには、入力コマンドと現在のロボットの状態を指定して、関数 derivative を使用します。

作成

説明

kinematicModel = differentialDriveKinematics は、Differential Drive Kinematic Model オブジェクトを、既定のプロパティ値で作成します。

kinematicModel = differentialDriveKinematics(Name,Value) は、オブジェクト上のプロパティを指定された値に設定します。複数のプロパティを任意の順序で指定できます。

プロパティ

すべて展開する

ビークルの車輪半径。メートル単位で指定します。

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

ビークルのトラック幅は車輪間の距離、つまり車軸の長さを示し、メートル単位で指定されます。

VehicleInputs プロパティは、関数 derivative を使用するときのモデル入力コマンドの形式を指定します。オプションは、以下のいずれかの string として指定します。

  • "WheelSpeeds" — 各車輪の角速度。ラジアン/秒単位で指定します。

  • "VehicleSpeedHeadingRate" — ビークルの速度と向首角速度。それぞれメートル/秒単位とラジアン/秒単位で指定します。

オブジェクト関数

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

すべて折りたたむ

ロボットの作成

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

kinematicModel = differentialDriveKinematics;
initialState = [0 0 0];

ロボットの動作のシミュレーション

シミュレーションの時間範囲を 0.05 秒のタイム ステップで 1 秒に設定し、入力コマンドを左車輪に対して 50 ラジアン/秒、右車輪に対して 40 ラジアン/秒として右折に設定します。ode45ソルバーを関数derivativeで使用することにより、ロボットの動作をシミュレートします。

tspan = 0:0.05:1;
inputs = [50 40]; %Left wheel is spinning faster
[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.

拡張機能

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

バージョン履歴

R2019b で導入