2016년 7월 12일 화요일

Ardupilot 드론 Mission Planner 에러 메시지 확인, 해결 방법 및 테스트

Arducopter(아두콥터) / Ardupilot 호환 DIY 드론을 운용하다보면, 원인을 알기 어려운 에러와 마주치는 경우가 있다. 이 글에서는 에러 메시지를 확인하는 방법과 드론 암(arm) 테스트하는 방법을 간단히 정리한다.

3DR과 같은 Ardupilot 호환 드론의 경우 에러가 발생했을 때, 드론의 LED 점멸이 다음과 같이 발생한다.


점멸 패턴에 따라 에러 유형을 알려준다. 자세한 내용은 해당 드론 메뉴얼을 살펴보아야 한다.

LED 점멸만 보고 원인을 정확히 알기 어려울 때는 노트북에 미션 플래너(Mission Planner) 프로그램을 설치하고, 드론 제어 컴퓨터의 USB와 노트북을 연결하여, 미션 플래너를 통해 확인해 보아야 한다.

노트북 Mission Planner와 드론 Ardupilot 컴퓨터 간 USB 연결 상태


참고로, 현재 시점에서 윈도우 10 운영체제 기반 실행 시 드론 제어 컴퓨터가 인식되지 않는 경우가 있다. 본인은 윈도우 7에서 테스트해 보았으며 정상 연결이 되었다. 아울러, 우분투나 맥 용으로 개발되지는 않았으며, 현재 프로젝트 진행 중이므로, 곧 릴리즈 될 것이라 생각한다.

다음은 미션 플래너로 확인한 Disarm 에러 메시지 중 하나이다.


이는 Pre-Arm Safety Check 에러로, 드론 운영의 안전을 위해, 드론 암이 회전하기 전 안전 체크를 통해, 문제 발생 전 원인을 알려주는 메시지이다.

메시지의 상세 내용은 다음 링크로 확인할 수 있다.

앞의 그림에 표시된 에러는 컴파스(Compass) 방향이 잘못 설치되었음을 알려주는 메시지이며, 관련 파라메터를 조정하거나, 잘못 설치된 컴파스 방향을 다시 설치하면 된다.


이제, 에러 메시지를 확인해 가며, 문제를 해결하였으면, 암 모터 테스트를 위해, 미션 플래너에서 INITIAL SETUP > Wizard > Optional Hardware> Motor Test 메뉴를 선택한다.




암 모터 테스트 하기 전에 모터 프로펠러와 걸릴 수 있는 물체는 멀리 치운다. 회전 시에 절대로 프로펠러를 손으로 잡으려 하면 안된다.

이제, 적당히, Throttle % 를 설정하고, 모터 각 버튼을 클릭하면, 다음과 같이 정상 암 모터가 정상 회전하는 것을 확인할 수 있다.




2016년 7월 11일 월요일

드론 기반 FPV(First Person View) 및 GoPro 영상 기반 3차원 이미지 스캔 테스트

이 글에서는 드론 기반으로 FPV(First Person View) 및 GoPro 영상 기반 3차원 이미지 스캔 데이터 취득 테스트 결과를 간략히 정리한다.

1. 개요
드론을 기반으로 한 영상 취득 및 처리 어플리케이션은 이미 다양한 곳에서 응용되고 있다. 특히, 사람이 직접 하기 힘든 작업들을 드론이 대신 해 줄 수 있다는 장점이 많은 어필을 하고 있는 상황이다.

이런 배경에서, 사람이 직접 영상을 취득하기 어려운 높은 높이의 MEP(기계 설비) 정보를 획득하기 위해, 필요한 드론 기술을 파악하기 위해, 본 테스트를 진행해 보았다.

2. 개발 및 설정
드론은 3DR IRIS를 활용하였다. 영상은 GoPro 4를 사용하였으며, GoPro를 제어하기 위해, Tarot 짐벌을 부착하였다. 이와 관련된 개발 내용은 다음 링크와 같다.

 
GoPro 영상 취득 및 FPV 테스트

3. 테스트
다음은 테스트 영상이다.

드론 기반 FPV(First Person View) 및 GoPro 영상 취득 테스트

다음은 드론으로 부터 취득한 영상들이다. 간격은 초당 3프레임으로 설정하여 테스트하였다.



MEP 설비 이미지 취득 모습(한국건설기술연구원)

3. 3차원 이미지 스캔 데이터 획득
앞서 획득한 영상을 이용해, 3차원 이미지 스캔 데이터를 획득할 수 있다. 다음은 Pix4D를 이용해 GoPro 이미지 데이터를 3차원 포인트 클라우드로 변환한 과정이다. 참고로, Pix4D이외에 Context capture 등 상용 SW를 통해서도 이런 변환을 처리할 수 있으며, Visual SFM, Open Drone Map 등 오픈소스를 이용해서 3차원 포인트 클라우드를 획득할 수 있다. 

1. 드론 촬영 이미지 입력

2. 좌표 시스템 설정

3. 모델 도메인 설정

