산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Nox – A House Wandering Robot(ROS)

Nox는 Kinect와 함께 SLAM(ROS)을 사용하여 환경을 탐색하는 멋진(시간이 많이 소요되는) 로봇입니다. Nox는 ROS, Raspberry Pi 및 Arduino를 사용하여 구축된 차동 구동 로봇입니다. 저는 기본 탐색 기능을 갖춘 로봇 기반으로 프로젝트를 시작했으며 진공 청소기와 같은 다른 용도로 사용할 수 있습니다.

하지만 DIY 로봇에는 없는 경우가 많기 때문에 적절한 디자인으로 독립형 로봇으로 만들기로 재빨리 결정했습니다. 현재 상태에서 로봇은 SLAM(gmapping)을 사용하여 주변 지도를 만들고(Kinect 깊이 인식을 사용하여 벽과 장애물을 감지) 지도 내에서 자신을 위치시킬 수 있습니다. 주어진 목표를 향한 경로를 계획하고 장애물을 피하여 목표를 향해 질주할 수 있습니다.

Nox는 11.1v 리튬 이온 배터리로 구동되며 2개의 모터로 구동됩니다. 전면 패널을 제거하여 배터리를 교체할 수 있습니다. 홈이 있는 구멍과 나사로 고정하고 길이가 다른 배터리를 넣을 수 있습니다. 배터리 잔량을 모니터하기 위해 화면과 함께 배터리 알람을 넣었습니다.


모터는 Banggood의 2개의 12v DC 모터(107rpm)입니다. 그것들은 훌륭하지만 실제로 로봇이 그렇게 빨리 갈 필요는 없으며 더 정확한 인코더를 위해 속도의 일부를 교환해도 괜찮았을 것입니다.

디자인과 관련하여 주요 제약은 Kinect를 중심으로 로봇을 구축할 때 Kinect와 잘 통합되는 무언가를 갖는 것이었습니다. 나는 많은 현대적인 스타일의 물체의 삼각형 모양에서 영감을 받았습니다(그리고 많은 Deus Ex는 인정해야 합니다). DIY 로봇에는 흔히 없는 기능인 멋지고 전문적인 로봇을 갖고 싶었습니다. 모든 것을 조정하려면 CAD 모델에 몇 주를 투자해야 했습니다.

측면의 조명은 제가 무료로 받은 새해 전야 발광 스틱에서 재활용되었으며 로봇 상태를 나타내는 역할을 합니다. Arduino가 ROS 마스터에 연결되지 않은 경우(로봇 프로그램이 아직 시작되지 않았음을 나타냄) 표시등이 매우 빠르게 연속으로 세 번 깜박입니다. 운전할 때 표시등이 더 "숨쉬는" 것처럼 깜박이며 깜박이는 속도는 로봇 속도에 따라 다릅니다.

연결되지 않음 깜박임

유휴 깜박임

구조

위에서 설명한 것처럼 로봇은 차동 구동 방식이므로 모터가 같은 축에 배치됩니다. 베이스는 지지를 위한 두 개의 캐스터 휠이 있는 나무로 만들어졌습니다. 처음에는 정전기 현상을 피하기 위해 하나의 캐스터 휠을 사용할 계획이었지만 적당한 크기의 휠을 찾지 못했습니다. 나머지 구조는 주로 나무와 금속 브래킷으로 만들어졌으며 DIY 소매점에서 쉽게 찾을 수 있습니다. 로봇 뒷면에는 전자판을 올려놓을 수 있는 판을 쌓을 수 있습니다.


카터는 검은색 플라스틱 판으로 만들어졌으며 손으로 자르고 접착했습니다(다음에는 3D 프린팅을 사용할 예정입니다).


하드웨어

