EMAR 미니: 코로나19 대응 오픈소스 응급 지원 로봇 소형화 버전
EMAR 미니는 코로나19 팬데믹 기간 의료진을 지원하기 위해 설계된 EMAR 오픈소스 응급 로봇의 축소판입니다. 라즈베리파이 4 기반으로 인텔 리얼센스 카메라, 뉴럴 컴퓨트 하드웨어, 서보모터를 통합해 실시간 물체 감지, 깊이 감지, 원격 제어를 제공합니다.
이 가이드는 하드웨어 조립부터 안전한 소프트웨어 구성까지 EMAR 미니 설정의 모든 단계를 안내합니다.
안전 공지
전자제품 취급 시 항상 주의하세요. 이 튜토리얼로 인한 하드웨어 또는 신체 상해에 대해 책임지지 않습니다. 지침을 본인 책임 하에 사용하세요.
사전 요구사항
HIAS 서버
시작 전 완전히 작동하는 HIAS 서버가 설치되어 있는지 확인하세요. HIAS 설치 가이드를 따라 서버를 설정하세요.
3D 프린팅용 STL 파일
3D 프린팅용 STL 가이드에 제공된 STL 파일로 EMAR 미니 케이스와 섀시 출력.
라즈베리파이 OS 라이트
라즈베리파이 OS 다운로드 페이지에서 라즈베리파이 OS 라이트(Buster) 이미지 다운로드, 압축 해제 후 64GB SD 카드에 플래싱. 부팅 후 실행:
sudo apt-get update && sudo apt-get upgrade sudo raspi-config
설정 도구로 파일시스템 확장, 키보드 설정, 네트워크 연결.
설치 개요
설치 과정 포함:
- 하드웨어 조립
- 장치 보안 강화
- 파이썬 의존성 설치
- HIAS 서버 구성
- 인텔 리얼센스 및 OpenVINO 설정
- 서보 및 넥 조립
장치 보안
라즈베리파이 보안은 필수. 아래 단계로 전용 원격 사용자 생성 및 SSH 키 인증 활성화.
원격 사용자
sudo 권한 새 사용자 생성:
sudo adduser YourUsername usermod -aG sudo YourUsername
SSH로 새 계정 로그인:
ssh [email protected]
SSH 접근
로컬 머신에서( Pi에서 아님) SSH 키 쌍 생성:
ssh-keygen
공개 키를 Pi에 복사:
ssh-copy-id [email protected]
비밀번호 없는 로그인 테스트:
ssh [email protected]
/etc/ssh/sshd_config 편집해 비밀번호 인증 비활성화:
sudo nano /etc/ssh/sshd_config # 다음 줄 변경: #PasswordAuthentication yes PasswordAuthentication no
SSH 재시작:
sudo systemctl restart ssh
UFW 방화벽
간편 방화벽 활성화 및 구성:
sudo ufw enable sudo ufw allow 22 sudo ufw allow OpenSSH sudo ufw status
예상 출력:
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 22 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 22 (v6) ALLOW Anywhere (v6)
Fail2Ban
Fail2Ban 설치 및 UFW 연동 구성:
sudo apt install fail2ban sudo mv /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo rm /etc/fail2ban/action.d/ufw.conf sudo touch /etc/fail2ban/action.d/ufw.conf sudo tee -a /etc/fail2ban/action.d/ufw.conf <<EOF [Definition] enabled = true actionstart = actionstop = actioncheck = actionban = ufw insert 1 deny from <ip> to any actionunban = ufw delete deny from <ip> to any EOF sudo sed -i "s#banaction = iptables-multiport#banaction = ufw#g" /etc/fail2ban/jail.local sudo fail2ban-client restart sudo fail2ban-client status
출력에 다음 포함되어야 함:
Shutdown successful Server readyStatus |- Number of jail: 1 `- Jail list: sshd
파이썬 의존성
sudo apt install python3-pip sudo pip3 install geolocation paho-mqtt psutil numpy requests zmq
HIAS에서 EMAR 장치 생성
HIAS 서버에서 로보틱스 > EMAR > 생성 이동. 적절한 iotJumpWay 위치 선택, 이름 지정, Pi의 IP와 MAC 주소 입력. 실시간 물체 감지 & 깊이 설정은 커스텀 포트 필요 시 외엔 기본값 유지.
HIAS 서버 프록시
NGINX 프록시를 Pi로 라우팅하도록 조정. /etc/nginx/sites-available/default 편집:
sudo nano /etc/nginx/sites-available/default
EMAR 블록 찾아 플레이스홀더 IP를 Pi 주소로 교체:
location ~* ^/Robotics/EMAR/Live/(.*)$ { auth_basic "Restricted"; auth_basic_user_file /etc/nginx/tass/htpasswd; proxy_pass https://###.###.#.##:8282/$1; }
NGINX 리로드:
sudo systemctl reload nginx
장치 설정 업데이트
HIAS UI 자격증명으로 Pi의 confs.json 편집, 포트와 호스트명이 구성과 일치하도록:
sudo nano confs.json { "iotJumpWay": { "host": "", "port": 8883, "ip": "localhost", "lid": 0, "zid": 0, "did": 0, "dn": "", "un": "", "pw": "" }, "EMAR": { "ip": "" }, "Realsense": { "server": {"port": 8282}, "socket": {"port": 8383} }, "MobileNetSSD": { "bin": "Model/MobileNetSSD_deploy.bin", "classes": [ "background", "aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor" ], "inScaleFactor": 0.007843, "meanVal": 127.53, "size": 300, "threshold": 0.6, "xml": "Model/MobileNetSSD_deploy.xml" } }
인텔® 리얼센스™ D415
Pi에 리얼센스 SDK 설치. 설치 중 카메라는 분리 상태 유지.
wget https://github.com/IntelRealSense/librealsense/raw/master/scripts/libuvc_installation.sh chmod +x libuvc_installation.sh sed -i "s/cmake ../ -DFORCE_LIBUVC=true -DCMAKE_BUILD_TYPE=release/cmake ../ -DFORCE_LIBUVC=true -DCMAKE_BUILD_TYPE=release DBUILD_PYTHON_BINDINGS=bool:true/" libuvc_installation.sh ./libuvc_installation.sh
라이브러리 경로를 ~/.bashrc에 추가:
echo 'export PYTHONPATH=$PYTHONPATH:/usr/local/lib' >> ~/.bashrc source ~/.bashrc
장치 확인:
rs-enumerate-devices python3 -c "import pyrealsense; print('PyRealsense loaded')"
Pi에 OpenVINO 설치 단계:
sudo apt-get install build-essential cmake unzip pkg-config sudo apt-get install libjpeg-dev libpng-dev libtiff-dev sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev sudo apt-get install libxvidcore-dev libx264-dev sudo apt-get install libgtk-3-dev sudo apt-get install libcanberra-gtk* sudo apt-get install libatlas-base-dev gfortran sudo apt-get install python3-dev cd wget https://download.01.org/opencv/2020/openvinotoolkit/2020.1/l_openvino_toolkit_runtime_raspbian_p_2020.1.023.tgz tar -xf l_openvino_toolkit_runtime_raspbian_p_2020.1.023.tgz mv l_openvino_toolkit_runtime_raspbian_p_2020.1.023 openvino echo 'source ~/openvino/bin/setupvars.sh' >> ~/.bashrc source ~/.bashrc
인텔® 뉴럴 컴퓨트 스틱 2
NCS2 의존성 설치:
sudo usermod -a -G users "$(whoami)" cd sh openvino/install_dependencies/install_NCS_udev_rules.sh
넥 연결
Body-Middle.stl 상단을 통해 마지막 서보 장착 후 고정. 서보 암을 넥 베이스에 나사로 고정하고 서보 연결. 필요시 소량 접착제로 안정성 유지.
출처: EMAR 미니 – 응급 지원 로봇