EMAR Mini: Компактный открытый робот экстренной помощи для борьбы с COVID-19
Введение
EMAR Mini — уменьшенная версия открытого робота экстренной помощи EMAR, созданная для поддержки медицинских работников во время пандемии COVID-19. Построен на Raspberry Pi 4, интегрирует камеры Intel RealSense, нейронные ускорители и сервоприводы для детекции объектов в реальном времени, глубинного зрения и удалённого управления.
Это руководство ведёт через все этапы настройки EMAR Mini: от сборки железа до безопасной конфигурации софта.
Предупреждение безопасности
Всегда соблюдайте осторожность при работе с электроникой. Мы не несём ответственности за повреждения оборудования или травмы, возникшие при следовании этому руководству. Используйте инструкции на свой страх и риск.
Предварительные требования
Сервер HIAS
Перед началом убедитесь, что у вас развёрнут полностью функциональный сервер HIAS. Следуйте руководству по установке HIAS.
STL-файлы для 3D-печати
Распечатайте корпус и шасси EMAR Mini, используя STL-файлы из руководства STLs For 3D Printing.
Raspberry Pi OS Lite
Скачайте образ Raspberry Pi OS Lite (Buster) со страницы загрузки Raspberry Pi OS, распакуйте и запишите на SD-карту 64 ГБ. После загрузки выполните:
sudo apt-get update && sudo apt-get upgrade
sudo raspi-config
Используйте утилиту настройки для расширения файловой системы, установки клавиатуры и подключения к сети.
Обзор установки
Процесс включает:
- Сборку железа
- Укрепление безопасности устройства
- Установку Python-зависимостей
- Настройку сервера HIAS
- Настройку Intel RealSense и OpenVINO
- Сборку сервоприводов и шеи
Безопасность устройства
Защита Raspberry Pi критична. Следуйте шагам ниже для создания выделенного удалённого пользователя и включения SSH-ключей.
Удалённый пользователь
Создайте нового пользователя с правами sudo:
sudo adduser YourUsername
usermod -aG sudo YourUsername
Зайдите под новой учётной записью по SSH:
ssh [email protected]
SSH-доступ
Сгенерируйте пару SSH-ключей на локальной машине (не на Pi):
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
Включите и настройте Uncomplicated Firewall:
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 ready
Status
|- Number of jail: 1
`- Jail list: sshd
Python-зависимости
sudo apt install python3-pip
sudo pip3 install geolocation paho-mqtt psutil numpy requests zmq
Создание устройства EMAR в HIAS
В интерфейсе HIAS Server перейдите в Robotics > EMAR > Create. Настройте устройство: выберите подходящее местоположение iotJumpWay, задайте имя, введите IP и MAC-адрес Pi. Настройки Real-Time Object Detection & Depth оставьте по умолчанию, если не нужны кастомные порты.
Прокси HIAS Server
Скорректируйте 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
Обновление настроек устройства
Используя учётные данные из UI HIAS, отредактируйте confs.json на Pi, чтобы порты и хостнеймы соответствовали вашей конфигурации:
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"
}
}
Intel® RealSense™ D415
Установите RealSense SDK на Pi. Камера должна быть отключена во время установки.
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')"
Intel® Distribution of OpenVINO™ Toolkit
Шаги установки OpenVINO на Pi:
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
Intel® Neural Compute Stick 2
Установка зависимостей NCS2:
sudo usermod -a -G users "$(whoami)"
cd
sh openvino/install_dependencies/install_NCS_udev_rules.sh
Подключение шеи
Установите последний сервопривод через верхнюю часть Body-Middle.stl и зафиксируйте. Прикрутите рычаг сервы к базе шеи и подключите сервопривод. При необходимости используйте немного клея для стабильности.
Источник: EMAR Mini – Emergency Assistance Robot
Производственный процесс
- Создание робота на Arduino и Raspberry Pi: пошаговое руководство
- Создание умного робота с Bridge Shield — интеграция Raspberry Pi и Arduino
- DIY робот в стиле Wall‑E на Raspberry Pi из коробки от CD
- ANDY — многоцелевой гуманоидный робот
- Робот-будильник на колесах: умная мобильная система пробуждения на Raspberry Pi и Google Calendar
- Создание моторизированного робота-крипера Minecraft на Arduino
- JQR Четвероногий автономный робот: DIY шагающий робот для автономной навигации и спасения
- Archimedes: Робот-совица с ИИ для распознавания эмоций
- Nox: Самостоятельно собранный робот с SLAM на базе ROS для перемещения по дому
- Построение Wi-Fi-управляемого робота на Raspberry Pi с Python — пошаговое руководство