EMAR Mini:Raspberry Pi 4搭載のコンパクト緊急支援オープンソースロボット
EMAR Miniは、COVID-19パンデミック中に医療従事者を支援するために設計された、EMARオープンソース緊急ロボットの小型版。Raspberry Pi 4ベースで、Intel RealSenseカメラ、ニューラルコンピュートハードウェア、サーボモーターを統合し、リアルタイム物体検出、深度センシング、リモート制御を実現します。
このガイドでは、ハードウェア組み立てからセキュアなソフトウェア設定まで、EMAR Miniセットアップの全手順を解説します。
安全上の注意
電子機器取り扱い時は常に注意してください。本チュートリアルによるハードウェア損傷や人身傷害について責任を負いません。自己責任で実施してください。
前提条件
HIASサーバー
開始前に、完全に機能するHIASサーバーがインストール済みであることを確認。HIASインストールガイドに従ってサーバーを構築してください。
3Dプリント用STLファイル
3Dプリント用STLガイドにあるSTLファイルでEMAR Miniのケースとシャーシを出力。
Raspberry Pi OS Lite
Raspberry Pi OSダウンロードページからRaspberry Pi OS Lite(Buster)イメージをダウンロード、解凍し、64GB SDカードに書き込み。起動後以下を実行:
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
HIASでEMARデバイス作成
HIASサーバーでRobotics > EMAR > Createへ進み、適切な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"
}
}
Intel® RealSense™ D415
PiにRealSense 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')"
Intel® Distribution of OpenVINO™ Toolkit
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
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 – 緊急支援ロボット
製造プロセス
- Raspberry Pi と Arduino を連携させてロボットを自作:ステップバイステップガイド
- Bridge Shield でスマートロボットを構築:Raspberry Pi と Arduino の統合
- DIY Wall-E 風 Raspberry Pi CD ボックスロボット
- ANDY – 多目的ヒューマノイドロボット
- ローリングアラームロボット:Raspberry Pi と Google カレンダーで動くスマートモバイル目覚ましシステム
- Arduinoで作るモーター駆動のマインクラフト クリーパー ロボット
- JQR四足歩行自律ロボット:自律ナビゲーションと救助向けDIY脚式ロボット
- アーキメデス:感情センシングAIロボットフクロウ
- Nox:ROS搭載のSLAM対応家庭巡回ロボット
- Pythonで作るWi-Fi制御Raspberry Piロボット - ステップバイステップガイド
- Windows 10 IoT Coreで音声制御コンピュータビジョンロボットを構築