4. 각 이미지에서 고유한 피처(feature. 특징점)를 추출하고, 서로 매칭함




5. 각 이미지 정합 결과 확인




 6. 3차원 포인트 클라우드 생성



7. 3차원 포인트 클라우드 확인 


앞의 결과물과 같이 큰 무리가 없이 3차원 포인트 클라우드를 획득할 수 있었다. 다만, 데이터 생성 시간이 LiDAR에 비해 오래 걸리고, GPS 정보가 없을 경우, 스케일을 별도로 맞춰줘야 하는 등의 문제가 있다. 참고로, 정밀도가 LiDAR에 비해 떨어져, 이에 부합하는 유스케이스를 적용하지 않으면 문제가 생길 수 있다.



4. 결과

테스트 결과 다음과 같은 잘 알려진 장점에 비해 문제점을 발견할 수 있다.

장점은 다음과 같다.
1. 사람이 접근 불가한 지역(높은 고도, 위험 지역 등)에 대한 고해상도 영상 이미지 취득이 가능하다.
2. 짐벌을 이용해 획득이 필요한 영상을 편리하게 얻을 수 있다.
3. FPV를 이용해 드론의 주변 영상을 원격으로 확인할 수 있다.
4. 취득된 영상을 이용해, 비전 분석하거나, 3차원 포인트 클라우드를 획득해 다양한 응용을 할 수 있다.

문제점은 다음과 같다.
1. 짧은 배터리 시간
드론 배터리 시간은 보통 20분 정도이다. 특수하게 제작된 드론의 경우, 한시간 정도 체공이 가능하나, 배터리가 커짐으로 인해, 전체적으로 드론 크기도 커지고, 드론 가격이 비싸지며, 운영자 인원수 및 유지보수 비용도 늘어난다.

2. 불완전한 근접 비행과 충돌 위험
MEP 설비를 근접 촬영하기 위해 3미터 가까이 까지 대상물을 접근 시켜 보았으나, 주변 물체와 부딧힐 가능성이 커서 드론 제어가 쉽지 않았다. 드론을 호버링 하더라도 1~2미터 정도 좌우로 움직이는 것은 보통이다. 바람이 불거나 고도가 높아질 수록 사람이 정확한 위치를 제어하는 것이 더욱 어려워진다. 

3. 보기 어려운 영상 스크린 화면
한낮에 FPV 스크린을 보며 운전하기는 쉽지 않다. 태양 빛이 너무 밝고 스크린에 반사되어, 영상 스크린을 확인하기가 매우 어려웠다. 

4. 통합 관리 어려움
드론을 운영하는 목적에 따라 관련 영상, 제어, 센서, 배터리 등이 함께 모니터링 운영 관리될 필요가 있다. 이들 중 어느 하나라도 문제가 있다면, 애써 드론을 띄웠는 데 헛수고가 된다. 개별적으로 확인하고, 모니터링하는 것은 매우 어렵다. 

5. 영상 및 이미지 미세한 흔들림
짐벌을 장착하였음에도 불구하고 영상 및 이미지의 미세한 흔들림이 있을 수 있다. 이런 경우, 영상에서 3차원 포인트 클라우드를 취득할 때 노이즈가 될 수 있다. 

이런 문제점들은 점진적으로 개선되어 나가겠지만, 현재로써는 드론기반 유스케이스는 한계가 많은 것이 사실인것 같다. 드론 기반의 유스케이스를 구현할 경우, 관련 기술적 요구사항 만족 여부를 확실히 확인하고 시스템을 구현할 필요가 있어 보인다.






2016년 7월 8일 금요일

3DR X8+ 드론 기반 센서 데이터 원격 취득 테스트

3DR X8+ 드론을 기반으로 간단하게 스캔 테스트를 해 보았다. 다른 일들이 갑자기 생겨 원래 계획된 실험 계획보다 늦은 밤에 테스트를 해 보았다.

실험 결과를 간단히 기록한다.

스펙은 다음과 같다.
  • 3DR X8+
  • RGBD 
  • TK1
  • Open CM 9.04
  • 다이나믹셀
  • ROS
  • WiFi
  • Bluetooth
메뉴얼은 다음 링크를 참고한다.
참고로 3DR 드론이 제대로 동작하지 않을 경우, 다음 에러 메시지를 참고한다.


다음은 페이로드 테스트 영상이다. 테스트 페이로드는 1.2kg무게이며, TK1, XTion, 다이나믹셀, OpenCM, 배터리 2개, 케이블, 박스를 포함한 무게이다.

1차 페이로드 테스트

2차 페이로드 테스트

페이로드 테스트는 1, 2차에 걸쳐 진행되었으며, 모두 큰 문제가 없이 조정이 가능했다. 테스트 장소는 잔디밭과 플랜트 근처 부지(대략 가로 22미터, 세로 15미터)였다.

다음은 센서 데이터 취득 테스트 영상이다.


