December 17, 2018

디바이스마트 미디어:

[28호] ICT 융합 프로젝트 – 재난 대비 및 인명 구조 무인 로봇

2014 ICT 융합 프로젝트 공모전

재난 대비 및 인명 구조 무인 로봇

(Disaster Preparedness and Life Saving Unmanned Robots)

글 | 광운대학교 한재승, 이경재, 김석현, 이강민

심 사 평
싱크웍스 로봇이 주행을 하지 않고 팔만 근거리에서 스마트폰을 이용하여 제어 가능한 작품인 것 같다. 인명 구조 로봇의 핵심 중 하나는 좋지 않은 환경에서 무선 통신을 잘 해서 로봇이 제어 가능하게 끔 하는 것이고 또한 로봇이 좋지 않은 환경에서 주행을 잘 할 수 있는 능력이 있어야 하는 것이다. 그 다음에 로봇 팔등의 제어가 필요할 것 같다.
JK전자 로봇의 팔과 기구부 설계도 잘 되어있고 구현된 작품의 성능도 최신의 ARM Processor를 이용하여 카메라 영상의 무선 전송까지 실제 구조 로봇이 갖추어야 할 기능들이 많이 구현되어 있다. 구조와 재난 복구를 위해 사람이 할 수 없는 일들을 로봇이 대체할 날이 머지 않은 것 같다. 여러 회사와 정부가 이러한 로봇 개발을 위해서 많은 연구와 투자가 이루어 지고 있는 것으로 알고 있다. 장래에 재난대비 인명구조 및 복구를 위한 무인 로봇 개발의 시작이 되는 작품으로 보이고 아주 잘 구현하였다.
뉴티씨 로봇의 제어를 실질적으로 구현하는 기술의 완성도 면에서 매우 높은 점수를 주었으며, 보고서의 경우에도 대체로 잘 작성되었다. 하지만 실질적으로 구현 시 로봇팔에 사용된 모터의 힘이 부족하여, 현재의 구조로는 팔의 쳐짐이 발생하여 정확한 위치 도달이 어려울 수 있을 것으로 생각된다. 동영상 링크에 있는 CNC로봇의 구조는 모터를 하나 더 보조하여 힘을 보태주고 있는 구조로, 또한, 다른 팔에 달린 모터들과 서로 약간 지지되는 구조로, 상호 보완되어 큰 문제 없을 것으로 보이지만, 현재 재난 구조 로봇에 장착된 부분은 그 중 하나를 떼서 만든 것으로 구조 변경이 좀 필요할 것 같다. 무엇을 들거나 작업할 때에도, 힘이 무척 부족할 것이다. 모터를 상위 버전으로 변경하는 것도 좋은 해결방향이 될 것이다. 하지만 근본적인 문제 해결을 위하여 팔에 쇼바와 같은 약간 기계적인 구조를 추가하여 주는 것도 좋겠다. 대략적인 구현조차도 쉽지 않은 기술을 구현하여 높은 점수를 받았으나 동작 동영상이 있었다면, 더 좋은 점수를 줄 수 있었을 것으로 생각된다. 동작 동영상이 다른 로봇의 것으로 보아 만들다 만 것으로 보여져서, 작품 완성도 점수는 낮게 주었다.

1. 작품 개요
현대 사회는 각종 첨단 산업의 발전과 기술의 발전으로 거대한 기계화, 대형화, 집중화 사회를 이루었으며, 생활 편리를 위한 전기와 유류가스, 원자력 등의 수요가 기하급수적으로 증가하였다. 이에 따라 화재나 재난 발생 시 유독가스 및 폭발 위험성으로 사람에 의한 화재 진압이 빠르게 진행되지 못하게 되며, 이로 인한 사회적, 경제적, 산업적 손실은 막대하다. 따라서 사람의 접근이 힘든 화재나 재난 발생 시 신속하고 효율적인 대응을 위해 우리 사회는 무인 로봇의 필요성을 느끼게 되었으며, 이러한 사회의 흐름에 따라 ICT 기술을 접목한 ‘재난 대비 및 인명 구조 무인 로봇’을 만들게 되었다.

