부동 기본 쿼터니언 위치 및 각속도를 제한하는 권장 방법은 무엇입니까?
플로팅베이스가있는 객체의 경우 일반화 된 위치에서의 회전은 4D 쿼터니언으로 표현됩니다. 그러나 일반화 된 속도의 회전은 여전히 3D 공간 회전 벡터로 표현됩니다.
예를 들어 역방향 오일러에 대해 권장되는 제한 방법이 있습니까?
prog.AddConstraint(eq(q[t+1], q[t] + h[t] * qd[t+1]))
그것은 예, 사원 수의 형태로 각속도를 변환하는 것이 적절하다 여기 ?
또는 John T. Betts가 비선형 계획법을 사용한 최적 제어 및 추정을위한 실용적인 방법에 설명했습니다.

답변
유스 케이스의 경우 계획에서 인접한 웨이 포인트 사이에 통합 제약을 부과하고 싶습니다. 이 경우 오일러 통합을 q[n] = q[n+1] - qdot[n+1] * dt
직접 사용하지 않는 것이 좋습니다 . 그 이유는 사원 수는 항상 단위 길이 제약 만족 (즉,해야한다는 것입니다 q[n]
및 q[n+1]
4D의 단위 구의 표면에 모두 있습니다). 따라서 시간 미분 qdot
은이 단위 구의 접선 표면을 따라, 즉 q[n+1] - qdot[n+1] * dt
접선 표면에 있습니다. q[n+1]
접선 표면의 어떤 점 (제외 )도 단위 원의 표면에 없습니다. 따라서 제약 조건 q[n+1] = q[n] + qdot[n+1] * dt
은 dt=0
| q [n] | 제약 조건과 결합 할 때만 충족 될 수 있습니다. = | q [n + 1] | = 1. 그림으로 "원에 접하는"섹션에있는 그림을 사용할 수 있습니다.https://www.toppr.com/guides/maths/circles/tangents-to-the-circle/. 공지 사항 q[n+1] - qdot[n+1] * dt
구의 접선에, 그리고 q[n]
당신이 할 수 있도록 원에 q[n] = q[n+1] - qdot[n+1] * dt
.
대신 다음 조건을 고려할 것을 제안합니다.
q[n+1] = q[n] ⊗ Δq
여기서 q[n]
상기 플로팅베이스 쿼터니언이다 n
'번째 웨이가 q[n+1]
상기 플로팅베이스 쿼터니언이다 n+1
번째 웨이가'. 두 쿼터니언 과 사이 ⊗
의 해밀턴 곱 입니다. 따라서 여기에서 각속도에서 Δq를 계산해야합니다.q[n]
Δq
n 번째와 n + 1 번째 웨이 포인트 사이의 평균 각속도가 ω ∈ ℝ³라고 가정합니다. 은 An 축을 기준으로 회전 떠 있음이 수단 a = ω/|ω|
레이트 |ω|
따라서,
Δq = [cos(|ω|Δt/2), a*sin(|ω|Δt/2)]
보다 https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation#Using_quaternion_as_rotations 위의 방정식에 대한 설명은.
ω[n+1]
n 번째 웨이 포인트에서 n + 1 번째 웨이 포인트까지의 평균 각속도로 사용 하는 경우 (역방향 오일러에서 v [n + 1]을 사용하는 것과 유사 함), 적분 제약은 다음과 같습니다.
q[n+1] = q[n] ⊗ [cos(|ω[n+1]|Δt/2), a*sin(|ω[n+1]|Δt/2)]
예를 들어 다른 수량을 평균 각속도로 사용할 수도 있습니다 (ω[n] + ω[n+1])/2
.