HN 日本語サマリー

← 一覧へ戻る
AI・機械学習

邪魔にならないように:私のロボティクス入門コース

Getting out of the way: my robotics crash course (thisismypersonalblog.com)

82 pointsby systemerror23 コメント

要約

著者は、LLM(大規模言語モデル)を活用したソフトウェア開発の経験を活かし、子供たちに触れて感じられるものを提供するためにロボットアームのプロジェクトを開始しました。初期の試みでは、ハードウェアの制約やLLMのキャリブレーション、空間マッピングの難しさに直面しましたが、LLMに介入を減らし、カメラフィードバックと抵抗フィードバックに頼るように指示した結果、ロボットアームは自律的にブロックを掴んで指定された場所に配置できるようになりました。

全文翻訳

私の非常に原始的なワークスペースとロボット、フレームの上部から下を向くウェブカメラ。 私はロボットをやりません。ブログも書きません。しかし、今、私はロボティクスについて自分のブログにブログを書いています。 私はソフトウェアの人間で、25年間ソフトウェアを書いてきました。そして過去9ヶ月以上はLLM駆動のソフトウェア開発に深く入り込んでいます。 そして、この過去9ヶ月で、私は過去25年を合わせたよりも多くのソフトウェアを構築しました。 私の個人的なGitLabは現在41のプロジェクトをホストしており、そのほとんどは私が定期的に使用している、または友人や家族のために構築した実際の製品です。 LLMに導かれた私のソフトウェアの旅がどれほど素晴らしいものであったとしても、特に技術者以外の人と話すときは、すべてが少し非現実的に感じられるようになりました。 私たちが1年前とは違う世界に生きているという考えは、私が話すほとんどの技術者以外の人の間では失われているようです。 この変化を最も確信させたかったのは私の子供たちでした。 私たちはいくつかのビデオゲームプロジェクトを試みましたが、彼らは明らかにゲームを作るよりもゲームをプレイしたいので、結果はまちまちでした。 彼らが見て、触れて、感じることができる何かを見つけたいと思ったので、私はロボットアームを購入し、最善を尽くしました。 私は趣味に費やす時間が限られているので、思い切って組み立て済みの3DプリントされたLeRobot SO-101キット(バッテリー込み、送料込みで415ドル)を購入しました。 キットに付属していたリストマウントカメラに加えて、LLMに別の参照点を提供するために50ドルのウェブカメラを追加しました。 もしあなたが個人的に時間と忍耐力を持っているなら、このセットアップをずっと安く構築できます。 特に自分で3Dパーツをプリントできるなら。 しかし、私はロボットを自分で作るのにうんざりしていました。少なくとも、何か有用なことができるとわかるまでは... 引き出しを漁ることから始めます 私は8年前のRaspberry Pi 3を見つけました。それは少なくとも5年間引き出しに眠っていました。 マイクロUSBケーブルを見つけ、正常に起動しましたが、SDカードに最新のRaspberry Pi OSをフラッシュする必要がありました。5つのメジャーバージョンも古かったからです。 最初の数時間、Codexを使用してPiをプロビジョニングし、ロボティクスコントローラーおよびウェブカメラインターフェイスにしました。 LeRobotプロジェクトから必要な制御ソフトウェアと、Pythonなどの開発ツールをダウンロードしてインストールしました。 カメラビューを監視し、最終的にロボットアームへの制御メカニズムを提供する簡単なWebダッシュボードも構築しました。 図2:私の仮想リーダーダッシュボード Codex(Astra)が主導し、ほとんどの基盤は小さく始めて慎重に進むことから構築されました。 サーボを保護し、検出された過負荷がトルクと電力をカットしてロボットや他のものを損傷しないようにするためのソフトウェアを記述するのにかなりの時間が費やされました。 印刷されたAprilTags(QRコードのようなもの)を使用して、非常に小さな動きとキャリブレーションから始めました。 また、カメラが簡単に識別できるように、ロボットのサーボジョイントに「AprilTagged」を適用しました。 図3:計画、楽観的なフェーズ。 すべてのリンクにAprilTags、テーブル上のタグシート、ジオメトリに合わせる、グラブを計画する。 最初の実際の問題は、シリアルリンクがドロップしたことでしたが、モーターが動いている間だけでした。 コードにいくつかのバグを見つけましたが、電力の問題も特定しました。 私たちの電源は、一度に1つのサーボに電力を供給するには十分でしたが、一度にすべてのサーボに電力を供給するには不十分でした。 新しい電源を購入しましたが、それが郵便で届くまで、一度に1つのサーボにのみ電力を供給しながらアームを動かす必要がありました。 この時点で、キャリブレーションと残りの実験を実行するためのソフトウェアの構築に多くの時間(とトークン)を費やしました。 最終的に、Codexの週ごとのクレジットをすべて使い切り、Fable 5.1に切り替えることにしました。これにより、APIレートでトークンを燃焼することなく作業を続けることができました。 このCodexからClaudeへの引き継ぎで私が本当に気に入ったことの1つは、完全なChatGPTチャットを他の人やLLMと共有できることです。これにより、彼らは要約ではなく、完全なチャットログから独自のコンテキストを構築できます。 キャリブレーションと空間マッピング:理論上は素晴らしいアイデアですが、実際にはそれほどではありません Fableを使用し、基本的な動きと空間認識の基盤が整ったので、計画に戻りました。LLMにキャリブレーション済みの実行を使用して空間をマッピングさせ、逆運動学を使用してアクションを計算して計画を実行させます。 当初、ロボットを特定のポーズにし、ピンチポイントの高さを測定し、ベースからの距離を測定するように求められました。 これはキャリブレーションに向けた進歩のように見えましたが、実際に動きを実行しようとすると、それらは大きくずれており、計算された位置から観測された位置にロボットを調整するためにカメラからのフィードバックが使用されていないことは明らかでした。 図4:これは、プロジェクトの成功に向けて順調に進んでいると信じさせてくれた最初のフェーズ中に実行された初期の計算でしたが、実際に計画を実行しようとするまで。 それでも、このアプローチを諦める準備はできていなかったので、さらに数回試行しました。 同様の結果が発生し、このプロセスからどのように自分自身を取り除き、LLMにもっと多くの作業を任せることができるか自問し始めました。 方程式から自分自身を取り除く時が来たと判断しました... ミートプロキシを取り除く 娘のバレーボールの練習をコーチするために数時間離れる必要があったので、私が主な障害物を取り除くのに最適な時期でした。 練習に向かう途中、/remote-controlを使用してClaudeに別の方法を試すように依頼しました。Claudeにはこのプロンプトを残しました。 テーブル上でグリッパーをゼロ点にし、抵抗に遭遇したらサーボを停止させて、それをゼロ点として使用することは可能ですか? 同様のアプローチを使用して、ブロックの位置を推測して確認できます。 正しい位置を判断するためにカメラを使用し、常に停止して測定するのではなく、抵抗フィードバックを追加する必要があります。 目標はブロックを拾って指定された場所にドロップすることです。キャリブレーションと空間マッピングに焦点を当てるのではなく、それに焦点を当てましょう。 私が練習に行っている間、Claudeは抵抗と停止メカニズムをテストし続けて、ゼロレベルを計算しました。 カメラとロボットアームの間のフィードバックループを、抵抗測定を使用して構築し、ピックアンドプレイス操作中にフィードバックを提供するために、オーバーヘッドカメラとリストカメラの両方を使用しました。 デスクに戻ると、Claudeにロボットアームを使ってブロックを見つけて掴むように依頼しました。 最初にグリッパーをテーブルに過度に押し付けました。 ロボットをテーブルに固定しているクランプから外れるほど強力でした。 幸いなことに、ロボットやテーブルに損傷を与える前に停止しました。 その後、LLMはすぐに誤計算を特定し、再び発生しないようにソフトウェアを調整しました。 私の入力なしで... 青、赤、紫のピル 図5:夕食のために休憩する前に、ピックエリアにある3つのブロック。 プロセスの初期段階で、テーブルに対するコントラストを高めるためにテストブロックに白いテープを追加しました。 テープはわずかに裂けており、ブロックの端まできれいに終端していませんでした(図3を参照)。 この問題により、LLMがブロックの端を認識するのが困難になり、グリップ幅を判断できなかったため、グリップが失敗しました。 裂けた白いテープを取り除き、テーブルやアームから目立つようにするために赤いマスキングテープに交換しました。 寝る準備ができた頃には、ほぼ成功したグリップを目にしていましたが、ぎこちなく、一貫して機能していませんでした。 寝ることにし、LLMに本当の挑戦を残しました。赤いブロックの隣の「ピック」エリアに、青いテープの付いたものと紫のテープの付いたものの2つのブロックを追加しました。 寝る前にClaudeに残した最終的なプロンプトは次のとおりです。 紫と青のブロックを追加しました。あなたの新しい目標は、紫、赤、青のブロックを青いテープでマークされたドロップエリアに配置することです。ワークスペースはクリアなままにしておく必要があります。続行する前にクリアかどうかを私に尋ねる必要はありません。目標が完了するまで作業を続けてください。 目覚めると、嬉しい驚きがありました。