2. 작품 설명
1. 주요 동작 및 특징
재난 대비 및 인명 구조 무인 로봇의 주요 특징으로는 두 개의 로봇 팔, 무한궤도 바퀴 및 실시간 영상 전송과 무선통신 제어이다.
로봇 팔은 네 개의 다이나믹 셀을 로봇 팔의 각 관절에 위치시켜 사람의 팔과 유사하게 혹은 0°~300°로 관절이 돌아가는 등 사람 팔 이상으로 움직일 수 있도록 설계하였다. 또 정밀한 작업을 할 수 있도록 팔 끝에 로봇 손을 달았다. 이러한 두 개의 로봇 팔로 인해 재난 발생 시 사고 현장에서 장애물을 치우거나 기계 장치를 조작할 수 있으며, 사람을 구조할 수도 있다. 또 하나의 주요 동작은 무한궤도 바퀴를 이용한 움직임으로, 지면에 닿는 면이 넓으므로 요철이 심한 도로나 진흙 바닥에서도 자유로이 달릴 수 있고, 모터의 회전 방향을 조정해 방향 전환을 자유로이 할 수도 있으며 재난 상황에서도 바닥의 장애물을 넘어 갈 수 있다는 것이 특징이다. 또 재난 대비 및 인명 구조 무인 로봇에 달린 USB WEB CAM을 통해 익스플로러가 열리는 컴퓨터나 스마트폰 등과 같은 기기로 실시간 영상을 받아 볼 수 있다. 이 모든 동작은 주변기기와의 호환성이 좋고, 다양한 오픈소스를 가지고 있으며, 실시간 소스코드 수정이 가능하고 하위 디바이스 제어가 간편한 운영체제인 리눅스를 이용해 와이파이와 블루투스로 무선 제어 하는 것이 특징이다.

① 로봇 팔

재난 대비 및 인명 구조 무인 로봇
첫 번째 사진은 로봇팔의 가장 기본적인 위치(=원점 좌표)이며, 두 번째 사진은 각각 X, Y, Z로 100mm 만큼 이동한 모습이다. 세 번째 사진은 정면에서 본 사진이다.
로봇 팔에 달린 로봇 손의 모습으로, 각각 최대한 잡았을 때와 최대한 벌렸을 때의 모습이다.

② 무한궤도 바퀴

재난 대비 및 인명 구조 무인 로봇 (2)
무한궤도 바퀴의 모습으로 좌측과 우측에서 본 모습이다.
바퀴에 연결된 DC모터의 회전 방향을 조절해 로봇의 이동 방향 조절이 가능하다.

③ WEB CAM을 이용한 실시간 영상 전송

재난 대비 및 인명 구조 무인 로봇 (3)
USB WEB CAM을 통해 본 영상을 컴퓨터와 스마트폰으로 받아 보는 사진이다. 첫 번째 사진은 WEB CAM의 외형 모습 사진이며 두 번째 사진은 스마트폰으로 영상을 받아 보는 사진, 세 번째 사진은 컴퓨터에서 인터넷 익스플로러를 통하여 스트리밍된 영상을 보는 사진, 네 번째 사진은 두 가지를 동시에 확인하는 실시간 영상 모습 사진이다.

④ 무선 WIFI를 이용한 SECURE SHELL 제어

재난 대비 및 인명 구조 무인 로봇 (4)
먼저 리눅스 시스템에 SSH를 사용하여 접근, 외부 SHELL에서 리눅스를 구동하면서 만들어 놓은 C코드를 컴파일(GCC)을 통하여 보드에 구동할 수 있도록 만들어 놓고, 이후 Key 파일과 Blue 파일 통하여 입력된 데이터를 분석하여 하위 프로세서 M3로 명령어를 전달해준다. CD 커맨드는 폴더 이동이며 ./커맨드로 파일을 구동한다. Key 파일을 구동할 경우 SSH로 입력되는 키보드의 입력을 받아서 M3로 명령을 내려준다. Blue의 경우 USB 블루투스로 전송된 신호를 읽어 들여 입력을 분석하여 어떤 입력인지 분석, M3의 명령어로 전송해준다.

2. 전체 시스템 구성
1) 구동부
① 로봇 팔

재난 대비 및 인명 구조 무인 로봇 (5)

재난 대비 및 인명 구조 무인 로봇 (6)
로봇 팔 제어 시 관절부 각도조절에 어려움이 있어 현실에서 가장 많이 사용되는 XYZ좌표계를 사용하였다. XYZ를 각 팔 관절에 세타 1,2,3으로 바꾼다고 생각했을 때 수식을 유도하는 과정을 간략하게 설명하겠다. 먼저 원점을 (0,0,0)으로 가정하고 이때의 우리가 원하는 팔 끝의 위치를 X’ Y’ Z’ 이라고 한다. 로봇팔의 길이는 L0로 가정하고, 팔 끝의 위치에서 지면으로 수선의 발을 내린 후 (Z’), 원점과 이은 선분은

재난 대비 및 인명 구조 무인 로봇 (9)

이다.

재난 대비 및 인명 구조 무인 로봇 (7)

원점에서 팔 끝까지의 길이는

재난 대비 및 인명 구조 무인 로봇 (8)

이다. 로봇팔의 길이가 같아 팔의 관절부 각도는 2*(90o – Θ)이고 지면과 팔과의 각도 Θ + Θ0 = arccos(r/2L0) + arctan(Z’/ρ) 이다.

