100番目の着用可能なデータ収集装置を展開した後、ロボットデータパイプラインは静かに自らを毒し始めた。 AIロボティクスの世界では、データは新しいオイルです。AIロボティクスでは、これらのオイルは、実世界の家庭に展開される着用可能なデータ収集デバイスから来る可能性があります。これらの「手袋」は、次世代のAI駆動型ロボットを訓練するために使用される高信頼性のバイマニュアル操作データをキャプチャします。 しかし、我々は10個のプロトタイプから2000個に拡大したので、我々の製造プロセスは、スケッチなPythonスクリプト、手動のYAMLファイル、そして、最悪なことに、それぞれの手袋のためのカスタマイズされたファームウェアの混乱でした。 こちらは私が使った方法 そして 脆弱でエンジニアだけのプロセスから、私たちのロボットのタスク成功率を直接向上させた愚かなハードウェアDevOpsライフサイクルに移行する。 ウェブシリーズ ウェブUSB 「ハードコード」の悪夢:なぜファームウェアとしてのアイデンティティが失敗するのか 私がチームに加わった時点で、これらの着用可能なデータ収集装置の登録プロセスは基本的にスケーラブルでした。 コンピュータをPCに接続する。 Python スクリプトを実行する (特定のローカル環境とドライバーに応じて)。 C のファームウェア コードを変更して、デバイスの特定のメタデータ(ハードウェア ID、ハードウェア バージョン、ファームウェア バージョン、デバイスが左手か右手か)を含む。 YAML ファイルを使用して Git リポジトリでハードウェア ID とカリブレーションデータを手動でコミットします。 その特定のデバイス用のユニークで一度のバイナリを作成し、フラッシュします。 ヒューマンエラーの影響 このプロセスは、不一致を生み出す土台となりました。誤ったバージョンシート、複数のハードウェアID、間違ったメタデータに直面しました。 2,000マイル離れた家で手袋が誤ったバージョン文字列でデータを送信すると、下流のAIパイプラインが壊れてしまいます。私たちは、収集されたデータを有効にするためにハッキングされたデータ浄化スクリプトを書いています。 The Architectural Shift: The Web as the “Factory Tool” (Webは「工場のツール」) 彼が私にクリックした瞬間は、私がそこにいることを知ったときでした。 & Chromium ベースの Web ブラウザで利用可能な API は、Web フロントエンドが USB 接続されたデバイスと通信することを可能にします。 また、ファームウェアがビジネスができない仕事をしていることに気付きました。 ハードウェアのバージョンやカリブレーションデータなどのメタデータは、クラウドに保存され、必要に応じてセキュアな API 呼び出しを通じてダイナミックに回収できます。 私たちはまた、すべての手袋が同じファームウェアを実行しているモデルに移行し、Web ブラウザは物理的なハードウェアと私たちのクラウドインフラストラクチャの間の橋として機能します。 ウェブシリーズ ウェブUSB 1.ゼロインストール製造ソフトウェアと即時グローバル展開 WebSerial API を使用することで、「私のマシンで動作しない」という問題を解消しました。当社の製造・QC チームは、Python 環境やドライバを管理する必要がなくなりました. 彼らは Chrome で URL を開き、手袋を接続し、ブラウザは手袋のカスタマイズされた PCB で低レベルのコミュニケーションを処理します。 インターフェイス全体が Single Page Application (SPA) であるため、私たちは現在、クラウドソフトウェアと同様の柔軟性で物理的な組み立てラインを管理しています. 私たちは標準の CI/CD パイプラインを使用してビルドを起動し、退屈な静的ファイルホスティングプロバイダーに展開します. もし私たちがカリブレーションアルゴリズムを改善するか、新しい QC チェックを追加するなら、私たちは単にコードを押して自動化されたパイプラインに残りを任せます. 組み立てラインで働く技術者は Git リポーにアクセスする必要はありません. 彼らは単にウェブページを更新して、私たちの製造ツールの最新のエンジニアリング承認バージョンを取得します。 この変更により、各ユニットにエンジニアが独自のファームウェアを手動で構築し、フラッシュする必要があった場合、コードの背景なしで7人の内部製造チームに拡大することができました。 アイデンティティブリッジ:WebSerial meets WebUSB WebSerial は私に必要なすべてだったと思っていたが、技術的な制限により期待通りに機能しなかった: WebSerial だけでは USB シリアル番号を取得できません。 真の「One-Click」プロビジョニングを達成するために、私は2つの独立したAPIをブリッジするためのハイブリッドヘウリスティックアプローチを開発しました。「要求とテスト」戦略を使用して、ユーザーがWebUSBとWebSerialの両方のプロンプトで同じ物理デバイスを選択したかどうかを確認することができます。以下は、あなたが単純なケースでこれを達成する方法の例です(実際には、私はそれをよりユーザーフレンドリーな方法で行い、私たちの特定のワークフローとより統合しましたが、これはコンセプトのイラストです)。 async function openUsbSerialPort( interfaceNumber: number, serialOptions: SerialOptions ): Promise<[USBDevice, SerialPort]> { // 1. let the user pick a USB device and claim the interface for serial communication const device = navigator.usb.requestDevice(); await device.open(); await usbDevice.claimInterface(interfaceNumber); // 2. let the user pick a serial port const port = await navigator.serial.requestPort({ filters: [{ usbVendorId: usbDevice.vendorId, usbProductId: usbDevice.productId }] }); // 3. Test: If the user selected the same device, we shouldn't be able // to open the serial port yet because it's already claimed. const serialPortOpened = await port.open(serialOptions).then(() => true).catch(() => false); if (serialPortOpened) { await port.close(); throw Error("Selected different devices"); } // 4. Match confirmed. Release and open for real. await usbDevice.releaseInterface(interfaceNumber); await port.open(serialOptions); return [device, port]; } これはどこにも文書化されていないが、機能し、オペレーターが手動でシリアル番号を選択または入力する必要がなく、物理ハードウェアを特定のクラウドレコードに自動的にリンクすることができます。 3.Firmwareからアイデンティティを切り離す 各ユニットにユニークなメタデータをフラッシュする代わりに、Webベースのソリューションは流れを革命させました。 Identity Recognition: ブラウザは、WebUSB/WebSerial heuristicを通じてUSBシリアル番号を使用してデバイスを識別します。 クラウド上のメタデータの維持: 登録プロセス中に、そのユニークなIDと関連するメタデータは、登録プロセス中にクラウドデータベースにアップロードされます。 On-demand Retrieval: Gloves がデプロイされると、どのアプリやサービスも API を使用して ID によるメタデータをダイナミックに取得できます。 ファームウェアは愚かで信頼性の高いものであり、クラウドは真実の唯一の源として機能します。 タイトル: Cleaner Data, Better Robots Web 中心のハードウェア DevOps モデルへの移行は変革的でした。 民主化された運用: 7 人の内部チームが登録および QC プロセス全体を処理し、数百時間のエンジニアリング時間を解放します。 データの整合性:誤ったヘッダーとメタデータのエラーを除去しました。当社のデータパイプラインは、すべての2000ユニットで「デザインによってクリーン」です。 タスク成功率:全艦隊の正確かつ一貫した校正により、我々のバイマニュアル操作モデルのパフォーマンスが測定可能に向上しました。 結論 あなたがIoTまたはRoboticsハードウェアをスケーリングしている場合は、Webブラウザをプロセスオーケストラとして扱う。WebSerialとWebUSBを標準のWeb CI/CDと組み合わせることで、ハードウェアとクラウドの間のギャップを縮め、各ハードウェアユニットが最適で最新であることを保証することができます。