Zoom用Face Trackingカメラ! – 作成編 –
複数記事に分けて解説しています.
Zoom用顔追従カメラ! – 機能とセットアップ編 –
Zoom用顔追従カメラ! – 作成編 –
Zoom用顔追従カメラ! – 検証編 –
顔追従カメラ作成 – ハードウェア編 –
顔追従カメラのコンセプト
カメラからどの角度になっても, 顔が向かい合わせになるように2つのサーボモータが回転します.
2軸の内, 垂直を基軸に回転するサーボモータが左右に動く顔を, 水平を基軸に回転するサーボモータが上下に動く顔を捉えます.
サーボモータでWEBカメラを動かすのに必要な部品
上記のコンセプトを達成するために, 以下の部品を3Dプリンタで作成しました.
- サーボモータの回転トルクをWEBカメラに伝える部品
- サーボモータとWEBカメラを固定する部品
- カメラマウントを支える部品
以下のSTLデータをプリントして上記の部品を揃えます.
サーボモータの回転トルクをWEBカメラに伝える部品
サーボモータのホーンを固定して, サーボモータのトルクでサーボモータ自身が回転するようにしています.
丸い穴と狭い隙間にサーボモータのホーンがはまるようにしました.
サーボモータとWEBカメラを固定する部品
サーボモータをねじで固定し, カメラをのせることでサーボモータが回転したときに, カメラも連動して動くようにしています.
上2つのSTL置き場
カメラマウントを支える部品
上のSTL置き場
Raspberry Piとサーボモータ同士の配線
以下のようにRaspberry Piと2つのサーボモータを配線しました.
図示されたサーボモータの電線の内, 赤色がHigh, 黒色がLow, 黄色がPWM用の線となります.
リンク先のサーボモータであれば, 赤色の線を5V, 黒色の線をGND, 白色の線がPWM用のGPIOである12か13へ繋ぎます.
すべて繋ぐと以下のようになります.
顔追従カメラ作成 – ソフトウェア編 –
Raspberry PI側の設定
Rapberry Piを立ち上げ, 端末を開きます.
顔追従カメラ用のソフトウェアソースを取得します.
顔認識結果をZoom用PCから受け取って顔追従するようにサーボモータの制御をします.
# ソースの取得
git clone https://github.com/tech-life-hacking/FaceTrackingForZoom.git
cd FaceTrackingForZoom
# IPアドレスの取得
ifconfig
# wlan*:のinetの192.168.*.*というような数値がRaspberry PiのIPアドレスになっています.
# 設定の変更
gedit driveServoMotor.py
# YourRaspberryPiIPaddressをRaspberry PiのIPアドレスへ変更
# pigpioの起動
sudo pigpiod
# 顔追従をするためのサーボモータ制御用ソフトウェアの起動
# 顔認識結果をZoom用
python3 driveServoMotor.py
Zoom用PC側の設定
Zoom用PCを立ち上げ, 端末を開きます.
顔追従カメラ用のソフトウェアソースを取得します.
顔認識結果をRaspberry Piへ送信します.
# ソースの取得
git clone https://github.com/tech-life-hacking/FaceTrackingForZoom.git
cd FaceTrackingForZoom
# 設定の変更
gedit FaceRecognizer.py
# YourRaspberryPiIPaddressをRaspberry PiのIPアドレスへ変更
gedit demo.py
# /dev/video2を仮想カメラデバイスの番号へ変更
# PictureOfMeフォルダ内の画像を自分の写真へ変更
# v4l2loopbackの起動
sudo modprobe v4l2loopback
# 顔認識ソフトウェアの実行
python demo.py
# 別の端末を立ち上げZoomを開く
zoom
demo.pyを実行して, カメラに自分の顔が映ったとき, モータが動くか見てください.
Zoomでミーティング開始後, カメラとして黄色枠で囲まれた仮想カメラデバイスを選択してください.
Zoom上では追加したカメラデバイスが「Dummy video device」と表示されています.
Zoomに映像が表示され、カメラが顔を追従すれば完成です!
複数記事に分けて解説しています.
Zoom用顔追従カメラ! – 機能とセットアップ編 –
Zoom用顔追従カメラ! – 作成編 – 今ここ
Zoom用顔追従カメラ! – 検証編 – 次