테스트 결과, 3DR 드론은 1.2kg 정도의 페이로드는 충분히 들어올릴 수 있었다. WiFi 기반 센싱 데이터 취득은 20미터 거리에서는 큰 문제가 없었다. 마운팅된 센서를 조정하는 Bluetooth 통신은 10미터 정도 거리 내에서 정상적으로 동작했다. 스캔 거리는 5~6미터까지는 데이터 취득이 가능했다.

다만, 주변에 사물이 많은 장소에서 드론을 원하는 관찰 대상물에 정확히 위치하고, 조정하는 것은 쉽지가 않았다. 혼자서, 스캔 데이터 확인, 마운트 모터 조정, 드론 조정, 실험 영상 촬영, 노트북의 ROS 명령 등을 한다는 것은 쉽지 않았다. 또한, 정확히 스캔 대상물을 향하여, 마운트 모터를 제어하는 것 자체도 쉽지 않았다. 데이터 취득을 위해 드론을 낮게 비행시킬 때, 주변에 사람이 있으면 매우 위험하다.

다음은 개선점이다.

1. 최소 2인 1조 드론 운용: 드론 조정자, 데이터 취득 엔지니어
2. 안전 관리 필요
3. 드론 가드 등 안전장치 장착 필요
4. 작업시간을 고려해 배터리 미리 준비
5. 스캔 대상에 대한 짐벌 마운트 자동 추적 기능 필요
6. 드론 실험을 위한 별도 장소가 필요

드론/로버 기반 원격 센서 데이터 취득 시스템 개발 시 기술, 고려사항 및 드론 활용 시 한계

이 글은 무인 원격 제어가 가능한 드론 및 로버와 같은 로봇 기반 인스펙션(inspection) 및 데이터 취득 시스템 개발 시 고려사항을 도출해 보기 위해, 관련된 각 기술에 대한 지금까지의 스터디와 테스트 결과를 정리한 것이다.

드론이나 로버와 같은 로보틱스 기술은 사람이 데이터를 취득하기 어려운 환경, 반복적인 데이터 취득 작업에 효과적임은 분명하다.


다만, 이 기술을 적용할 때 어떤 한계점과 문제점이 구체적으로 있는 지 확인할 필요는 있다. 기술적인 한계내에서 시스템을 설계하고 응용하는 것은 매우 중요하다. 이를 확인하지 않고, 기술을 응용한다면, 기술이 제대로 활용되지 못하고, 오히려, 문제를 일으킬 수도 있다.

아울러, 언론에서 말하는 드론 기술에 대한 장비빛 미래가 현실에서 실제로 유용한 것인지 궁금하였다. 이에 대해서도 개발하면서 느낀점을 바탕으로 그 한계를 함께 정리하였다.

1. 개요
드론이나 로버는 다양한 기술이 활용되고, 시스템을 통합하는 것이 그리 쉽지 않다.
각 기술을 하나의 완전한 작품처럼 통합하는 데 집중하기 보다, 각 기술의 장단점을 파악하고, 향후, 통합된 완전한 무인 인스펙션 및 데이터 취득 시스템을 만들 때 어떤 점을 고려해야 하는 지를 도출하는 데 초점을 맞추었다.

2. 로보틱스 기술
드론 및 로버와 같은 기술은 기본적으로 로보틱스 기술이다.

로보틱스 기술의 중요한 부분들은 로봇을 구동하는 액추에이터, 액추에이터 컨트롤러, 무선 통신 제어 및 데이터 송수신, 센서 및 데이터 취득, 로봇 제어 컴퓨터, 마운트 프레임, 로봇 운영 시스템, 비전 기술 등이다.

액추에이터는 로봇의 동작을 담당한다.


액추에이터는 모터 드라이버같은 컨트롤러를 통해, 제어할 수 있다.


원격으로 로봇을 제어하기 위해서는 무선 통신 장치가 필요하다.

로봇을 통해, 데이터를 취득하기 위해서는 센서가 필요하다.
 

로봇의 각 부분을 제어하고, 조정 장치와 통합적으로 통신하기 위해 로봇 제어 컴퓨터와 운영 체계가 필요하다.

로봇이 자율적으로 움직이거나 장애물을 회피하려면 비전기술이 필요하다.


3. 상세 기술 내용
각 기술에 대한 특성을 확인하기 위해, 다음과 같이 스터디 및 테스트를 해 보았다.

드론 페이로드 2차 테스트 (1.2 kg)

로버 기반 원격 데이터 취득 테스트

각 기술 부분에 대한 상세한 내용은 다음 글을 참고한다.

1. 액추에이터

로보티즈 액추에이터 및 OpenCM 제어

OpenCM 기반 엑추에이터 제어

Dynamixel XM-430 설정

ROS기반 액추에이터 제어