로봇 팔에 사용된 AX-12 다이나믹 셀로서 위의 사진과 같이 연속적으로 결선하여 사용하였다.

② 무한궤도 바퀴

재난 대비 및 인명 구조 무인 로봇 (10)
무한궤도 바퀴는 각 축이 DC모터에 연결되어 있고, DC 모터는 MOSFET H-Bridge에 연결된 구조이다. MOSFET H-Bridge 회로는 두 번째 사진과 같이 구성되어 있다. H-Bridge는 양 끝단에 있는 AB CD에 1 0 또는 0 1 신호를 주어서 모터의 회전 방향을 제어하는 것이다. 각 모터에 회전 방향을 제어해 로봇의 이동방향을 전 방향 움직일 수 있게 설계하였다.

2) 제어부

재난 대비 및 인명 구조 무인 로봇 (11)
[ 제어시스템의 전체적인 구성도 ]

먼저 최상위 시스템 프로세서로는 삼성에서 만든 Exynos4412 프리미엄 ARM cortex-a9 시리즈를 사용하였고 오드로이드사에서 제작된 Odroid-U3보드를 사용하여 Exynos4412 위에 Linux 우분투 시스템을 Operating System으로 올려서 각종 디바이스 추가 및 제거, 파일시스템 조작, 오픈소스 응용, 자율적인 통신, 다양한 방법의 접근 가능, 업데이트의 편의성을 늘렸다. Linux를 선택한 이유는 각종 디바이스의 활용이 매우 편리하여 Linux를 선택하였다. 또한 이 시스템에서 USB포트를 활용하여 WIFI, BLUETOOTH, SERIAL, WEBCAM을 하위 디바이스로 사용하였다.

먼저 USB WIFI를 사용하여 WIFI 망에 접속하여 SSH(Secure Shell)방식으로 외부의 다른 컴퓨터에서도 쉽게 원격 접근 및 제어를 가능하게 하였다. USB로 연결된 WEB CAM에서 영상데이터를 받아 Http타입으로 변환하여 WIFI 망으로 스트리밍을 수행함으로서 사용자가 멀리 떨어진 상태에서도 관찰하면서 각종 로봇 팔 및 궤도 모터 제어가 가능하다.
FFMPEG 프로그램을 사용하여 WEB CAM을 WIFI로 스트리밍 하였고, VNC 프로그램을 사용하여 현재 리눅스 상에서의 GUI 화면을 다른 컴퓨터에서 VNC 뷰어를 사용하여 제어할 수 있다.

재난 대비 및 인명 구조 무인 로봇 (12)
[ VCN 서버와 VCN 뷰어를 통한 네트워크 개념도 및 프로그램 이미지 ]
재난 대비 및 인명 구조 무인 로봇 (13)
[ VCN 뷰어를 통해서 본 Exynos 상에서의 리눅스 GUI 환경, FFSERVER와 FFMPEG
오픈 소스 프로그램을 사용하여 WEB CAM을 STREAMING 하는 모습 ]
재난 대비 및 인명 구조 무인 로봇 (14)
[ 메인 프로세서인 EXYNOS와 M3 프로세서의 모습 ]

하지만 이 보드의 아쉬운 점으로는 제작회사에서 Odroid-U3를 제작 시 입출력 포트를 배제하고 만들었기 때문에 따로 입출력 포트를 추가해야하는 번거로움이 있다. 그렇기 때문에 USB SERIAL 통신을 통해서 하위의 프로세서를 하나 더 연결하였으며, 이 하위 프로세서가 입출력 제어를 수행하도록 하였다. 또 신호누락을 방지하기 위해 새로운 통신 프로토콜을 정하였다. Exynos를 사용하여 ARM Cortex-M3 프로세서로 데이터를 송신 후 프로토콜을 검증하고 명령어를 수행한다. 이 때 명령어는 Instruction_Set이라는 하나의 약속된 명령어 세트를 만들고 이것에 의해서 하위 M3 프로세서에서 입출력 제어를 수행하게 된다. 이 입출력으로 MOSFET H-Bridge구성을 통한 DC모터 제어와 로봇팔의 위치 제어를 수행한다.

재난 대비 및 인명 구조 무인 로봇 (15)
[ 블루투스 모듈의 이미지와 스마트폰 조이스틱 어플리케이션의 실행 이미지 ]

USB블루투스 모듈로 스마트폰의 블루투스와 연결하고 조이스틱 어플리케이션을 사용하여 데이터를 전송하고 이를 Exynos측에서 수신하여 필요로 하는 디바이스로 다시 전송해주게 된다.

재난 대비 및 인명 구조 무인 로봇 (16)
[ 로봇제어를 위한 컴퓨터와 스마트폰의 조작키 이미지 ]

 

