Main Content

differentialDriveKinematics

차동 구동 이동체 모델

설명

differentialDriveKinematics는 단순한 이동체 동역학을 시뮬레이션하는 차동 구동 이동체 모델을 만듭니다. 이 모델은 하나의 고정된 차축이 있고 두 바퀴가 지정된 차륜 거리만큼 떨어져 있는 이동체를 나타냅니다. 바퀴는 독립적으로 구동할 수 있습니다. 이동체 속도와 방향은 차축의 중심으로부터 정의됩니다. 이동체 상태는 3개 요소 벡터 [x y theta]로 정의됩니다. 여기서 전역 xy 위치는 미터 단위로 지정되고 이동체 방향 theta는 라디안 단위로 지정됩니다. 모델의 시간 도함수 상태를 계산하기 위해 입력 명령과 현재 로봇 상태를 지정하여 derivative 함수를 사용합니다.

생성

설명

예제

kinematicModel = differentialDriveKinematics는 디폴트 속성값을 갖는 차동 구동 기구학 모델 객체를 생성합니다.

kinematicModel = differentialDriveKinematics(Name,Value)는 객체의 속성을 지정된 값으로 설정합니다. 여러 개의 속성을 임의의 순서로 지정할 수 있습니다.

속성

모두 확장

이동체의 바퀴 반경으로, 미터 단위로 지정됩니다.

이동체 속도 범위는 최소 차량 속도와 최대 차량 속도 [MinSpeed MaxSpeed]를 제공하는 2개 요소 벡터로, 초당 미터 단위로 지정됩니다.

이동체 차륜 거리는 바퀴 사이의 거리 또는 차축의 길이를 나타내며, 미터 단위로 지정됩니다.

VehicleInputs 속성은 derivative 함수를 사용할 때 모델 입력 명령의 형식을 지정합니다. 옵션을 다음 문자열 중 하나로 지정합니다.

  • "WheelSpeeds" — 각 바퀴의 각속도로, 초당 라디안 단위로 지정됩니다.

  • "VehicleSpeedHeadingRate" — 이동체 속도와 방향 각속도로, 각각 초당 미터 단위와 초당 라디안 단위로 지정됩니다.

객체 함수

derivativeTime derivative of vehicle state

예제

모두 축소

로봇 만들기

로봇을 정의하고 초기 시작 위치와 방향을 설정합니다.

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

로봇 모션 시뮬레이션하기

시뮬레이션의 시간 범위를 0.05초 시간 스텝과 함께 1초로 설정하고, 입력 명령을 왼쪽 바퀴에 50rad/s, 오른쪽 바퀴에 40rad/s로 설정하여 우회전하도록 합니다. derivative 함수에 ode45 솔버를 사용하여 로봇의 모션을 시뮬레이션합니다.

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에 개발됨