Main Content

unicycleKinematics

一輪のビークル モデル

R2019b 以降

説明

unicycleKinematics は、簡略化された乗用車型のビークル運動をシミュレートする一輪のビークル モデルを作成します。ビークルの状態は、3 要素ベクトル [x y theta] として定義されます。グローバルの xy 位置をメートル単位で、ビークルの向首角 theta をラジアン単位で指定します。このモデルは、向首角 theta に従った所定の位置で回転できる、指定された車輪半径 WheelRadius をもつ一輪ビークルを近似します。モデルについて時間微分状態を計算するには、入力コマンドと現在のロボットの状態を指定して、関数 derivative を使用します。

作成

説明

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

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

プロパティ

すべて展開する

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

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

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

  • "WheelSpeedHeadingRate" — 車輪速度と向首角速度。ラジアン/秒単位で指定します。

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

オブジェクト関数

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

すべて折りたたむ

ロボットの作成

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

kinematicModel = unicycleKinematics;
initialState = [0 0 0];

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

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

tspan = 0:0.05:1;
inputs = [10 pi/4]; %Constant speed and turning 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.

拡張機能

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

バージョン履歴

R2019b で導入