주요 콘텐츠

forwardDynamics

조인트 토크와 조인트 상태가 주어질 경우 조인트 가속도

설명

jointAccel = forwardDynamics(robot)은 조인트 속도는 0이고 외력이 없는 상태의 로봇 홈 컨피규레이션에서 중력으로 인한 조인트 가속도를 계산합니다.

jointAccel = forwardDynamics(robot,configuration)은 로봇 컨피규레이션의 조인트 위치도 지정합니다.

홈 컨피규레이션을 지정하거나 조인트 속도 또는 토크를 0으로 지정하려면 입력 인수에 []을 사용하십시오.

jointAccel = forwardDynamics(robot,configuration,jointVel)은 로봇의 조인트 속도도 지정합니다.

jointAccel = forwardDynamics(robot,configuration,jointVel,jointTorq)은 로봇에 적용되는 조인트 토크도 지정합니다.

jointAccel = forwardDynamics(robot,configuration,jointVel,jointTorq,fext)는 각 조인트에 적용되는 힘을 포함하는 외력 행렬도 지정합니다.

예제

예제

모두 축소

적용된 외력과 중력으로 인한 힘을 사용해 주어진 로봇 컨피규레이션의 결과 조인트 가속도를 계산합니다. 전체 로봇에 지정된 중력과 함께 렌치가 특정 바디에 적용됩니다.

Robotics System Toolbox™ loadrobot 함수를 사용하여 KUKA iiwa 14 로봇 모델을 불러옵니다. 이 로봇은 rigidBodyTree 객체로 지정됩니다.

데이터 형식을 "row"로 설정합니다. 모든 동역학 계산에서 데이터 형식은 "row" 또는 "column"이어야 합니다.

중력을 설정합니다. 기본적으로 중력은 0으로 가정합니다.

kukaIIWA14 = loadrobot("kukaIiwa14",DataFormat="row",Gravity=[0 0 -9.81]);

kukaIIWA14 로봇의 홈 컨피규레이션을 가져옵니다.

q = homeConfiguration(kukaIIWA14);

로봇에 작용하는 외력을 나타내는 렌치 벡터를 지정합니다. externalForce 함수를 사용하여 외력 행렬을 생성합니다. 로봇 모델, 렌치가 작용하는 엔드 이펙터, 렌치 벡터, 현재 로봇 컨피규레이션을 지정합니다. wrench는 로봇 컨피규레이션 q를 지정해야 하는 "iiwa_link_ee_kuka" 바디 프레임을 기준으로 적용됩니다.

wrench = [0 0 0.5 0 0 0.3];
fext = externalForce(kukaIIWA14,"iiwa_link_ee_kuka",wrench,q);

kukaIIWA14이 홈 컨피규레이션에 있을 때 엔드 이펙터 "iiwa_link_ee_kuka"에 적용된 외력을 감안하여 중력으로 인한 결과 조인트 가속도를 계산합니다. 조인트 속도와 조인트 토크는 0으로 가정합니다(비어 있는 벡터 []로 입력).

qddot = forwardDynamics(kukaIIWA14,q,[],[],fext)
qddot = 1×7

   -0.0023   -0.0112    0.0036   -0.0212    0.0067   -0.0075  499.9920

입력 인수

모두 축소

로봇 모델로, rigidBodyTree 객체로 지정됩니다. forwardDynamics 함수를 사용하려면 DataFormat 속성을 'row' 또는 'column'으로 설정합니다.

로봇 컨피규레이션으로, 로봇 모델의 모든 비고정 조인트에 대한 위치 값을 나타내는 벡터로 지정됩니다. homeConfiguration(robot), randomConfiguration(robot)을 사용하거나 조인트 위치를 직접 지정하여 컨피규레이션을 생성할 수 있습니다. 벡터 형식의 configuration을 사용하려면 robotDataFormat 속성을 'row' 또는 'column'으로 설정합니다.

조인트 속도로, 벡터로 지정됩니다. 조인트 속도의 개수는 로봇의 자유도와 같습니다. 벡터 형식의 jointVel을 사용하려면 robotDataFormat 속성을 'row' 또는 'column'으로 설정합니다.

조인트 토크로, 벡터로 지정됩니다. 각 요소는 특정 조인트에 가해지는 토크에 대응합니다. 벡터 형식의 jointTorq을 사용하려면 robotDataFormat 속성을 'row' 또는 'column'으로 설정합니다.

외력 행렬로, n×6 행렬 또는 6×n 행렬로 지정됩니다. 여기서 n은 로봇의 바디 개수입니다. 형태는 robotDataFormat 속성에 따라 다릅니다. 'row' 데이터 형식은 n×6 행렬을 사용합니다. 'column' 데이터 형식은 6×n 행렬을 사용합니다.

행렬은 지정된 바디와 관련된 위치에서 0이 아닌 값만 나열합니다. 힘 행렬을 함께 추가하여 여러 바디에 여러 힘을 지정할 수 있습니다.

지정된 힘 또는 토크에 대한 행렬을 생성하려면 externalForce 항목을 참조하십시오.

출력 인수

모두 축소

조인트 가속도로, 벡터로 반환됩니다. 조인트 가속도 벡터의 차원은 로봇의 자유도와 같습니다. 각 요소는 robot의 특정 조인트에 대응합니다.

세부 정보

모두 축소

참고 문헌

[1] Featherstone, Roy. Rigid Body Dynamics Algorithms. Springer US, 2008. DOI.org (Crossref), doi:10.1007/978-1-4899-7560-7.

확장 기능

모두 확장

버전 내역

R2017a에 개발됨

모두 확장