ドキュメント内目次

  1. はじめに
  2. 本ドキュメントは,UV-Cプログラムのソフトの詳細設計について記述したものである。

  3. 基本機能
  4. 機能 目的 概要 記述言語
    衝突防止機能 走行中に障害物との衝突を回避するため 本体に取り付けたセンサーの値を読むことによって衝突回避を実現する.センサの利用にはRaspberry Piを用いる. Python
    緊急停止機能 緊急停止を実行するため 電圧を監視していて、緊急停止スイッチが押されたことを確認したら動作を停止する. Python
    机についたマーカーの認識機能 LEDを光らせたり,走行の状態を変化させたりするため. 本体に取り付けたカメラをRaspberry Piによって管理することで認識する. Python
    自律走行機能 教室内の机を自動で殺菌するため. Arduinoでモータを制御する. Python
    LED点灯機能 今回はデモのためLEDだが,本来は殺菌できる赤外線灯を用いるため,殺菌が目的. ArduinoでLEDを制御して,机が下にあるかどうかによって状態を変更する. Python
    昇降板の上下機能 殺菌の効果を最大限に高めるため. Arduinoで昇降板についたモータを制御して,昇降板を上下させる. Python
    殺菌済み机の記録機能 机の殺菌を外部から確認できるようにするため Raspberry Piにデータを保存してサーバー上にアップロードすることで外部から認できるようにする. Python

  5. 機能設計
  6. Raspberry Piに必要な機能

    • Arduinoとシリアル通信を行う機能
    • 超音波センサを制御する機能
    • 画像認識を行う機能
    • セットしたコースを自動で走行する機能
    • 衝突防止の機能
    • 殺菌状況をインターネット上にあげる機能
    モジュール名 関数名 引数 戻り値 概要
    io.py GPIOの読み取り
    uss.py 超音波センサ読み取り
    arduino.py order target,act1,act2,time str order Arduinoに送信する用の命令文の形式に変換してくれるクラス.命令文をString型で返す.
    My_serial serial.serial なし Arduinoとのシリアル通信を確立するクラス.__del__の中にシリアル通信を解除するプログラムを入れてある.さらに,Raspberry Pi側からOrderで整形した命令文を送信するモジュールと,Arduinoからシリアル通信で送られてきたデータを確認するモジュールを追加してある.
    camera.py get_image なし image_file カメラから画像を取得し,その画像を./images/captured.pngという名前で保存する.戻り値は保存した画像のパス.
    server.py server なし なし サーバーとの通信をするモジュール.このモジュールから現在の殺菌状況を送信する.
    position.py get_position find pos 現在消毒した机を引数に取り、戻り値として現在推定される場所を繰り返す
    route.py make_route dist divi orders(命令文のlist) カメラの画像から次の机までのルートを作成する
    rec.py detect image,count Labels,Boxs Open-cvで取得した画像を引数にして,画像の中から物体検知によって検出された全ラベルとバインディングボックスの情報を戻り値として返す.
    calc_dist width dist バインディングボックスの幅[px]から本体と机との距離を推定するプログラム.戻り値として推定される距離をfloat型で返す.
    calc_davi width,dave dave 机のピクセル幅と画像の中心からバインディングボックスの中心の偏差をピクセル値で引数に取り,戻り値として推定される机とMIRSの中心のずれを返す
    save.py 殺菌情報を保存する
    ラズパイモジュール

    Raspberry Piのモジュール構成のダウンロードはこちら

    Arduinoに必要な機能

    • Raspberry Piとシリアル通信を行う機能
    • ロータリエンコーダを処理する機能
    • モータの制御をおこなう機能
    • 昇降板を上下させる機能
    • IOピンの管理,信号処理をする機能
    • LEDの点灯機能

    モジュール名 概要
    io モータ・エンコーダ以外のI/Oポートに接続されたデバイスを制御するモジュール LED・タッチスイッチは拡張シールドに装備されていたものを使用
    encoder
    distance
    motor 時間の引数を追加して時間で制御できるようにした
    vel_ctrl
    run_ctrl
    raspi Raspberry Piとシリアル通信を行うモジュール
    led LEDの制御モジュール
    motor_board 昇降板のモータ制御モジュール
    decod

  7. フローチャート
  8. フローチャート
  9. メカ
  10. エレキ