2. 액추에이터 컨트롤러
자율제어를 위한 PID 제어 개념 및 개발 방법
로봇암 움직이는 기구학/역기구학과 ROS MoveIt
저렴한 모터 드라이버와 RF 기반 로봇 개발 방법
OpenCM 기반 엑추에이터 제어
Dynamixel XM-430 설정
RF 리모컨 기반 서보 모터 제어
로보티즈 액추에이터 및 OpenCM 제어
MX-64 / MX-28 액추에이터 기반 센서 마운팅 용 로봇암
아두이노 기반 6 DoF 로봇암 조립 방법 및 제어
다이나믹셀 TTL 전원 케이블 작업
ROS기반 액추에이터 제어
Gazebo 설치 방법

3. 무선 통신 제어 및 데이터 송수신
무선 조정용 FlySky TH9X
센서 데이터 무선(WiFi, Bluetooth) 통신 방법
블루투스 무선 통신 활용 OpenCM 기반 로봇암 제어
라즈베리파이 WiFi 동글 사용기

4. 센서 및 데이터 취득
IMU 센서 사용법
picamera 사용기
아두이노/ROS/라즈베리파이 기반 RpLiDAR 활용
상보필터(Complementary Filter) 기반 IMU 값 보정
RPi 기반 IMU 센서 제어
RPi camera ros node 개발
드론 고프로 영상 원격 전송 모니터 설정
DIY 드론 기반 카메라 원격 영상 촬영 방법

5. 로봇 제어 컴퓨터
대용량 센서 데이터 취득 및 처리에 적합한 임베디드 개발 보드
TK1 (Tegra K1) 스펙과 배터리
TK1 기반 ROS, 센서, 무선 및 배터리 설치
아두이노 입출력 확장 보드

6. 마운트 프레임
드론 카메라 짐벌(gimbal) 마운팅 및 오작동 문제 해결
메카넘휠(mecanum wheel) 활용 로버

7. 로봇 운영 시스템
ROS 요약 정리
ROS 요약 상세 정리 2차
라즈베리파이 우분투 14.04 기반 ROS Desktop 설치 요약
라즈베리파이2에 ROS 이미지 설치하기
아두이노/라즈베리파이와 ROS 연동하기
라즈비안 기반 ROS 설치
오드로이드(ODROID) XU4 기반 ROS 설치

8. 비전
3D 포인트 클라우드 SLAM
저렴한 3D 스캔 장비를 이용한 3D 포인트 클라우드 취득 및 가시화
Photogrammetry 기반 3D 포인트 클라우드(point cloud) 추출 방법
2차원 비전 기반 객체 인식
3차원 비전 기반 객체 인식
ROS기반 비전 기반 평면 객체 인식
ROS package 프로그래밍
ROS 기반 다중 객체 비전 인식
다중 실린더(Cylinder) 형상 추출
곡률 기반 형상 세그먼테이션
유클리드 거리 기반 3차원 포인트 클라우드 세그먼테이션
3차원 포인트 클라우드 스캔 기반 객체 추적
OpenCV기반 객체 인식
ROS기반 OpenCV 개발
OpenCV 3.0 설치 및 파이썬 예제 실행
비전 기반 객체 인식 레퍼런스

이와 더불어, 고려사항을 도출해 보기 위해, 드론과 로버를 다음과 같이 개발해 보고, 관련된 벤치마킹 테스트를 해 보았다.

1. 드론
Erle copter 드론과 Mission Plennar 연결 / 시운전
미션 플래너를 이용한 Erle-copter 드론 캘리브레이션
Arducopter기반 3D Robotics IRIS 드론과 Mission Planner 간 연결 / 설정 / 시운전 테스트
실내에서 드론 테스트 방법

2. 로버
원격 야외 이미지 스캔용 캐터필터 타입 로버 개발
다양한 센서 마운팅이 가능한 아두이노 기반 무선 제어 4WD 메카넘휠 로버 개발
원격 센서 데이터 취득을 위한 무선 제어 기반 휠 타입 4WD 로버 개발
2015 mini DRC 재난구조 로봇의 비전인식 알고리즘 정리 및 고려사항 도출

3. 벤치 마킹 테스트
DJI 펜텀 3 드론 테스트
펜텀 3 프로페셔널 사용기


4. 개발 후기
로봇 기반 인스펙션 장비에 필요한 것들은 매우 많다. 앞의 기술들은 하드웨어, 통신, 소프트웨어로 크게 구분할 수 있다.

1. 하드웨어 
센서를 부착하기 위해서는 마운트될 프레임이 필요하며, 프레임을 원하는 지점으로 움직이게 하는 모터와 같은 액추에이터도 필요하다. 액추에이터의 속도, 방향을 제어하기 위한 모터 드라이버 같은 제어기도 구입해, 액추에이터와 적절히 연결하고, 액추에이터를 제어하는 프로그램도 개발해야 한다.

이제, 센서를 프레임에 적절히 부착해야 한다. 센서와 프레임 부착을 위해, 짐벌과 같은 로봇암처럼 생긴 마운트 장치를 별도로 개발해야 한다. 그래야, 센서가 원하는 지점을 바라보고, 데이터를 취득할 수 있다. 이 역시, 제어기가 필요하며, 제어 관련 코딩을 해야 한다.

