名称 MIRS2301 第1回ソフト開発報告書
番号 MIRS2301-MEMO-0027

版数 最終更新日 作成 承認 改訂記事
A01 2024.1.19 古賀 祐太、田中 康太郎、小野颯斗 初版

目次

  • 1.ドキュメント
  • 2.親機の作成したプログラムの概要および評価
  • 3.子機の作成したプログラムの概要および評価
  • 4.総括
  • 5.プログラムのソースコード
  • 1.ドキュメント

    本ドキュメントはROCASLの親機・子機のソフトウェア開発報告書である。

    2.親機の作成したプログラムの概要および評価

    2.1 壁との並行走行

  • 概要
  • 超音波センサで正対補正を何回も行い黒板との距離を保ちながら走行を行った。
  • 評価
  • 超音波センサの精度とAruduinoの左右のタイヤ比が教室の場所によってゆがんだいるところがありうまく平行に走らなかった。 超音波センサを横向きに配置して常に正対補正を行えるような形にしておけばどんなところでも正確に走行できたと考えられる。
  • 対象プログラム
  • pilot.c(RaspberryPi) uss.c(RaspberryPi)

    2.2 ワイヤー制御

  • 概要
  • ワイヤーをモータで巻きワイヤーの長さを調整することにより吸引機の位置を調整する。エンコーダにより長さを定めた
  • 評価
  • ワイヤーを上げるときと下すときにPWMを同じにすると吸引機の重さが作用して勢い良く回ってしまうため修正したがPWMを減らすとモータが動かなくなってしまった。 黒板のレーンに吸引機をすぐ近くにもっていかないとうまく吸うことができないのでぴったりの値を調整しなければならなかったがバッテリーによって上がり具合も変わってしまうので 調整しきれなかった。
  • 対象プログラム
  • motor_set(ESP32)

    2.3 子機との通信

  • 概要
  • bluetooth通信で子機に起動信号、停止信号を送信する。
  • 評価
  • 子機との通信は問題なくできた。 親機が黒板のレーンを清掃しているときに黒板付近に来てしまうため接触しようとすることがあるので子機側との新たな通信で接触を避ける方法が必要であった。
  • 対象プログラム
  • esp32(ESP32)

    2.4 黒板レーンの吸引清掃

  • 概要
  • 黒板のレーンのチョークの粉を吸引機校で清掃する。
  • 評価
  • 吸引するにあたり電力が必要であったため走行と同時に行うと少し弱まってしまった。 ずっと吸いっぱなしだとごみをためるところにごみを落とさないため起動と停止を繰り返し行った。
  • 対象プログラム
  • vac_air(arduino)

    2.5 黒板レーンの吸引清掃

  • 概要
  • 空気を吸引し、フィルターを通して空気清浄を行う。
  • 評価
  • 吸引清掃同様電力をとても使用するため、社会実装の際は動かすことができなかった。
  • 対象プログラム
  • vac_air(arduino)

    2.6 LINEの連携

  • 概要
  • SNSサービスLineを用いて、起動させる時間を指定する。 ラズパイでngrokというローカルPC上で稼働しているネットワーク(TCP)サービスを外部公開できるサービスを用いて、Lineとの通信を可能とした。 メッセージをラズパイ側で常時受け取り可能にし、handler.add(MessageEvent, message=TextMessage)関数で指定の文字列を送られるとそれに対して指定したメッセージ(ボタン)を送信する。 その後ボタンによって送られてきた時刻をhandler.add(PostbackEvent)によって処理し、booking.pyで設定した時刻と現在時刻との差を出力し、その差が0になったら起動する。

    figure1. :Line実装画面1

    figure2. :Line実装画面2
  • 評価
  • Lineの受け取りから動作まではできた。しかし、仕様上Lineを受け取ってからラズパイを起動するといったことは不可能であった。また、学校のWi-Fiがngrokを用いた関係で対応しておらず、 テザリングで対応した。その結果通信の届きづらい場所では動作に遅延が発生した。
  • 対象プログラム
  • send_rec(RaspberryPi)
    booking(RaspberryPi)

    3.子機の作成したプログラムの概要および評価

    3.1 マッピングおよび自己位置推定

  • 概要
  • ライダーを用いて周辺情報を取得し事前に入ってデータをもとにルートを作成

    figure3. :マッピング_子機
  • 評価
  • あらかじめマッピングしたところでの走行をすることができた。自己位置推定では似たような位置で自己位置を誤認したり、実際の場所とずれたりしたため、プログラム上での補正をした。 また、ライダーの取り付けが少し斜めになっているがプログラムで補正できた。
  • 対象プログラム
  • cartographer_node(JETSON)
    move_base_node(JETSON)

    3.2 床走行

  • 概要
  • 床を走行させる
  • 評価
  • ゴールの指定は角度と座標の指定が必要だが、角度のほうがうまくいかず、一部、モータのエンコーダで回転させていたこともあったが、プログラムの調整でエンコーダに頼らずとも回転ができるようにはなった。 ある一定時間動かすとエンコーダによる回転で振動することがあったが暴走はすることなく動いていた。 マップにない障害物をよけることは無理で、壁との衝突もあったが、ある程度ルート道理にはできていた。
  • 対象プログラム
  • calculate_node(JETSON)
    motor.ino(ESP32)

    3.3 親機との通信

  • 概要
  • bluetooth通信で子機に起動信号、停止信号を送信する。
  • 評価
  • 子機との通信は問題なくできた。 親機が黒板のレーンを清掃しているときに黒板付近に来てしまうため接触しようとすることがあるので子機側との新たな通信で接触を避ける方法が必要であった。
  • 対象プログラム
  • bt.ino (ESP32)

    4.総括

    4.1 親機総括

    ソフトとしてはメカやソフトが終わるまでに、プログラムを完成させていたが実際に動かすことによる不具合があり、その調整が大変であった。 社会実装に伴い、ソフトだけでは解決できない問題がありそれについても都度話し合いを行うべきであったが少ししか改善できなかった。 購入物品のタイミングもあり、もっと早く社会実装について考えられていれば解決できた点もあった。 LINEの実装について、ほかの機能と違って発表会や社会実装で見てくれる人に触れられるようなものにするべきだった。

    4.2 子機総括

    子機はLIDARを用いた走行ができ、親機との連動して動作もすることができた。人やマップにない障害物を避けることができなかったため、こういった外乱に対応できるような改善が必要である。

    5.プログラムのソースコード

    5.1 親機のソースコード

    Raspberrypi_oya
    Arduino_oya
    ESP32_oya
    Line_oya

    5.2 子機のソースコード

    JETSON_koki
    ESP32_koki



    MIRS2031ドキュメント管理台帳