몇가지 사이트와 논문을 참조했습니다만 설명은 아래 사이트로 하겠습니다.
참조 사이트 : How to control omni-direction wheel
Vw 는 옴니휠의 속도
Vin 은 옴니휠의 바깥쪽 롤러에 의해 움직이는 속도
Vb 는 로봇의 속도 (위 사진상에서 V)
θ는 기준벡터(reference vector)와 옴니휠의 속도 사이의 각
φ는 기준벡터와 로봇 속도 사이의 각
Vin 과 Vw는 수직입니다. 따라서 Vb는 (1)과 같이 나타낼 수 있습니다.
Vb = Vin + Vw ………….(1)
또한 Vin은 Vw와 Vb로 나타낼 수 있습니다.
Vin = Vb + Vw – 2Vb *cos(θ – φ) ………..(2)
( (2) 식이 이해가 되지 않을 때는 댓글을 남겨주세요.)
(2) 를 (1)에 대입하면
Vw = Vb *cos(θ – φ) …………..(3)
최종식 (3)을 얻을 수 있습니다.
바퀴가 몇개가 되든 바퀴와 기준벡터 θ값을 알면 각 바퀴가 로봇의 속도 Vb에 대해 제어되어야 할 양에 대해 알 수 있습니다.
예를 들어 바퀴 3개의 θ값이 각각 0°, 120°, 240°라면
Vw1 = Vb *cos(φ)
Vw2 = Vb *cos(120 – φ)
Vw3 = Vb *cos(240 – φ)
* 위 사이트에서 (2)식 뒷 부분이 2Vw *Vb *cos(θ – φ) 로 Vw가 포함되어 있는데 오타로 추정됩니다.
*기타 참고 자료
THREE OMNI-DIRECTIONAL WHEELS CONTROL ON A MOBILE ROBOT
논문 모음 다운로드 : paper about omniwheel
유투브에는 다른 방식으로 유도한 동영상이 있어서 첨부 해봤습니다.
추가 내용 (18.03.03)
무게 중심이 높을수록 더 안정적일 것이다라는 내용에 대해 그림판으로 나름 열심히 그려봤습니다…
R : 공의 반지름
C1, C2 : 공으로부터 로봇바디의 무게 중심.
a) : 초기에는 무게중심과 지표면과 수직인 상황 즉 θ = 0, 이고 공 위에서 정지인 상황.
b) : 공의 반지름 R에 무게중심의 길이만큼 더한 즉 R+C1, R+C2인 원 위를 움직이는 원운동으로 볼 수 있음.
a)에서 어느 방향으로 같은 속도로 기울기 시작했다고 가정했을 때 잠시 후의 위치를 보면 무게중심이 낮은 상황에서의 θ값이 더 큽니다. (원운동에서 원호를 움직이는 속도가 같을 때 직경이 클수록 변화한 θ값은 작음.) 시간이 지날수록 이 차이가 더 커지게 되는데 이는 중력가속도가 작용하기 때문입니다. 따라서 무게 중심이 낮을수록 더 빨리 기울어지게 되죠.
충분한 설명이 되었는지 모르겠습니다.. 혹시 제가 틀린 부분이 있닫면 알려주세요.
– 로봇무게 : 3~3.2kg – IMU : MPU6050 (상보필터를 사용하여 roll, pitch 값을 획득함.) – 모터 드라이버 : L298N x 4 – 모터 : SE-DM185 x 4 – 제어보드 : 아두이노 메가 ——————– Motor control ——————— 1. 외부인터럽트를 사용하여 각각의 모터 엔코더 값을 받음. 2. 타이머 인터럽트를 사용하여 받은 엔코더값을… 더 보기 »
엘큐님 오랜만입니다.
PID 게인튜닝을 하면서 볼로봇을 세우시는데 얼마나 걸리셨나요?
저는 2주를 목표로 하고있습니다.
감사합니다.
엘큐님, 혹시 자세제어 하실떄 어떻게 하셨는지 가르쳐 주실수있나요?
흔히 PID로 자세제어를 하면 Inner loop(각속도), outer loop(각도)로 제어하잖아요.
이런 방식으로 하신건가요?
궁금합니다.
안녕하세요.
하드웨어는 제작해놓은 상태이고,
현재 아두이노 메가, MPU6050 IMU 센서를 가지고있는 상태입니다.
혹시
작성했던 코딩을 공유해주실수있으신가요?
볼로봇을 진짜 하고싶은데, 코딩을 해본적이없어서 간곡히 도움을 요청합니다.
감사합니다.
안녕하세요 혹시 기준벡터는 어떻게설정되었는지 알 수 있을까요?