EMAR Mini - робот для экстренной помощи
EMAR Mini - это миниатюрная версия EMAR, робота-помощника с открытым исходным кодом для оказания помощи врачам во время пандемии COVID-19.
Следующее руководство проведет вас через настройку и установку мини-робота экстренной помощи EMAR.
Raspberry Pi 4 содержит программное обеспечение EMAR Mini и поддерживает оборудование Intel.
ОТКАЗ
Работая с электроникой, всегда нужно быть очень осторожным! Мы не несем ответственности за любой ущерб, нанесенный оборудованию или вам самому в результате полного или частичного использования этого руководства. Используйте это руководство на свой страх и риск и примите меры для обеспечения собственной безопасности.
Требуемое оборудование V1
- 1 Raspberry Pi 4
- 1 модуль Intel® RealSense ™ D415
- 1 плата Intel® Neural Compute Stick 2
- 1 макетная плата
- 4 сервопривода Tower Pro SG90
- Перемычки
Предварительные требования
Сервер HIAS
Эта система требует полностью работающего сервера HIAS. Следуйте руководству по установке сервера HIAS, чтобы настроить сервер HIAS, прежде чем продолжить работу с этим руководством.
STL для 3D-печати
Для этого урока вам нужно будет уже распечатать свой EMAR Mini. Следуйте инструкциям в руководстве STL для 3D-печати, чтобы завершить часть этого проекта по 3D-печати.
Raspberry Pi OS Lite
В этом руководстве мы будем использовать Raspberry Pi OS Lite (Buster). Прежде всего, загрузите образ со страницы загрузки ОС Raspberry Pi, извлеките файл образа и запишите его на SDK-карту. В нашем проекте мы использовали SD-карту на 64 ГБ.
Как только вы это сделаете, вставьте его в свой Raspberry Pi 4, после входа в систему используйте следующую команду, чтобы обновить свое устройство, а затем откройте приложение конфигурации Raspberry Pi. Вам необходимо расширить файловую систему, настроить клавиатуру и подключить RPI4 к сети.
sudo apt-get update &&sudo apt-get upgrade
sudo raspi-config
Установка
Теперь вам нужно установить оборудование, программное обеспечение и зависимости EMAR Mini.
Безопасность устройства
Во-первых, вы повысите безопасность своего устройства.
Удаленный пользователь
Вы создадите нового пользователя для удаленного доступа к вашему серверу. Используйте следующие команды, чтобы настроить нового пользователя для вашего компьютера. Следуйте инструкциям и убедитесь, что вы используете надежный пароль.
sudo adduser YourUsername
Теперь предоставьте пользователю привилегии sudo:
usermod -aG sudo YourUsername
Теперь откройте новый терминал и войдите на свой сервер, используя новые учетные данные, которые вы установили.
ssh [защита электронной почты]
Доступ по SSH
А теперь давайте укрепим безопасность сервера. Используйте следующую команду, чтобы настроить свой открытый и закрытый ключи. Убедитесь, что вы выполняете этот шаг на своем компьютере для разработки, не на вашем сервере.
Советы
- Нажмите "Ввод", чтобы подтвердить файл по умолчанию.
- Дважды нажмите "Enter", чтобы пропустить пароль (необязательно, вы можете использовать пароль, если хотите).
ssh-keygen
У вас должен получиться такой экран:
Создание пары открытого / закрытого ключей rsa.
Введите файл, в котором нужно сохранить ключ (/home/genisys/.ssh/id_rsa):
Введите кодовую фразу (пусто, если кодовая фраза отсутствует):
Введите ту же парольную фразу еще раз:
Ваш идентификатор был сохранен в /home/genisys/.ssh/id_rsa.
Ваш открытый ключ был сохранен в /home/genisys/.ssh/id_rsa.pub.
Отпечаток ключа:
SHA256:5BYJMomxATmanduT3 / d1CPKaFm + pGEIqpJJ5Z3zXCPM [электронная почта защищена]
Случайное изображение ключа:
+ --- [RSA 2048] ---- +
| .oooo .. |
| o .oo. . |
|. + .. + |
| o o o. |
| .o. + S. . |
| =.. + o =o.o. . |
| =o =oo.E .o..o. |
| .. + ..o.ooo +. . |
| .o ++. |
+ ---- [SHA256] ----- +
Теперь вы собираетесь скопировать свой ключ на сервер:
ssh-copy-id [защита электронной почты]
После того, как вы введете пароль для новой учетной записи пользователя, ваш ключ будет сохранен на сервере. Теперь попробуйте снова войти на сервер в новом терминале, вы должны войти прямо, не вводя пароль.
ssh [защита электронной почты]
Наконец, вы отключите аутентификацию по паролю для входа в систему. Используйте следующую команду для редактирования конфигурации ssh.
sudo nano / etc / ssh / sshd_config
Измените следующее:
#PasswordAuthentication yes
Кому:
PasswordAuthentication no
Затем перезапустите ssh:
sudo systemctl restart ssh
Если вы используете ssh для выполнения вышеперечисленных действий, оставьте текущий терминал подключенным. Откройте новый терминал, попробуйте войти на свой сервер. Если вы можете войти в систему, значит, вышеуказанные шаги были успешными.
В оставшейся части этого руководства предполагается, что вы вошли в систему на своем устройстве. Со своей машины разработки подключитесь к устройству с помощью ssh или откройте локальный терминал, если работаете непосредственно на машине.
ssh [защита электронной почты]
Брандмауэр UFW
Теперь вы настроите брандмауэр:
sudo ufw enable
sudo ufw disable
Теперь откройте необходимые порты, эти порты будут открыты на вашем сервере, но не будут открыты для внешнего мира:
sudo ufw allow 22
sudo ufw allow OpenSSH
Наконец запустите и проверьте статус:
sudo ufw enable
sudo ufw status
Вы должны увидеть следующее:
Статус:активен
К действию от
- ------ ----
OpenSSH ALLOW Anywhere
22 РАЗРЕШИТЬ в любом месте
OpenSSH (v6) РАЗРЕШИТЬ в любом месте (v6)
22 (v6) РАЗРЕШИТЬ в любом месте (v6)
Fail2Ban
Fail2Ban добавляет дополнительный уровень безопасности, сканируя журналы сервера и выявляя необычную активность. Fail2Ban настроен для работы с IPTables по умолчанию, поэтому мы сделаем некоторую реконфигурацию, чтобы заставить его работать с нашим межсетевым экраном, 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
echo "[Определение]" | sudo tee -a /etc/fail2ban/action.d/ufw.conf
echo "enabled =true" | sudo tee -a /etc/fail2ban/action.d/ufw.conf
echo "actionstart =" | sudo tee -a /etc/fail2ban/action.d/ufw.conf
echo "actionstop =" | sudo tee -a /etc/fail2ban/action.d/ufw.conf
echo "actioncheck =" | sudo tee -a /etc/fail2ban/action.d/ufw.conf
echo "actionban =ufw insert 1 deny from
to any" | sudo tee -a /etc/fail2ban/action.d/ufw.conf
echo "actionunban =ufw delete deny from
to any" | sudo tee -a /etc/fail2ban/action.d/ufw.conf
sudo nano /etc/fail2ban/action.d/ufw.conf
sudo sed -i - "s # banaction =iptables -multiport # banaction =ufw # g "/etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
sudo fail2ban-client restart
sudo fail2ban-client status код>
Вы должны увидеть следующее:
Завершение работы успешно
Состояние готовности сервера
| - Количество тюрем:1
`- Список тюрем:sshd
Зависимости Python
sudo apt install python3-pip
sudo pip3 install geolocation
sudo pip3 install paho-mqtt
sudo pip3 install psutil
sudo pip3 install numpy
sudo pip3 install запросы
sudo pip3 install zmq
Создать устройство EMAR в HIAS
Перейдите на свой сервер HIAS и выберите Робототехника-> EMAR-> Создать . . На устройстве В настройках выберите желаемое местоположение и зону iotJumpWay, имя для вашего устройства EMAR, IP и MAC-адрес вашего Raspberry Pi. Обнаружение объектов и глубина в реальном времени настройки можно оставить с настройками по умолчанию. Если вы измените порты и имя каталога, вам необходимо изменить их при обновлении прокси-сервера HIAS . настройки ниже.
Прокси-сервер HIAS
Вам необходимо обновить настройки прокси-сервера HIAS, чтобы proxy_pass может правильно перенаправлять трафик на ваш Raspberry Pi.
Для этого вам необходимо отредактировать конфигурацию NGINX. Используйте следующую команду на сервере HIAS, чтобы отредактировать файл с помощью Nano:
sudo nano / etc / nginx / sites-available / default
Вверху файла вы найдете настройки, управляющие прокси для EMAR / EMAR Mini. Вам необходимо изменить ###. ###. #. ## на IP-адрес вашего Raspberry Pi.
Если вы изменили настройки Stream Port, Stream Directory или Socket Port в пользовательском интерфейсе HIAS EMAR, вам также необходимо обновить их здесь.
расположение ~ * ^ / Robotics / EMAR / Live /(.*)$ {
auth_basic "Restricted";
auth_basic_user_file / etc / nginx / tass / htpasswd;
proxy_pass http://###.###.#.##:8282 / $ 1;
}
После сохранения и выхода из конфигурации вам необходимо перезагрузить сервер NGINX:
sudo systemctl reload nginx
Обновить настройки устройства
Теперь вам нужно обновить настройки устройства, используя учетные данные, указанные в пользовательском интерфейсе HIAS. Если вы изменили настройки Stream Port и Socket Port, вы также должны обновить их в этом файле конфигурации.
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":{
«порт»:8383
}
},
«MobileNetSSD»:{
«bin»:«Модель / MobileNetSSD_deploy.bin»,
«классы» :[
«фон»,
«самолет»,
«велосипед»,
«птица»,
«лодка»,
«бутылка»,
«автобус»,
«автомобиль»,
«кот»,
«стул»,
«корова»,
«обеденный стол»,
"собака",
"лошадь",
"мотоцикл",
"человек",
"растение в горшке",
"овца",
"диван",
"поезд",
"tvmonitor"
],
"inScaleFactor":0,007843,
"meanVal":127,53,
" size ":300,
" threshold ":0.6,
" xml ":" Model / MobileNetSSD_deploy.xml "
}
}
Intel® RealSense ™ D415
Теперь мы установим программное обеспечение для Intel® RealSense ™ D415.
УБЕДИТЕСЬ, ЧТО ВАША РЕАЛЬНОСТЬ НЕ ПОДКЛЮЧЕНА
После безуспешного выполнения ряда руководств Intel по установке Realsense на Raspberry Pi 3 и Raspberry Pi 4 и на несколько ОС, я, наконец, указал на установку бэкэнда LibUVC. Чтобы это работало для нашего проекта, вам необходимо изменить загруженный файл libuvc_installation.sh файл и выполните дополнительный шаг.
Согласно руководству, сначала загрузите файл с помощью:
wget https://github.com/IntelRealSense/librealsense/raw/master/scripts/libuvc_installation.sh
Затем измените:
cmake ../ -DFORCE_LIBUVC =true -DCMAKE_BUILD_TYPE =release
Кому:
cmake ../ -DFORCE_LIBUVC =true -DCMAKE_BUILD_TYPE =выпуск DBUILD_PYTHON_BINDINGS =bool:true
Это установит привязки Python, необходимые для запуска PyRealsense . . Теперь продолжайте:
chmod + x ./libuvc_installation.sh
./libuvc_installation.sh
И, наконец, откройте свой bashrc файл
sudo nano ~ / .bashrc
И добавьте следующее в конец файла перед сохранением и закрытием.
export PYTHONPATH =$ PYTHONPATH:/ usr / local / lib
Теперь вы можете подключить Realsense к Raspberry Pi и протестировать, используя следующее, чтобы проверить, распознается ли ваше устройство и успешно ли открывается:
rs-enumerate-devices
И, наконец, следующее, чтобы проверить, что PyRealsense работает:
python3
импортировать pyrealsense
exit ()
Если вы не получаете сообщений об ошибках import pyrealsense , все правильно настроено для вашего Realsense.
Распространение Intel® OpenVINO ™ Toolkit
Опять же, официальные руководства Intel так или иначе не увенчались успехом, я наконец наткнулся на очень хорошее руководство по PyImageSearch. В следующем руководстве используются части, относящиеся к нашему проекту, и вы можете быстро настроить OpenVINO на Raspberry 4.
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_pinobash_pinobash_lash_c_p20. / код>
Теперь добавьте следующую строку в конец файла bashrc перед сохранением и закрытием.
исходный код ~ / openvino / bin / setupvars.sh
Intel® Neural Compute Stick 2
Мы снова воспользуемся инструкциями, приведенными в руководстве PyImageSearch, для установки NCS2 на Raspberry Pi.
sudo usermod -a -G users "$ (whoami)"
cd
sh openvino / install_dependencies / install_NCS_udev_rules.sh
Соедините шею
Прежде всего, протолкните последний сервопривод через верхнюю часть Body-Middle.stl . и прикрутите его на место. Затем прикрутите сервомеханизм к нижней части шеи и прикрепите к сервоприводу. Вам может понадобиться клей, чтобы закрепить эту деталь.
Источник:EMAR Mini - робот для оказания экстренной помощи
Производственный процесс
- Как создать платформу для роботов Arduino + Raspberry Pi
- Робот, использующий Raspberry Pi и Bridge Shield
- Робот-бокс для компакт-дисков Raspberry Pi
- ЭНДИ:многоцелевой робот-гуманоид
- Робот с подвижной сигнализацией
- Создайте робота Minecraft Creeper
- Четвероногий автономный робот JQR
- Архимед:ИИ-робот-сова
- Nox - домашний бродячий робот (ROS)
- Робот, управляемый Wi-Fi и использующий Raspberry Pi