(페더 스톤) 관절 형 강체 모델에 액추에이터 또는 힘 추가


9

기본적으로 기본에 연결된 일련의 볼-앤-소켓 조인트로 구성되어 프리즘 조인트 (레일)에 연결된 시스템을 모델링해야하는 프로젝트를 진행하고 있습니다.

Roy Featherstone의 Rigid Body Dynamics 알고리즘을 엄밀히 읽었 으며 Springer Handbook of Robotics (Featherstone이 작성) 의 Dynamics 섹션 도 읽었습니다 .

그의 "공간 벡터"와 "공간 행렬"표기법을 사용하는 데 오랜 시간이 걸렸지 만, 운동으로 손으로 모든 표기법을 다시 만든 후에는 3x3을 연결하는 좋은 방법이되었습니다. 6x6 및 6x1 행렬 및 벡터로 3x1 행렬 및 벡터. 그가 작업을 수행하기 위해 발명 한 수학은 표준 표기법을 가로 채기 때문에 약간 지루할 수 있지만 MATLAB에서는 전체가 매우 컴팩트하고 구현하기가 매우 쉽습니다.

내 문제는 이것입니다 : 모델에 액추에이터를 어떻게 추가합니까? 그는 관절 정의, 링크 정의 등을 명시 적으로 구성하는 과정을 안내하지만 액추에이터 또는 적용된 힘에 관해서는 " 여기에 추가하면 Bob의 아저씨입니다!"라고 말합니다. -전혀 논의되지 않았습니다. 에서 로봇의 핸드북 그 중력에 용어를 추가하는 고정베이스 거짓 가속도를 도입하는 것을 제안하지만 로컬 좌표를 추가 할 수 없으며 그 액추에이터 입력을 추가하는 방법을 언급 않는 방법을 보여주지 않는다.τ

도움을 주시면 감사하겠습니다. 나는 다른 책으로 시작하는 것을 고려했지만 다른 표기법에 다시 적응하는 데 시간이 많이 걸릴 것입니다. 나는 이것을 앞으로 나아가고 싶지만 결승선에서 수 인치 부끄러워하는 것처럼 느낍니다.

답변:


3

액추에이터 힘

이 권리를 얻습니까? 강성 멀티 바디 시스템의 이론적 모델이 있으며 강체 동역학 계산을 수행하려고합니다. 모델을 구현했으며 이제 액추에이터로 구동 할 때 모델의 동작 방식을 계산하려고합니다.

그러나 당신을위한 액추에이터는 무엇입니까? 그것은 단순히 그 관절에 작용하는 힘입니까? DC 모터 모델입니까? PID 컨트롤러입니까?

이 책의 역학 알고리즘은 일반화 된 위치로 설명됩니다 일반 속도 ˙일반 속도 ¨및 일반화 된 힘 τ. 번역이 다음과 같이 설명 된 프리즘 조인트가있는 경우나는그 조인트에서의 선형 힘은 로 설명됩니다 . 로 회전이 설명 된 회전 (힌지) 조인트가있는 경우 는 해당 조인트의 토크를 나타냅니다.τ나는제이τ제이

계산 방법은 액추에이터에 대한 이해에 달려 있습니다 . 단순히 힘이나 토크를 적용하려면 해당 값을 의 해당 값에 넣으십시오 . 일단 적용되면 순방향 역학 알고리즘에 대한 입력으로 사용되어 적용된 힘에 대한 시스템 응답을 계산합니다.ττ

: 옆 주 페더 사용하는 활성 루프 폐쇄하는 힘을 나타낸다. 모델 설명에는 운동 학적 루프가없는 것으로 보이므로 는 적용되지 않습니다.ττ

중력 가속도 :

Featherstone은베이스에 중력 가속도를 적용하고 트리를 통해 알고리즘에 의해 전파되도록합니다. 이는 RNEA, 표 5.1의 행에서 수행됩니다.

0= .

그 대신에 라인을 수정할 수도 있습니다

에프나는=나는나는나는+V나는×나는나는V나는

에프나는=나는나는(나는나는엑스0)+V나는×나는나는V나는

각 몸에 개별적으로 중력 효과를 적용합니다. 이것은 추가 계산을 소개하며 그렇게 할 때 어떤 이점도 보지 못합니다.

공간 대수 대 3 차원 벡터의 연결