다양한 센서를 프레임과 마운팅하는 과정도 쉽지는 않은데, 프레임이 알뉴미늄으로 되어 있는 경우, 그마나 가공 및 부착이 용이하고, 재료가 철이나 플라스틱일 경우, 가공이 어렵거나, 강도가 좋지 않거나 하는 문제가 있어, 센서나 로봇 암 등을 단단히 부착하기 쉽지 않았다. 처음부터 마운팅 가능한 프레임을 디자인해, 프레임 가공 업체에 맡겨도 좋으나, 이 경우 비용과 시간이 많이 들어가서, DIY 프레임을 사는 것 보다 효과적이다. 그러므로, 특별한 경우가 아니라면, 범용 프레임을 사용하는 것이 좋다.

센서마다 장치와 연결하고, 데이터를 취득하는 방식은 다양하다. 센서의 데이터시트(스펙)을 확인해 개발해야 한다.

이런 하드웨어 연결, 설정, 개발 과정은 매우 노동집약적이다(그렇다고, 단순한 작업이란 뜻은 아니다. 각 부품 스펙에 맞게 개발해야 하므로 생각할 것이 많고 복잡하다). 선 하나만 잘못 연결해도, 부품이 타버리거나, 배터리가 불타버릴 수도 있다.

2. 측위
드론을 사람이 직접 조정해 위치를 제어 한다는 것은 쉽지 않다. 정확한 드론의 위치를 파악하기 위해서는 측위 기술이 필요하다.

안정적인 호버링으로 유명한 DJI 드론의 경우, 1~2미터 흔들리는 것이 보통이다. 시야가 가려진 상황의 비행, 고공 비행, 바람이 부는 환경적인 이유 등으로 위치를 제어하는 것은 더욱 쉽지 않다. 이런 이유로 드론의 위치 제어는 GPS를 이용한다. Mission Planner 같은 드론 운영 시스템은 미리 비행 경로를 입력하고 드론을 제어하는 기능이 있다. Ardupilot과 같은 많은 드론 비행 시스템은 경로를 미리 입력받아 비행하는 기능을 지원한다.

문제는 GPS가 끊어지는 상황에서는 속수무책이라는 것이다. 이 때 드론은 비행 불능상태에 빠지고, 제어가 불가능해 진다. 이를 해결하기 위해, 카메라, LiDAR, UWB기반 비콘 등을 사용한 실내 측위, 초음파 센서를 이용한 비행을 연구하고 있으며, 최근, 딥러닝을 기반으로 드론 비행 방법을 학습하는 기술들이 개발되고 있다.

3. 통신
원격으로 데이터를 주고 받아야 하니, 무선 통신이 필요하다. 주로 쉽게 사용할 수 있는 것들은 블루투스, WiFi이다. 적용하기 쉬우나, 문제는 통신거리가 짧다는 것이다. 10~20미터 정도 거리에서 데이터가 취득된다. 만약, 콘크리트 벽 등으로 꺽여진 음영영역에 무선 송신기나 수신기가 있다면, 통신 거리는 급격히 짧아지는 현상이 있다.

WiFi, 블루투스 통신이 가끔씩 끊어지기도 한다. 이런 경우, 다시 페어링하거나 해당 통신 프로그램을 구동해야 한다.

3차원 이미지 스캔 데이터와 같이 대용량 데이터 송수신을 해야 할 경우, 무선 네트워크 대역폭이 넓어야 한다. 이때는 블루투스와 같은 장비는 사용하기 어렵다. 본인의 경우에는 안테나가 4개 달린 WiFi 공유기를 중계기로 사용해, 원격으로 데이터를 취득했었다.

4. 소프트웨어 
하드웨어, 통신도 중요하지만, 이들을 통합적으로 제어하는 소프트웨어는 사람이 장비를 조자하는 데 영향을 미치는 편의성에 핵심 요소 중 하나이다.

개별적으로 많은 센서, 액추에이터를 제어한다는 것은 사실상 불가능하다. 그러므로, 이런 장치들을 통합적으로 제어할 수 있는 소프트웨어가 필요하고, 공통적인 기능들은 소프트웨어 개발 시 API(Application Program Interface)로 제공해 주는 로봇 운영 체계(Robot Operating System)이 필요하다. 널리 알려져 있는 ROS 로봇 운영 체계 커뮤니티를 확인해 보면, 수 많은 센서와 액추에이터 장비 드라이버 및 라이브러리를 제공하고 있는 것을 알 수 있다.

이를 바탕으로 통합적인 로봇 장비 운영을 할 수 있고, 안정적인 제어를 할 수 있다.

소프트웨어 개발은 사실 사용자 편의성과 밀접한 관계가 있어, 이를 만족하려면 매우 많은 노력이 든다. 본 스터디에서는 개발 시간이 부족한 관계로 최소한의 기능에만 만족해야 했었다. 앱 개발 보다 가능한 기존에 있는 시리얼 통신 터미널을 이용하는 식이다. 그럼에도 불구하고, ROS를 익히고, 활용하는 데 많은 노력이 들어간다.