빨간색은 로봇팔의 Y, Z 축을 조이스틱과 같이 제어할 수 있게 하였다.
초록색은 로봇팔의 X 축을 버튼 타입으로 제어할 수 있게 하였다.
노란색은 로봇팔의 손목 부분의 관절 꺾임 정도를 제어할 수 있게 하였다.
파란색은 로봇팔의 손을 잡거나 풀 수 있도록 제어 할 수 있다.
주황색은 오른쪽과 왼쪽 바퀴를 전진 방향으로 제어하는 것이다.
보라색은 오른쪽과 왼쪽 바퀴를 후진 방향으로 제어하는 것이다.

재난 대비 및 인명 구조 무인 로봇 (17)
[ 리눅스 상에서의 블루투스 동작 개념도 ]

블루투스 조이스틱 앱을 동작하여 앱 상에서의 스위치를 누를 때, 누르는 순간과 띄는 순간에 데이터 신호를 블루투스로 보내주게 된다. 이를 다중 키 입력으로 사용하기 위하여 SSH상에서 블루투스의 프로그램을 실행하면 1개의 프로세서가 생성되고 그 안에서 각각 2개의 Thread를 생성하여 하나의 Thread는 USB블루투스로부터 들어오는 데이터를 수신하고 검사하여 어떠한 입력이 들어왔는지 판별 후 공유 변수에 어떤 키가 들어왔는지를 기록해놓는다. 그리고 또 다른 하나의 Thread에서는 공유자원을 일정 시간을 주기로 검사하여 키가 눌린 상태를 파악하고 하위프로세서로 지정된 명령어를 보내주게 된다.

이렇게 하여서 사용자는 블루투스의 여러 가지 키를 동시에 누를 수 있으며, 키가 계속 눌린 상태에도 판단하여 동작하게 된다.

3 개발 환경(개발 언어, Tool, 사용시스템 등)
① 개발언어
ARM-CORTEX M3 : C언어
EXYNOS 리눅스 : C언어

② Tool
윈도우 프로그램 : IAR Embedded workbench, VNC-viewer, PuTTY, Tera term, Chrome, stm flash loader, ultiboard,

리눅스 프로그램 : ffserver, ffmpeg, x11vnc, Xfce, GCC, Vim, openSSH, minicom

3. 단계별 제작 과정
1. 회로 부분

재난 대비 및 인명 구조 무인 로봇 (18)
PCB 디자인 프로그램을 사용하여 가상으로 설계 후 애칭을 통하여 회로 기판 제작 후 납땜 및 결선

2. 무한궤도 바퀴 부분

재난 대비 및 인명 구조 무인 로봇 (19)

재난 대비 및 인명 구조 무인 로봇 (20)
기어와 레일로 인한 기본적인 구상과 전산볼트를 필요한 길이로 재단하여 레일 축으로 사용

재난 대비 및 인명 구조 무인 로봇 (21)

포맥스와 베어링을 추가하여 기본 뼈대 구성과 완성된 바퀴모습.

재난 대비 및 인명 구조 무인 로봇 (22)
ㄱ자모양의 고정자와 커플링을 결합시킨 DC모터와 최종적으로 완성된 바퀴와 DC모터

3. 몸체 부분

재난 대비 및 인명 구조 무인 로봇 (23)
알루미늄 프로파일을 이용한 기본 몸체 골격 (왼쪽: 레일 고정부, 오른쪽: 상판포맥스 고정부)

재난 대비 및 인명 구조 무인 로봇 (24)
포맥스를 이용한 몸체 상판 및 레일과 결합한 모습

재난 대비 및 인명 구조 무인 로봇 (25)
포맥스로 제작한 팔 결합부 모습 및 몸체와 결합한 모습

4. 로봇 팔 부분

재난 대비 및 인명 구조 무인 로봇 (26)
로봇 팔에 사용될 AX-12모터와 포맥스를 사용한 기본 틀 구성

재난 대비 및 인명 구조 무인 로봇 (27)

축이 되는 모터와 기본 팔 골격 구성

재난 대비 및 인명 구조 무인 로봇 (28)
완성된 로봇 팔 모양

5. 최종 완성 모습

재난 대비 및 인명 구조 무인 로봇 (29)

재난 대비 및 인명 구조 무인 로봇 (30)
4. 소스코드

재난 대비 및 인명 구조 무인 로봇 (Disaster Preparedness and Life Saving Unmanned Robots) 소스코드

 

5. 참고문헌
· ARM Cortex-M3 시스템 프로그래밍
· Advanced Programming in the UNIX Environment
· ARM system developer’s Guide
· 코드로 읽는 리눅스 디바이스 드라이버
· 열혈강의 C

Leave A Comment

*