공간 대수는 단지 3D 벡터의 연결이 아닙니다. 전자는 고정 좌표 프레임에서 강체 움직임을 표현하는 반면, 후자는 몸체와 함께 움직이는 지점에서 표현됩니다. 결과적으로 공간 가속은 공간 속도의 시간 미분입니다. 두 개의 3 차원 방정식을 사용하는 고전적 표기법에서는 그렇지 않습니다 (Featherstone의 책 2.11 절).

신체의 각속도가 일정한 경우 ω회전축에 있지 않은 몸체의 모든 지점은 회전축 (평면 케이스의 회전 중심)을 향한 가속도를 갖습니다. 공간 대수에서이 몸체는 가속도가 표현 된 프레임과 무관하게 공간 가속도가 0 입니다 .

공간 속도는 현재 고정 된 참조 프레임의 원점과 일치하는 바디 포인트의 선형 및 각속도를 나타냅니다. 해당 프레임이 질량 중심으로 표현되고 전역 참조 프레임과 방향이 정해지면 3D 선형 및 각속도의 단순한 연결 인 것처럼 보이지만이 특정 참조 프레임 선택의 경우에만 해당됩니다. 다른 프레임에서 표현하면 다른 값을 얻을 수 있지만 여전히 동일한 공간 속도를 나타냅니다.

공간 가속은 원점과 일치하는 점의 선형 및 각 속도의 흐름 을 나타냅니다. 여기서 "흐름"은 시간에 따라 벡터 양 (선형 및 각속도)이 어떻게 변하는지를 의미합니다.


나는이 알고리즘을 구현하기 위해 열심히 노력했지만, 가장 기본적인 측면조차도 매번 예상대로 정확하게 작동하도록 길을 따라 최대한 체계적으로 노력했습니다. 이를 위해 시뮬레이션 솔루션을 비교할 수 있도록 정확한 솔루션을 계산할 수있는 여러 가지 실험을 설정했습니다.

내가 작업 한 마지막 측면은 구면 조인트입니다. 쿼터니언 표현과 가속도를 얻습니다. 이 실험에서는 지구를 모델링하고 구형 조인트가있는 진자를 표면에 놓아 Foucault 진자를 시뮬레이션하려고합니다. 그렇게하면서 나의 고정 된 기초는 지구의 중심이며 지구는 회전합니다. 그런 다음 지구의 회전 중심에서 위 / 아래로 회전하여 표면으로 변환하여 구형 관절 진자를 배치 할 수 있습니다.

고정 된베이스의 z- 축에 놓을 수 없었기 때문에 중력을 추가 할 수있는 방법이 필요했습니다. 이것은 북극에서만 중력이 제대로 작동 할 것입니다. 본질적으로, 나는 지구 표면 아래의 힘에 대해서는 신경 쓰지 않고 진자의 세차 운동에만 신경 쓰고 있습니다.

나는 한 관련 질문 질문 내가 고정 관절을 처리하는 방법에 대한합니다.

2

RBDL (Rigid Body Dynamics Library) 을 사용 하지 않은 경우 RBDL 을 구현하는 방법을 보거나 저자 Martin Felis에게 문의하십시오.


Barrett, 몇 주 전에 RBDL을 발견했으며 정보를 수집하려고 할 때마다 CB로 작성되었지만 코드를 따르기 어려운 메소드로 C ++로 작성되었습니다. 예를 들어, 키네마 틱스 코드에라는 줄이 있습니다 G.block(0,q_index,6,1) = base_to_body.apply(model.X_base[j].inverse().apply(model.S[j]));. 그렇다면 기능 apply은 무엇입니까? 글쎄, 나는 클래스 base_to_body가 무엇이든 헤더 파일로 가야 하지만 관절이나 몸통인가? 또한 같은 것들도 model.base[j].inverse().apply(model.S[j])명확하지 않습니다.

그것은 때때로 유용하지 않다는 것을 의미하지는 않지만 RBDL에서 이해를 얻으려면 많은 노력이 필요합니다.

에 오신 것을 환영합니다 로봇 , 바렛 에임스 답변에 대한 감사하지만 우리는 가능한 자체 포함 된 것으로 답변을 선호합니다. 링크 는 썩는 경향이 있으므로 링크에 의존하는 답변은 컨텐츠에 링크 된 것이 썩 으면 쓸모 없게 될 수 있습니다. 링크에서 더 많은 컨텍스트를 추가하면 사람들이 귀하의 답변을 유용하게 사용할 가능성이 높습니다.
Mark Booth
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.