매틀랩이나 MFC와 같은 툴을 이용해 비전을 개발하는 것은 쉬우나, ROS 프로토콜에 맞게 개발하는 것은 또 다른 공부고, 고려해야 할 것이 많다. ROS는 로봇을 이루는 센서, 부품들이 네트워크 통신을 한다는 가정하에 개발된 플랫폼이라, 이에 맞는 방식으로 모든 것을 개발해야 한다.

비전은 매우 중요하다. 로봇을 제어할 때 카메라로 부터 들어오는 이미지가 없으면, 원격으로 제어하기 어려울 것이다. 인스펙션을 할 때 2차원 이미지, 3차원 이미지를 획득하고, 분석하는 기능은 비전 기술을 적용해 해결할 수 있다. 다만, 비전 인식의 결과가 센서에 매우 의존적이고, 캘리브레이션을 하지 않으면 정확한 값을 얻기가 어렵다.


5. 로봇 기반 인스펙션 시스템 개발 시 고려사항
고려할 부분은 매우 많으나, 그 중 핵심적인 것만 추리면 다음과 같다.

1. 실험 공간 
본인의 경우, 개발한 로버나 드론을 테스트할 경우, 회사의 공터, 건물 지하 설비실, 잔디받 등을 이용했다. 이런 장소는 사람이 별로 없어 안전사고가 날 우려가 적고, 드론이 불시착하더라도 장비가 크게 망가지는 경우가 별로 없다. 하지만, 이 방식은 어쩔수 없는 경우 적용되는 것이다.

테스트하다가 배터리가 방전되는 경우, 그날 하루는 실험을 더 이상 하기 어려워진다. 예를 들어, 드론의 경우 보통 15분 정도 실험하면 배터리가 방전된다. 배터리 충전 작업에만 최소 2시간 이상 걸린다. 물론, 전원이 있는 곳까지 드론이나 로버를 옮겨야 하기 때문에, 회사 내에서라 하더라도 왕복시간에만 2시간이 걸리기 일수다. 로버나 드론에 배터리를 연결하고 부팅을 해야 하는 데, 이 준비 시간도 만만치 않다.

실험 공간은 실험 시간을 최대화하고 불필요한 준비 시간을 줄여준다. 예를 들어, 실험 공간에는 전원이 가까이 있고, 드론을 놓고 수리할 장소 및 부품들이 가까이 있어야 한다. 천장이 높아야 하고, 그물망이 있어, 드론이 벽과 충돌하지 않고 손상되지 않도록 보호해 줘야 한다. 조명도 충분히 밝아야 한다. 어두우면 사고가 나기 쉽다.


2. 안전 문제 
안전 문제도 있다. 본인의 경우, 드론 테스트를 하다가 열번 이상 추락해 보았는 데, 드론이 높게 떠 있을 때 추락하면, 본인은 물론, 다른 사람도 매우 위험하다. 높을 때는 드론이 바닥 어느 지점에 떨어질 지 전혀 감이 오지 않는다. 드론은 호버링하더라도 가만히 있지 않는다. 1~2미터 정도 움직이는 것은 보통이다. 드론을 조정하는 것은 마치 얼음위에서 스케이트를 타는 것 같은 느낌이다. 제어량을 너무 크게해, 한쪽 방향으로 가속되면, 멈추기 어렵고, 벽에 부딧히기 쉽다. 이런 이유로, 안전 그물망이 있는 실험 공간이 필요한 것이다.

실험 공간에는 안전모, 안전경, 장갑 등을 비치해, 드론이 조정자를 타격하더라도 부상을 입지 않도록 주비해 놓는 것이 필요하다. 드론은 앞뒤를 구분하기 어려워, 반대로 조정하는 경우가 많다. 이를 착각해 사고를 당하는 경우가 있다. 그러므로, 안전 용구를 입고 실험하는 것이 좋다.
실험 장소 내에서는 항상 사고의 위험이 있다. 테스트 중 드론이 떨어지거나 벽과 충돌하는 일은 비일비재하다. 그러므로, 사람이나 재산상 손해가 생길만한 것들이 없어야 한다. 만약, 필드에서 테스트할 경우, 이런 부분을 통제하기 어려우므로, 보험 등 안전장치를 드는 것이 좋다.

필드 테스트는 사람이 진입하지 않도록 통제선으로 표시하는 것이 좋다. 부득이 한 경우, 사람이 없는 시간에 실험하도록 한다.

전기를 사용하기 때문에 주의해야 할 것들이 있다. 배터리 충전은 항상 화재를 대비해, 배터리팩안에 넣어서 충전한다. 예를 들어, 리튬이온 배터리는 실수로 양극이 합선될 경우, 폭팔하거나 불이 날 수 있으며, 잘 꺼지지도 않는다. 모터 드라이버는 큰 전압을 사용하기 때문에 전선 연결 시 주의하지 않으면, 보드가 타버릴 수도 있다.


