Main Content

geometricJacobian

로봇 컨피규레이션에 대한 기하 야코비 행렬

설명

예제

jacobian = geometricJacobian(robot,configuration,endeffectorname) 은 로봇 모델에 지정된 엔드 이펙터 이름과 컨피규레이션에 대한 베이스를 기준으로 기하 야코비 행렬을 계산합니다.

예제

모두 축소

로봇의 특정 엔드 이펙터와 컨피규레이션에 대한 기하 야코비 행렬을 계산합니다.

Robotics System Toolbox™ loadrobot 함수를 사용하여 PUMA 560 로봇을 rigidBodyTree 객체로 불러옵니다.

puma = loadrobot("puma560");

무작위 컨피규레이션을 적용한 Puma 로봇에서 바디 "link7"의 기하 야코비 행렬을 계산합니다.

geoJacob = geometricJacobian(puma,randomConfiguration(puma),"link7")
geoJacob = 6×6

   -0.0000   -0.5752   -0.5752   -0.4266   -0.7683   -0.5213
    0.0000    0.8180    0.8180   -0.3000   -0.3776    0.8377
    1.0000   -0.0000   -0.0000    0.8533   -0.5168    0.1629
    0.1696    0.0823    0.3087   -0.0407    0.0198         0
   -0.5577    0.0578    0.2171   -0.0200    0.0210         0
    0.0000    0.5538    0.2224   -0.0274   -0.0448         0

입력 인수

모두 축소

로봇 모델로, rigidBodyTree 객체로 지정됩니다.

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

엔드 이펙터 이름으로, string형 스칼라 또는 문자형 벡터로 지정됩니다. 로봇 모델의 어떤 바디도 엔드 이펙터가 될 수 있습니다.

데이터형: char | string

출력 인수

모두 축소

configuration이 지정된 엔드 이펙터의 기하 야코비 행렬로, 6×n 행렬로 반환됩니다. 여기서 n은 로봇의 자유도입니다. 야코비 행렬은 베이스 좌표 프레임을 기준으로 엔드 이펙터에 조인트-공간 속도를 매핑합니다. 엔드 이펙터 속도는 다음과 같습니다.

Equation for calculating linear velocities of the end effector using the Jacobian and joint velocities

ω는 각속도, υ는 선속도, 는 조인트-공간 속도입니다.

세부 정보

모두 축소

동역학 속성

로봇 동역학을 사용하여 작업하는 경우 rigidBody 객체의 다음 속성을 사용하여 매니퓰레이터 로봇의 개별 바디에 대한 정보를 지정합니다.

  • Mass — 강체의 질량(단위: 킬로그램).

  • CenterOfMass — 강체의 무게 중심 위치로, [x y z] 형식의 벡터로 지정됩니다. 이 벡터는 바디 프레임을 기준으로 강체의 무게 중심 위치를 설명합니다(단위: 미터). centerOfMass 객체 함수는 로봇의 무게 중심을 계산할 때 이 강체 속성값을 사용합니다.

  • Inertia — 강체의 관성으로, [Ixx Iyy Izz Iyz Ixz Ixy] 형식의 벡터로 지정됩니다. 이 벡터는 바디 프레임을 기준으로 합니다(단위: 킬로그램 제곱미터). 관성 텐서는 양의 정부호 행렬로, 형식은 다음과 같습니다.

    A 3-by-3 matrix. The first row contains Ixx, Ixy, and Ixz. The second contains Ixy, Iyy, and Iyz. The third contains Ixz, Iyz, and Izz.

    Inertia 벡터의 처음 세 요소는 관성 모멘트이며, 관성 텐서의 대각선 요소입니다. 벡터의 마지막 세 요소는 관성의 곱이며, 관성 텐서의 비대각선 요소입니다.

전체 매니퓰레이터 로봇 모델과 관련된 정보의 경우 다음 rigidBodyTree 객체 속성을 지정합니다.

  • Gravity — 로봇에 작용하는 중력 가속도로, [x y z] 벡터로 지정됩니다(단위: m/s2). 기본적으로 중력 가속도는 없습니다.

  • DataFormat — 기구학 함수와 동역학 함수의 입력/출력 데이터 형식으로, "struct", "row" 또는 "column"으로 지정됩니다.

동역학 방정식

매니퓰레이터 강체 동역학은 다음 방정식에 의해 결정됩니다.

ddt[qq˙]=[q˙M(q)1(C(q,q˙)q˙G(q)J(q)TFExt+τ)]

또는 다음과 같이 표기합니다.

M(q)q¨=C(q,q˙)q˙G(q)J(q)TFExt+τ

각 요소는 다음과 같습니다.

  • M(q) — 현재의 로봇 컨피규레이션에 기반한 조인트-공간 질량 행렬입니다. 이 행렬은 massMatrix 객체 함수를 사용하여 계산합니다.

  • C(q,q˙) — 속도 곱을 계산하기 위해 q˙를 곱한 코리올리 항입니다. 속도 곱은 velocityProduct 객체 함수를 사용하여 계산합니다.

  • G(q) — 모든 조인트가 지정된 중력 Gravity에서 위치를 유지하는 데 필요한 중력 토크와 중력 힘입니다. 중력 토크는 gravityTorque 객체 함수를 사용하여 계산합니다.

  • J(q) — 지정된 조인트 컨피규레이션에 대한 기하 야코비 행렬입니다. 기하 야코비 행렬은 geometricJacobian 객체 함수를 사용하여 계산합니다.

  • FExt — 강체에 가해지는 외력의 행렬입니다. 외력은 externalForce 객체 함수를 사용하여 생성합니다.

  • τ — 각 조인트에 벡터로 직접 가해지는 조인트 토크와 조인트 힘입니다.

  • q,q˙,q¨ — 개별 벡터로, 각각 조인트 컨피규레이션, 조인트 속도, 조인트 가속도입니다. 회전 조인트의 경우 각각 라디안, rad/s, rad/s2 단위로 값을 지정합니다. 직선 조인트의 경우 미터, m/s, m/s2 단위로 지정합니다.

동역학을 직접 계산하려면 forwardDynamics 객체 함수를 사용합니다. 이 함수는 상기 입력값들의 지정된 조합에 대한 조인트 가속도를 계산합니다.

일련의 특정 모션을 구현하려면 inverseDynamics 객체 함수를 사용합니다. 이 함수는 지정된 컨피규레이션, 속도, 가속도, 외력을 구현하는 데 필요한 조인트 토크를 계산합니다.

참고 문헌

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

확장 기능

버전 내역

R2016b에 개발됨