하지만 이 게시글은 단순 일지 이며, 일지에 작성된 내용이 정확하지 않을 수도 있습니다.
실내 자율 주행 로봇을 개발할 때는 전반적인 시스템 구성 및 동작 원리를 이해하는 것이 중요합니다. 따라서 아래와 같은 순서로 개발을 시작하는 것이 좋을 것입니다.
- 시스템 구성: 우선적으로 실내 자율 주행 로봇의 구성 요소와 구성 방법을 결정해야 합니다. 로봇의 크기, 모양, 기능 등을 정하고, 사용할 센서와 모터, 컴퓨팅 시스템 등의 하드웨어를 선택합니다.
- 소프트웨어 개발: 실내 자율 주행 로봇을 개발하기 위해서는 ROS와 같은 소프트웨어 플랫폼에 대한 이해가 필요합니다. ROS는 로봇의 하드웨어와 소프트웨어 간의 통신을 가능하게 하며, 로봇의 각종 센서와 모터를 제어하는데 필요한 다양한 라이브러리를 제공합니다.
- 하드웨어 구성: 센서와 모터, 컴퓨팅 시스템 등의 하드웨어를 구성합니다. 구성한 하드웨어를 ROS와 연결하여 테스트해보고, 문제점이나 개선할 점을 파악합니다.
- 로봇 제어: 개발한 하드웨어와 소프트웨어를 연결하고, 제어 프로그램을 개발합니다. 제어 프로그램은 로봇의 센서 데이터를 처리하고, 모터를 제어하여 로봇이 움직이도록 합니다.
- 로봇 주행 테스트: 로봇 주행을 위한 환경을 구성하고, 로봇 주행 테스트를 수행합니다. 로봇이 지정한 목표 지점까지 정확하게 이동하는지 확인하고, 필요한 경우에는 로봇의 위치 보정 알고리즘을 개선합니다.
- 성능 개선: 로봇의 성능을 개선하기 위해 다양한 실험과 테스트를 수행합니다. 센서의 정확도 개선, 제어 알고리즘 최적화 등의 방법을 사용하여 로봇의 성능을 향상시킬 수 있습니다.
1. 주행 모델 정하기
- 바퀴로 굴러가는 로봇 제어의 방식에는 크게 3가지가 있다.
1) 자전거 모델(bicycle model)
- 일반적인 자동차 처럼 핸들을 조향하는 방식
- 바퀴의 각도를 조절하여 로봇의 회전 운동을 제어하는 모델
- 제자리 회전이 불가능하여 좁은 지형에서의 주행이 어려움.
2) 차동 구동 방식(differential drive model)
- 양쪽 바퀴의 속도를 다르게 하여 로봇의 회전 운동을 제어하는 방식
- 회전시 미끄러짐이 크기 때문에 아스팔트 도로와 같이 마찰이 높은 환경에서는 회전이 불가능할 수 있다.
3) 전방향 구동 방식(omni directional model)
- 메카넘 휠(Mecanum wheel)이라고 불리는 전방향 바퀴를 사용하는데, 이 바퀴는 구조적인 형태 때문에 순간적으로 모든 방향으로의 움직임이 가능한 홀로노믹(holonomic) 특성을 갖는다.
- 2차원 평면 공간에서 유연한 3자유도 운동(전후/좌우/회전)이 가능하여 직관적인 조작을 할 수 있으므로 제어 시스템을 단순하게 구현할 수 있다.
- 반면 바퀴의 기구적 설계가 다소 복잡하다는 단점이 있다.
- 이번 프로젝트에서는 전방향 구동 방식을 채택할 예정이다.
2. 모터 선정하기
- 먼저, 로봇의 주행 환경을 고려해야 한다.
- 모터의 힘은 로봇이 주행하는 오르막길의 경사도와 로봇의 무게와 비례해야 한다.
1. 제작할 로봇의 무게가 어느정도 일지
2. 주행할 오르막길의 경사도는 어느정도 일지
- 위 두가지를 고려한 다음 충분한 출력을 가진 모터를 선정해야 한다.
- 위와 같은 노면에서 주행할 때, 아래 그래프와 같은 속도록 주행한다고 가정해 보겠다.
$a$ : 가속도
$g$ : 중력에 의한 힘
$f_w$ : 가속도에 의한 힘
- DC 모터의 카타로그를 보면 엄청나게 많은 수치들이 나와 있는데, 도대체 어떤 값을 참조해서 모터를 선정해야 하는지 헷갈린다.
- 우선 첫번째로 고려해야 할 사항은 전원이다.
- 그 다음으로 고려할 사항은 사용자가 원하는 속도와 힘이 충분히 나올 것인가 이다. 이 때 사용하는 항목이 바로 토크이다.
토크란
모터의 회전력으로 쉽게 설명하면, 모터로 어떤 물체를 움직이고자 했을때 모터가 내어 주어야 하는 힘을 말한다.
필요한 토크보다 모터가 낼 수 있는 토크가 작다면 물체를 움직일 수 없을 것이다.
그런데 이상하게도 같은 물체를 움직일지라도 가속 구간과 등속 구간에서의 필요한 토크가 다르다.
(가속 구간에서 더 많은 토크를 필요로 할 것.)
로봇의 중량 : W [kg]
바퀴의 지름 : D [cm]
모터의 등속 회전 속도 : f [turn/s]
가속 구간 : t [s]
위 네 가지 인자들이 우리가 쉽게 직접 알아낼 수 있는 값이며, 이를 이용해 다음과 같은 세 개의 인자를 계산한다.
부하 관성 모멘트 : J[$kg*cm^2$] = $W * \frac{D^2}{8}$
가속 토크 : $ Tm+Ta$ , g 는 중력 가속도 $
$Ta = \frac{J}{g} * \frac{2 \pi f}{t} [kg cm] 980$cm/s^2$
등속 토크 : $ Tm = \frac{u*W*D}{4}[kg cm]$ 단, u는 마찰 계수
- 마찰 계수의 경우 이를 측정하기 많이 어렵기 때문에 일반적으로 사용하는 계수가 0.1이다.
- 그렇기에 계산할 때에는 0.1을 대입해서 계산한다.
* 가속시에 필요한 토크는 가속 토크와 등속 토크를 더한 값이며, 등속 구간에서 필요한 토크는 등속 토크 만이다.
* 모터 카타로그를 보면 대부분 단위가 mNm으로 나와 있다. 위에서 계산한 [kg cm]를 [mNm]로 바꾸는 식은 다음과 같다.
$$1kgcm ==> 9.8Ncm = 98mNm$$
솔직히 서버랑 인공지능만 다루다가 하드웨어를 갑자기 다루려고 하니 무슨 말인지 하나도 모르겠다.
'Projects > 실내 자율 주행 로봇' 카테고리의 다른 글
프로젝트 일지 5. IMU 센서 (2) | 2023.03.11 |
---|---|
프로젝트 일지 4. 모터 드라이버 선정 (0) | 2023.03.09 |
프로젝트 일지 3. 모터 구매 (0) | 2023.03.07 |
프로젝트 일지 2. 모터에 대한 이해. (0) | 2023.03.07 |