3. 실험 방법
처음부터 무리한 필드 테스트는 하지 않는다. 각 센서, 부품 동작을 한단계씩 실험해야 한다. 특히, 드론의 경우, 무리한 테스트를 하다가 회전하는 프로펠러에 칼처럼 배일수도 있어, 드론을 묶어 놓고, 기능별 테스트하는 것을 권장한다. 로버는 휠이 바닥에 접하지 않게 고정대 위에 올려 놓고 테스트 작업을 한다.

실험 시 부득이 한 경우가 아니라면, 최소 2인 로봇 조정자 및 데이터 취득 엔지니어가 있어야 한다. 혼자서 로버나 드론이 제어 불능 상태에 빠지면 대처하기가 어렵다.

실험 시나리오를 미리 예상해, 실험 단계, 실험 준비물을 정리해야 한다. 애써서 무거운 실험 장비를 현장에 가져갔는 데, 배터리를 두고 왔다던지, 배터리를 충전하지 않았다면, 아까운 시간만 낭비한다.

4. 오픈소스 기반 소프트웨어 개발
비전, 로봇 운영 등을 위한 소프트웨어 개발 시 가능한 오픈소스를 이용한다. 모든 것을 개발하기 위해서는 너무 많은 시간이 들어, 원래 하려는 일을 못할 수 있다. 상용 라이브러리는 가능한 사용을 피한다. 회사가 해당 라이브러리 개발을 중지하면, 애써 개발한 시스템을 개선하기 매우 어려워지고, 결국 무용지물이 될 가능성이 크다. 최악의 경우 소스를 직접 수정하고 빌드할 수 있는 오픈소스 사용을 권장한다.

모든 센서나 장비를 모니터링하고 제어할 수 있는 통합 관제 프로그램을 개발하면 좋다. 그렇지 않으면, 각 센서나 장비를 제어하기 위해 별도의 통신 채널과 디바이스가 필요하고, 많은 운영자가 필요하다.

5. 오픈소스 기반 하드웨어 개발
앞의 설명과 이유가 같다. 블랙박스와 된 상용 하드웨어를 사용하면, 개발사가 계속 유지보수 해 주지 않으면, 프로젝트 영속성에 문제가 생긴다. 아두이노, 라즈베리파이와 같은 오픈소스 보드를 사용하는 것이 좋다. 이런 보드는 라이브러리도 오픈소스로 제공되고, 수많은 개발사례가 있어 참고하기도 매우 좋다.

하드웨어는 배터리, 부품 등을 탈착하기 편리하게 디자인하고, 배선하는 것이 좋다. 의외로 이런 부분에서 테스트 시간을 많이 빼앗긴다.

하드웨어는 개발 목적에 맞도록 개발해야 한다. 센서, 배터리 등 무거운 장비를 마운트해 움직일 수 있는 충분한 페이로드가 있어야 한다. 또한, 인스펙션 하고자하는 영역으로 진입하기 용이한 구조의 기구가 적용되어야 한다. 예를 들어, 야외에 메커넘 휠을 사용하기 어렵고, 실내에 시끄러운 캐터필러 타입을 사용하기 어렵다. 실외에는 드론이 유용할 수 있으나, 실내에서는 제어가 어렵고 매우 위험할 수 있다.

로봇암과 같은 액추에이터를 사용할 때는 다른 하드웨어 기구부와 동작 시 간섭이 없는 지 확인할 필요가 있다. 간섭이 있으면, 모터가 망가지거나, 프레임 혹은 다른 부품이 망가질 수 있다. 애써 개발한 것을 다시 해야 한다면 참으로 김빠지는 일이 된다.

6. 캘리브레이션
센서, 액추에이터 동작, 비전 등의 장치는 적절히 캘리브레이션되지 않으면, 취득된 데이터의 결과를 신뢰하기 어려운 경우가 많다. 데이터 값을 응용하기 전에 그 응용목적에 맞는 데이터 신뢰성이 확보되었는 지 확인할 필요가 있다.


7. 통신문제
무선 통신이 안정적이라고 생각하면 안된다. 가끔 끊어지기도 하고, 주변에 무선 장치들이 많으면 간섭이 있어, 문제가 생길 때도 많다. 통신이 안되면, 로버의 경우 큰 사고가 나지 않으나, 드론의 경우 떨어지거나 제어 불능 상태로 사람이나 달리는 차와 충돌할 수도 있다.

만약, 먼거리의 신뢰성있는 통신이 필요하다면, 리피터와 같은 증폭기가 있는 무선 장비를 사용할 필요가 있다. 통신이 끊어질 수 있다는 가정하게 프로그램을 코딩해야 한다.


8. 테스트 데이터 기록 및 정리
테스트 한 데이터를 기록하고 보관하기 위한 별도의 준비를 하는 것이 좋다. 그리고, 테스트 과정을 가능한 캠코더 장비를 이용해 레코딩하는 것이 좋다. 레코딩된 영상을 확인하면, 실험 시 문제를 좀 더 잘 확인할 수 있고, 좋은 아이디어를 얻을 수도 있다. 시간이 지났을 때, 테스트한 기록은 큰 도움이 된다.


