連載
» 2015年09月15日 07時00分 UPDATE

SYSTEM DESIGN JOURNAL:あのロボットが私のハードウェア予算を食っている! (1/4)

ロボットを止めるにはもう遅すぎる――これはハードウェア予算やシステムデザインの話ですが、影響を軽減することは可能です。「あるロボットに未知の地形を滑らかに歩かせる」を例に、エンベデッドシステム化するロボットについて考えてみましょう。

[Ron Wilson,Altera Corporation. MONOist]

 ロボットが極めて高い効率を手にしつつある今、彼らを止めるにはもう遅すぎるのです。これはロボットのアポカリプス(黙示録)にまつわる怖い話ではなく、次のデザインのハードウェア予算やスケジュールに対する脅威になるという話です。技術シフトを妨げることはできませんが、その影響を未然に防ぐことは可能です。

ロボット化するエンベデッド・システム

 問題はロボット工学の世界の概念とそれに伴うデザイン要件が、エンベデッド・システムに浸透しつつあることで、その浸透は確認可能な順序に従っているようです。まず、多くはスマートフォン技術に由来する低コストセンサーや、無線操縦モデルからのサーボモーターなどのアクチュエータにより、新しいデザインに必要な制御ループの数と複雑さが増大しています。

 より高度な自律性に対する要求により、関連動作のシーケンスの自動化に始まり、ヒューマン・マシン・インタフェース(HMI)が動作から目標にシフトし、完全な自律性に近づくというように、システムの制御が徐々に人間のオペレータからシステム自体に移っています。例えば、自動車におけるMTからATそして、自動運転支援システム、完全な自律走行機能への進化が挙げられます。そして、エンベデッド・システムはロボットになりつつあります。

 この流れに沿って進むと当然、システムに対する計算負荷が増大します。では、それはどの程度なのか、どのアルゴリズムなのか、そうした新たな計算負荷に対してどう備えるのかといった疑問が生じます。そこで、具体例を使ってこの考察を定量化してみたいと思います。最初の例はおもちゃのロボットです。

ヘキサポッドとの遭遇

 ここでの主役は(かわいいと見るか、不格好と見るかは好き好きですが)中央プラットフォームの周囲に6本の脚が放射状に配置されたメカニカル・アセンブリーです(図1)。各脚は3つの自由度を備えており、プラットフォームの平面範囲内で旋回できる他、2つの脚関節を動かすことができます。各ピボットはサーボ・モーターによって制御されます。

 典型的なヘキサポッドは、より一般的で邪悪なロボットの概念と対峙する 図1. 典型的なヘキサポッドは、より一般的で邪悪なロボットの概念と対峙するものである

 全体の構成は魅力的な(昆虫が嫌いでない限り)ビオモーフィズム(biomorphism:有機的造形)と、明らかな簡潔性をあわせ持っています。また、驚くべき複雑性も隠し持っており、一見妥当な要件の変更で必要な計算量が大きく変化することを示す例に事欠きません。

 少し考えれば、ヘキサポッドについての問題が浮かび上がります。ヘキサポッドの脚は車輪ではないので、脚の空間位置と関節の角度の関係が重要です。実際、これは、人間のオペレータにとって複雑すぎて直感的に頭の中で行うことができない一連の三角関数計算です。1人に6台のバックホー(ショベルカー)を同時に操縦することを要求するようなもので、人間にサーボモーターを直接操作させると失敗に終わるだけです。少なくとも、オペレータが脚の位置または姿勢を指定できるようにし、必要な角度をヘキサポッドに計算させる必要があります。

 やや語弊があるものの、インバース・キネマティクス(Inverse Kinematics)と呼ばれるこれらの計算は十分に立証され、オープンソースで実装されています。おもちゃのヘキサポッドではレイテンシが長くてもさほど問題とならないため、Arduinoでも処理する余裕があるはずです。

 皮肉なことに、ロボティクス・ベンダーである krtklのCEO、Ryan Cousins氏、同 CTO のJamil Weatherbee氏、同最高設計責任者のRussell Bush氏からなる技術コア・チームによれば、Arduinoにとって課題はI/Oだと指摘します。

 6本の脚に3つずつ搭載される計18個のサーボにはそれぞれ、約20msおきに1パルスのパルス列が必要です(RC愛好家でない人のために解説すると、不思議なことにモーターの軸角はパルス幅によって決まり、更新頻度は比較的重要ではありません)。ヘキサポッド開発者は多くの場合、Arduinoにマルチチャネル・サーボ・ドライバ・シールドを追加して、パルス列の生成およびタイミングをオフロードしています。

 単純なアプリケーションの場合、各モーターをスルー・レートで回転させるには、サーボにエンドポイント・コマンドを送信するだけで十分です。脚は、ある姿勢から次の姿勢に素早く動きます。しかし、この方法では、いくつかの脚を動かしている間、プラットフォームを安定した姿勢に保つ必要があります。伝統的な手法は、3 本の脚を新しい位置に旋回する三脚歩行です。より滑らかな動きや複雑な歩行が必要な場合や平坦でない地形の場合、動きがより複雑になり、より多くの計算が必要になります。

       1|2|3|4 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.