名称 | MIRS2405 ソフト開発報告書 |
---|---|
番号 | MIRS2405-soft-0003 |
版数 | 最終更新日 | 作成 | 承認 | 改訂記事 |
---|---|---|---|---|
B01 | 2025.1.27 | 清拓実、平沢快斗、幸航輝 | 香川 | 初版 |
本ドキュメントはmirs2405𝔊𝔘𝔏𝔏ℭのソフトウェア開発報告書である。
<概要>
根本の関節と第二関節をポテンショメータの値を読み取って角度制御し、第3関節とエアーチャックはシリアルサーボモータで制御、ターンテーブルはエンコーダで制御した。根本の関節と第二関節は地面に対して鉛直の時を0度とした。角度偏差のPID制御のほかに、三角関数を用いて、アームの位置による負荷の変化に対応した。
<評価>
紙の取得や、目的の高さへ持っていくことができたため、角度制御の精度は高い。一方、移動角度が大きい場合のアームの動作が速く、安全性にかけている。
<改良・改善案>
移動角度が大きい場合のアームの動作速度について、PID制御の割合が高いことが考えられるため、全体的にパラメータを下げ、アームの位置による制御の割合をあげることが対応策として考えられる。
<対象プログラム>
Arduino UNO: turntable.ino, gripper.ino
Raspberry Pi Pico: arm.ino, joint.ino, difine.h
<概要>
USBシリアル通信を用いてraspiから各マイコンに指令を送ることでシステムの統合を行った。配列に識別番号、指令値を入れることでマイコン側がどの処理を行うかを決定した。esp32で取得したラジコン入力をraspiが受信することで動作開始のタイミングを決定できるようにした。
<評価>
デバイス間の通信ではraspiで設定した識別番号通りの処理をマイコンが行い、指令値通りに制御することができた。ラジコン入力を加えたときに動作が開始することも確認した。
<改良・改善案>
ラジコン入力で動作中のシステムを遠隔終了させることで、安全面が向上すると考えられる。
<対象プログラム>
Arduino: raspi.ino
pico: raspi.ino
esp32: raspi.ino, radicon.ino
raspi: send.py, receive.py
<概要>
deepfaceのライブラリを用いて年齢検出,性別判定を行いデータの通信を行うプログラム
<評価>
基本的に1人について検出しており、10fps程でた
同じ画面に2人以上入っている場合、先に画面に入っている人をトラッキングし測定する
cuda,tensorflowを用いることでgpuで処理がてき処理速度が早くなり、30fps程でた
性別判定の精度は高いが、年齢検出の精度はそこまで高くなかった
また、IPv4を用いることでデータ通信ができる
<改良・改善案>
公開されているモデル(deepfaceのモデル)は、西洋人のデータセットを主に学習されており、男女判定は問題なかったが年齢検出はそこまで精度が出なかったと考えられる。
アジア人の写真を用いて追加学習を行うことで年齢推定の精度改善が期待できる。
<対象プログラム>
server_deepface.py(サーバー側), client_deepface.py(クライアント側)
<概要>
googleのmediapipe(骨格推定モデル)と深度カメラを用いた身長測定
<評価>
骨格推定で検出された顔の中心の座標と足先の座標を用いて、深度カメラの値より身長を算出するプログラムを作成した。
顔の中心の座標を用いているため、正確な身長は測定されないため、定数倍と定数を足すことで実際に近い身長を予測した。
顔の中心と足先がカメラに映りさえすれば、人物が前後に移動しても、身長測定の精度は非常に高くなる。
cuda,pytorchを用いることでgpuで処理がてき処理速度が早くなった。
また、IPv4を用いることでデータ通信ができる。
<改良・改善案>
身長測定を行うプロフラムのアルゴリズム上、顔の中心と足先がカメラに映らないと計測できない。
骨格推定で検出された顔の中心の座標と足先の座標を用いていたが、他の部位の座標も用いることでより正確な身長測定が可能となり、全身が入らなくても測定できるになると考えられる。
<対象プログラム>
main_height_server_plus.py,zed_hight_class_plus.py,server_value_update.py(サーバー側)
client_json.py(クライアント側)
プログラムのソースコードを以下に示す。
MIRS2405 𝔊𝔘𝔏𝔏ℭで使用したリポジトリ
MIRS2405 𝔊𝔘𝔏𝔏ℭで最終的に使用したプログラム