주 컨트롤러 내부에는 Ubuntu와 ROS를 실행하는 Raspberry Pi 3B가 있습니다. 라즈베리는 WiFi와 ssh를 통해 외부 컴퓨터에서 액세스하여 로봇에 명령을 내릴 수 있습니다. ROS 프로그램은 Kinect를 사용하여 주행 거리 계산, 탐색 계획 및 매핑을 수행합니다. Raspberry Pi는 Adafruit Motor Shield를 통해 PID로 두 모터를 제어하는 ​​Arduino에 속도 명령을 보냅니다. 인코더의 값을 읽고 각 모터의 속도를 계산한 다음 주행 거리 계산을 위해 값을 Raspberry로 다시 보냅니다. Arduino와 Raspberry Pi는 USB로 연결되며 Arduino 프로그램은 ROS 노드 역할을 합니다(자세한 내용은 rosserial 참조).

좋은 Arduino로 정착하기 전에 여러 유형의 Arduino를 사용했습니다. 처음에는 기본 Arduino Uno를 사용했지만 인코더 값을 읽을 수 있는 충분한 인터럽트 핀이 없었습니다(Arduino에서 그렇게 하는 가장 좋은 방법). 속도와 정확도는 제한적이었습니다. 다른 프로그래밍 트릭을 사용하여 작동하도록 해야 했기 때문입니다. Arduino Leonardo를 사용해 보았지만 제한 요소는 메모리였고 결국 Arduino Mega 2560으로 전환해야 했습니다. 이제 새로운 기능을 추가할 수 있는 메모리와 핀이 많이 남아 있기 때문에 가장 축복입니다.

Kinect 360은 처음부터 프로젝트의 일부였습니다. SLAM(Simultaneous Localization And Mapping)을 하고 싶었지만 라이다에 많은 돈을 들이지 않았기 때문입니다. kinect는 기본적으로 25€ 3D 카메라입니다(물론 Hokuyo와 같은 정확도는 기대하지 마십시오). SLAM에 필요한 깊이 스캔 외에도 컴퓨터 비전에도 사용할 수 있으며 가속도계와 마이크가 있습니다. 정렬. 이 모든 것이 프로젝트의 다음 단계에 유용합니다.

2개의 DC 컨버터가 전압을 변환하는 데 사용됩니다. 모터는 배터리 전압(대략 11.1v)으로 직접 작동합니다. 명령 부분(Raspberry Pi, Arduino 및 인코더 포함)은 배터리에서 변환된 5V에서 실행됩니다. Kinect에는 12v 안정화 전압이 필요하며 변환기도 배터리에서 이를 제공합니다.

소프트웨어

소프트웨어 부분에서는 ROS Kinetic을 사용했습니다. 내가 실제로 쓴 유일한 노드는 "nox_controller"입니다. 그의 이름은 실제로 암시하지 않지만 Arduino 데이터(모터 속도)에서 주행 거리를 계산하는 데 사용됩니다. 계산에 사용된 모델은 "On Differential Drive Robot Odometry with Application to Path Planning" 논문에서 찾을 수 있습니다. 공분산 행렬은 주행 거리에 제공되지만 현재 사용되지는 않습니다(그러나 주행 거리에 IMU를 통합하는 경우 유용할 것입니다).

아두이노에서 모터 제어는 PWM을 통해 이루어집니다. PID는 각 모터 속도를 관리해야 하지만 PWM/모터 속도 비율이 매우 선형이기 때문에 속도의 직접 명령으로 좋은 결과를 얻었고 지금은 PID를 비활성화했습니다. 올바른 PID 구현 및 보정이 진행 중이더라도 걱정하지 마십시오.

자세히 보기:녹스 – 집 방황 로봇(ROS)


제조공정

  1. Arduino+Raspberry Pi 로봇 플랫폼을 만드는 방법
  2. Raspberry Pi 및 Bridge Shield를 사용하는 로봇
  3. 라즈베리 파이 CD 상자 로봇
  4. ANDY:다목적 "인간형" 로봇
  5. 구르는 알람 로봇
  6. Minecraft 크리퍼 로봇 제작
  7. JQR 4족 자율 로봇
  8. 아르키메데스:AI 로봇 올빼미
  9. EMAR Mini – 긴급 지원 로봇
  10. 라즈베리 파이를 사용하는 Wi-Fi 제어 로봇