옴니휠 제어

48
1963

몇가지 사이트와 논문을 참조했습니다만 설명은 아래 사이트로 하겠습니다.

참조 사이트 : 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)에서 어느 방향으로 같은 속도로 기울기 시작했다고 가정했을 때 잠시 후의 위치를 보면 무게중심이 낮은 상황에서의 θ값이 더 큽니다. (원운동에서 원호를 움직이는 속도가 같을 때 직경이 클수록 변화한 θ값은 작음.) 시간이 지날수록 이 차이가 더 커지게 되는데 이는 중력가속도가 작용하기 때문입니다. 따라서 무게 중심이 낮을수록 더 빨리 기울어지게 되죠.

충분한 설명이 되었는지 모르겠습니다.. 혹시 제가 틀린 부분이 있닫면 알려주세요.

guest
48 Comments
newest
oldest
Inline Feedbacks
View all comments
ballrobot want
ballrobot want
2020년 5월 22일 18:51

– 로봇무게 : 3~3.2kg – IMU : MPU6050 (상보필터를 사용하여 roll, pitch 값을 획득함.) – 모터 드라이버 : L298N x 4 – 모터 : SE-DM185 x 4 – 제어보드 : 아두이노 메가 ——————– Motor control ——————— 1. 외부인터럽트를 사용하여 각각의 모터 엔코더 값을 받음. 2. 타이머 인터럽트를 사용하여 받은 엔코더값을… 더 보기 »

김성영
김성영
2020년 4월 28일 09:00

엘큐님 오랜만입니다.

PID 게인튜닝을 하면서 볼로봇을 세우시는데 얼마나 걸리셨나요?
저는 2주를 목표로 하고있습니다.

감사합니다.

ballrobot want
ballrobot want
2020년 4월 6일 20:57

엘큐님, 혹시 자세제어 하실떄 어떻게 하셨는지 가르쳐 주실수있나요?

흔히 PID로 자세제어를 하면 Inner loop(각속도), outer loop(각도)로 제어하잖아요.

이런 방식으로 하신건가요?

궁금합니다.

ballrobot want
ballrobot want
2020년 3월 26일 18:11

안녕하세요.
하드웨어는 제작해놓은 상태이고,
현재 아두이노 메가, MPU6050 IMU 센서를 가지고있는 상태입니다.

혹시
작성했던 코딩을 공유해주실수있으신가요?
볼로봇을 진짜 하고싶은데, 코딩을 해본적이없어서 간곡히 도움을 요청합니다.

감사합니다.

aaaa
aaaa
2019년 11월 7일 13:31

안녕하세요 혹시 기준벡터는 어떻게설정되었는지 알 수 있을까요?