Main Content

bicycleKinematics

자전거 이동체 모델

R2019b 이후

설명

bicycleKinematics는 단순한 차륜 이동체 동역학을 시뮬레이션하는 자전거 이동체 모델을 만듭니다. 이 모델은 두 차축이 거리WheelBase만큼 떨어져 있는 이동체를 표현합니다. 이동체 상태는 요소를 3개 가진 벡터 [x y theta]로 정의됩니다. 여기서 전역 xy 위치는 미터 단위로 지정되고, 이동체 방향각 theta는 라디안 단위로 지정됩니다. 앞바퀴는 조향각 psi만큼 회전할 수 있습니다. 이동체 방향 theta는 뒤 차축의 중심에서 정의됩니다. 모델의 시간 도함수 상태를 계산하기 위해 입력 명령과 현재 로봇 상태를 지정하여 derivative 함수를 사용합니다.

생성

설명

예제

kinematicModel = bicycleKinematics는 디폴트 속성값을 갖는 자전거 기구학 모델 객체를 생성합니다.

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

속성

모두 확장

축간 거리는 이동체의 앞 차축과 뒤 차축 간의 거리를 나타내며, 미터 단위로 지정됩니다.

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

이동체를 오른쪽 또는 왼쪽으로 조향할 수 있는 최대 각을 나타내는 최대 조향각 psi로, 라디안 단위로 지정됩니다. 이 속성은 사용자가 제공한 상태 입력값의 유효성을 검사하는 데 사용됩니다.

MaxSteeringAnglepi/2로 설정되면 MinimumTurningRadius 값은 0이 됩니다.

읽기 전용 속성입니다.

이동체의 최소 회전 반경으로, 숫자형 스칼라로 지정됩니다(단위: 미터). 최소 반경은 축간 거리와 최대 조향각을 사용하여 계산됩니다.

VehicleInputs 속성은 derivative 함수를 사용할 때 모델 입력 명령의 형식을 지정합니다. 이 속성은 string형 또는 문자형 벡터로 지정되며, 두 가지 유효한 옵션이 있습니다.

  • "VehicleSpeedSteeringAngle" — 이동체 속도와 조향각

  • "VehicleSpeedHeadingRate" — 이동체 속도와 방향 각속도

객체 함수

derivativeTime derivative of vehicle state

예제

모두 축소

로봇 만들기

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

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

로봇 모션 시뮬레이션하기

시뮬레이션의 시간 범위를 0.05초 시간 스텝과 함께 1초로 설정하고, 좌회전을 위해 입력 명령을 이동체 속도 2m/s와 조향각 pi/4로 설정합니다. derivative 함수에 ode45 솔버를 사용하여 로봇의 모션을 시뮬레이션합니다.

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