End-User Robot Programming
- 別名: end-user programming, EUP
- カテゴリ: Control › Human in the loop
- タグ: human-robot-interaction, robot-programming, usability, collaborative-robots, programming-by-demonstration
ロボットやプログラミングの専門知識をもたない人々が、必要なときに必要な場所で、自らロボットのふるまいを作成し、調整し、別の作業に割り当て直せるようにする手法とツール。
定義
エンドユーザーによるロボットプログラミング(end-user robot programming)は、工場の作業者、技術者、教師、介護者など、実際にロボットを使う人々が、専門的なプログラミングのスキルを必要とせずにロボットに何をさせるかを伝えられるようにすることを扱う、ロボティクスとヒューマンコンピュータインタラクションの分野である。ソフトウェアにおけるエンドユーザー開発の考え方をロボットに当てはめたものであり、ロボットではプログラムが物理的な動作、センシング、不確かさ、安全性にも対処しなければならない。
多くの手法があり、組み合わせて使われることも多い。デモンストレーションによるプログラミングでは、ユーザーがアームを手で動かすキネステティックティーチングや遠隔操作などを通じて、作業を実際に示す。ブロックベースのエディタやフローチャート、タイムラインのツールを含むビジュアルプログラミング環境では、ユーザーが動作をグラフィカルに組み立てられる。産業用ロボットや協働ロボットのアームのティーチングペンダントは、ウィザード形式の作業テンプレートを提供することが増えている。トリガーアクション型のルール、計画した動作をその場に表示する拡張現実のインターフェース、そして今ではコードや作業計画を生成する大規模言語モデルの上に構築されることが多い自然言語インターフェースも選択肢である。ビヘイビアツリーやステートマシンは、基盤となるプログラム表現としてよく使われる。
中心的な課題は、ユーザーが現実の作業を記述できるようにする表現力、作ったものが意図どおりに動くようにする正しさ、そして専門家でない人が書いたプログラムが、衝突、関節リミットの違反、人の近くでの過大な速度、挟み込み箇所などの危険を生まないようにする安全性である。これらの課題への取り組みには、シミュレーションによるプレビュー、プログラムの自動的な検証とチェック、専門家の知識を符号化してフィードバックを返すクリティックやバリデータ、そして結果の確認や修正のためにユーザーをループ内にとどめることがある。このサイトのキネステティックティーチングは、エンドユーザープログラミングにおける入力手法の 1 つであり、より広い分野としては、プログラムをどう表現し、編集し、チェックし、保守するかも扱う。
重要な理由
小規模な工場、研究室、家庭、介護の現場のロボットは頻繁に作業を割り当て直す必要があり、変更のたびにロボットの専門家を雇うのは現実的でない。エンドユーザープログラミングは、ロボットを一緒に働く人々が調整できるかどうかを決めるものであり、使いやすさの要件と安全性の要件が最も直接にぶつかる場所でもある。
主な用途
- 中小規模の製造業における協働ロボットのアームの作業の割り当て直し
- 特定の場面に向けたソーシャルロボットやサービスロボットのプログラミング
- 教育用ロボティクスとプログラミング教育
- 介護者やユーザーがカスタマイズする支援ロボット
- 科学者が設定する研究室の自動化
実際の使われ方
小さな電子機器の工房が、マシンテンディングに協働ロボットのアームを使っている。技術者が新しい作業を平易な言葉で説明する。トレイから基板を取り出し、テスターに入れ、結果に応じて 2 つの箱に仕分ける、というものである。言語モデルがその説明を、ロボットの作業フレームワークのプログラムに変換する。実行前に、一連の自動クリティックがシミュレーションでプログラムをチェックし、衝突、到達可能性、オペレーターの位置付近での速度、アームとテスターの間の挟み込み箇所を調べ、問題を平易な言葉で報告する。技術者は、フラグが立てられたステップを、アームを手で修正後のウェイポイントへ動かすことで直し、AR ビューで動作をプレビューしてから、最初の数サイクルは速度を落として実行する。
よくある誤解
- エンドユーザープログラミングとは、より簡単なユーザーインターフェースのことにすぎない — 専門家でない人が作ったものをチェックし、デバッグし、安全に実行する手段も必要である
- 自然言語によってロボットプログラミングは解決した — 生成されたプログラムは誤っていたり安全でなかったりすることがあり、依然としてチェック、フィードバック、ユーザーの確認が必要である
- デモンストレーションによるプログラミングとエンドユーザープログラミングは同じものである — デモンストレーションは 1 つの手法であり、ほかにビジュアル、ルールベース、言語によるインターフェースがある
- エンドユーザーは動作を記録するだけでよい — 現実の作業には条件分岐、センシング、エラー処理、ループも必要である
知っておくべき人
- ロボットプログラミングのツールとインターフェースの開発者
- 専門家でないオペレーターとともに協働ロボットを導入するアプリケーションエンジニア
- HRI と HCI の研究者
- サービスロボットと協働ロボットのプロダクトマネージャー
関連技術
- デモンストレーションによるプログラミング(Programming by Demonstration)
- ブロックベースのビジュアルプログラミング(Block-Based Visual Programming)
- ティーチングペンダント(Teach Pendants)
- 拡張現実インターフェース(Augmented Reality Interfaces)
- コード生成のための大規模言語モデル(Large Language Models for Code Generation)
- トリガーアクション型プログラミング(Trigger-Action Programming)
関連用語
関連プロジェクト
- Reachy Mini: Open-source desktop robot from Pollen and Hugging Face with an expressive 6-DoF head
- RAI: Vendor-agnostic agent framework for ROS 2 robots and physical AI
- Assistive Gym: Physics simulation framework for training assistive robots in caregiving tasks