기타, 시간이 없더라도, 사용하는 센서, 부품, 장비, 데이터시트, 소프트웨어의 스펙과 메뉴얼을 잘 읽고 정리 요약해 놓는다. 마음이 급해 이것저것 먼저 조립하고, 연결하고, 개발하다보면, 동작이 안되거나 부품이 고장나 시간이 더 들어가는 경우가 비일비재하다. 특히, 국내에서 생산되지 않는 부품이 이런 식으로 고장나면 재구입에 몇 주가 걸릴 수 있어 낭패가 된다. 처음부터 잘 확인하고 개발하는 것이 좋다.

데이터를 취득할 때 센서 스펙을 잘 확인해야 한다. 예를 들어, 비전을 이용한 센서의 경우 조도가 매우 높거나, 대상물의 거리가 멀거나 할 경우 센싱이 제대로 안되는 경우가 발생할 수 있다.

이제 드론 테스트 및 활용 중에 느낀 문제점을 알아 보자.

5. 드론 활용 시 문제점

1. 배터리 용량 및 충전 문제
1kg 페이로드를 갖는 드론의 경우 4S 대용량 배터리를 사용하더라도, 체공시간은 20분에 불과하다. 유튜브 영상에서 사람을 태우는 드론을 확인할 수 있지만, 체공시간은 그리 길지 않다는 것을 확인할 수 있다.

배터리를 충전하는 것도 시간이 오래 걸린다. 1~2시간 정도는 기본이다. 이는 드론 실용화의 큰 제약사항이다. 드론 실용화 핵심은 배터리 용량 개선 및 충전 기술이 될 것이다.


2. 무선 통신 문제
무선 통신은 기본적으로 언제든 끊어질 수 있다. 끊어지면 제어 불능상태에 빠진다. 통신이 안되는 음영지역에는 별도의 중계기가 없는 한 제어가 불가능하다. 통신 간섭이 많은 곳에서도 통신은 끊어질 수 있다. 제어 통신하는 채널에 특정 통신 트래픽이 몰려도 통신은 불능이 되거나 속도가 매우 떨어질 수 있다. 이런 상태에서 드론은 운용하는 것은 힘든 일이다. 특히, 사람들이 무선 통신을 많이 사용하는 도시나 스타디움같은 곳에서는 통신 문제로 인해 드론이 오동작 할 수 있다.

무선 통신의 거리도 고려해야 한다. 별도의 중계기 없이 드론 제어는 1km정도이며, 이 거리에서 영상을 직접 전송하는 것은 쉽지 않다. 거리가 먼 곳에는 기존 통신망 중계기를 이용한거나 무선 신호를 증폭해 송수신해야 한다. 이는 별도의 비용을 야기한다.

3. 안전 문제
드론은 앞에서 언급한 문제로 제어 불능 상태일 경우, 언제든 사고로 이어질 가능성이 높다. 높은 고도에서 비행하는 물체가 제어 불능이 되면, 사람, 달리는 차, 건물 등과 충돌할 수 있고, 이는 인명 및 재산 문제가 발생하게 됨을 의미한다.

드론은 빙판위에서 균형을 잡고 있는 스케이트 선수와 비슷하다. 가속도를 잘 조정하지 않으면, 제어하고 있는 상태에서도 언제든 사고로 이어질 수 있다. 고속으로 회전하는 프로펠러는 칼날이나 마찬가지다. 완전한 제어가 안되는 상태에서 장난감이 아닌 드론을 사람이나 재산상 손해가 발생할 수 있는 곳에서 운용한다는 것은 매우 위험한 일이다.


4. 소음 문제
드론은 소음이 크다. 헬리콥터 정도는 아니더라도, 그에 준하는 소음이 발생한다. 아파트나 주민이 밀집해 있는 곳에서 드론을 이착륙한다는 것은 사람들의 불평을 야기할 수 있다.


5. 운영 비용 문제
드론은 저절로 혼자 날라다니지 못하고, 고장나거나 배터리가 떨어져도 스스로 고치거나 충전하지 않는다. 운영, 유지보수, 관리자가 필요하며, 이로 인해 부수적인 비용이 들어간다.

6. 마무리
지금까지 테스트 한 내용을 중심으로 로봇기반 원격 인스펙션 및 데이터 취득 시스템 개발을 위해 경험한 내용, 고려사항 및 문제점을 공유하였다. 스터디와 테스트를 통해 매우 많은 기술이 활용되고 있는 것을 확인할 수 있었다. 이를 통해, 현재 기술적 한계와 개발 시 고려사항을 도출해 보았다.

앞으로 이런 로봇 기술들은 우리 생활속에 좀 더 깊숙히 침투해 오겠지만, 기술 한계와 개발 범위 내에서 사용되지 않으면, 여러가지 문제를 일으킬 수도 있다. 이런 점을 고려해, 적절히 활용해야 할 것이다.