こんにちは仲間!
週末、hackasborkatonが開催されました-に基づいて自己駆動車モデルのレースdonkeycarキットの支援を受けてX5を、FLESSと自己駆動愛好家のコミュニティ。
タスクは次のとおりでした。最初にスペアパーツから車を組み立て、次にトラックを通過するようにトレーニングする必要がありました。勝者は最速の3周で決定されました。コーンを打つために-失格。
機械学習のためのそのようなタスクは新しいものではありませんが、wifiを正常に動作させることができないことから、訓練されたモデルがトラックに沿ってハードウェアを操縦することを望まないことまで、ずっと困難が待ち受けています。そして、これらすべてが厳しい時間枠で!
このコンペティションに参加したとき、タイプライターの組み立て、データセットの記録、モデルのトレーニングに、昼休みを含めて5時間しか与えられなかったため、非常に楽しくて非常に難しいことがすぐにわかりました。
ロバマシン
Donkeycarは、広角レンズ(170度)のカメラが取り付けられたケース、Raspberry Pi3 +、サーボ制御ボード、ソフトウェア、そして基本的にすべてで構成されています。しかし、後で判明したように、限られた時間でのこのような単純なデバイスの組み立てやランダムな機器の不具合でも、時間がかかる可能性があり、時間がありません。
アセンブリ
競争は、最初に機械を分解して再び組み立てる必要があるという事実から始まりました。主催者に敬意を表する必要があります。理解できない大量のパーツを最初から収集することは提案されませんでしたが、既製の例を使用してデバイスを理解する機会が与えられました。すべての接続の写真を撮ることで多くの時間を節約し、マシンを10分で元に戻しました。
タイプライターに接続して作業を確認する
車を組み立てた後、車をWi-Fiに接続してシャーシのキャリブレーションを開始する必要があったため、一時停止がありました。結局のところ、将来Wi-Fiを使用することは、Raspberryを使用する場合の最大の問題のひとつであり、明らかにアンテナを使用してWi-Fiを使用する必要がありました。
私たちは退屈せず、イーサネットケーブルを介して接続することにしました。イーサネットケーブルは、他のジャンクと一緒に、常にバックパックにあります。何らかの理由で、タイプライターにDHCPサーバーがないか、機能しないか、まったく存在しないはずでした。ケーブルがRaspberryに接続されていると、wiresharkがブロードキャストでソースIPを簡単に取得できることがわかりました。そしてそれは起こりましたが、マシンにログインした後、wifiを機能させるためにかなりの時間を費やしました。結局、すべての参加者は、構成が配置されている特別なファイルから破棄されました。
シャーシのキャリブレーションとジョイスティックの接続
ドックを読んでブルートゥースをスキャンし、タイプライターとジョイスティックをペアリングしようとしている間、ジョイスティックを接続するのに約35分かかりました。問題は、部屋にジョイスティックが多すぎて、他のレースの車とランダムにペアになっていることでした。ランダムな車のシャーシを制御していることがわかったのは本当に楽しかったです=)
次のステップは、ステアリングとスロットル、つまりPWMを調整することでした。ターンとガス。
これは最も重要なパラメータの1つであり、値を車の速度と相関させる必要があり、モデルは制御に対応します。
私たちの直感では、車が十分に速く進むように加速と回転を試みましたが、同時に制御することもできました。
チームのパフォーマンスを考慮すると、イベント終了まで残り約2時間であり、早急に加速する必要がありました。私たちは、マシンがとどまる最も多様な条件を作成する必要があるという考えで、データを書き留めようと走りました。競技開始時には、ライトが再配置されたり、線路の近くに異物が出たりする可能性が高いと想定しました。
スロットルとターンの値と一緒に約18000枚の写真を記録し、多くの人をフレームに入れようとして、トラックを走り回り、ジャンプし、椅子を置き、橋を作り、ランダムにライトを配置し、反対方向に進みました。
また、拡張としてアルバムを追加し、できるだけ多く追加しようとしました。
このフォークでpilからのエンベロープを使用して、悪意を持って重い拡張をハードコーディングしました。その逆も同様です。タイプライターの環境を再構築する必要があり、時間に影響しました。
最初のモデルがトレーニングされるまでに、私たちはすでに2番目のモデルのコードを持っていました。彼らは隣接するトラックから新しいデータを持ち込み、最初のモデルがどうなるかを確認するために走りました。
最初のモデルはエラーで3周を走行し、4周を離陸しました。その後、SDカードをマシンに挿入するのを忘れたため、さらに20分を失いました。
最終モデルは、カスタム拡張とデータクリーニングを使用して19000枚の画像でトレーニングされました。
ネットワーク自体は次のように
なります。逆転のフィールドがあることがわかります。少なくとも最初はバッチノルムをカットできますが、ファックアップが発生しないように、少なくともそれに触れることにしました。
さらに、MSE損失がそれぞれ0.093と0.086の最高の第1モデルと第2モデルのチャート。
2番目のグラフは見栄えが良いようです!
ビデオから、ステアリングの調整とデータセットのクリーンアップが不十分であることが明らかですが、それで十分でした。
メインローンチ後に録画したGoProからのビデオ:
最終
私たちが最初にレースを開始してトラックに行きましたが、そこで失敗し、Wi-Fiが絶えず落ちていて、ほとんど競争から外されました。そして今、スタートがほぼ与えられたとき、マシンは突然戻り始めました。どうやら、スロットルを調整するときに何かを混乱させました。
しかし、何も、聴衆全体の笑いに、彼女は前進し、トラック上で威厳のあるサークル8または9を維持し、強くねじれましたが、それでも私たちに当然の勝利をもたらしました!
フレームを覗かないようにしています。
謝辞
ods.ai コミュニティのおかげで、それなしで開発することは不可能です!チームメイトのValeaBiryukova、Egor Urvanov(Urvanov)、Roma Derbanosov(Yandex)に感謝します。Viktor Rogulenko(FLESS)からのビデオレビューを楽しみにしています。
PS:残念ながら、競技の前日は38.5の気温でしたが、リンクを大いに助けてくれたValyaBiryukovaに特に感謝します。
オーロライ、llc