* 身体モデル自動生成 [#w50021bf] 2016年7月頃に考えたネタで、いせしまこん以降、何人かに話している内容のまとめ。~ #contents **概要 [#p9d5df51] きちんと制御しているロボットは、運動学/逆運動学計算に必要な身体モデルを持っています。~ ざっといえば、回転軸とその相対的な位置情報を組み合わせたデータです。~ ~ こんなの~ #ref("身体モデル.png",,100%) ~ これを使って、例えば~ 「腰を起点に、各関節に角度を与えた時に、指先がどこに移動するか?」(運動学)~ や、~ 「腰を起点に、指先をある地点に移動させた場合の各関節の角度は?」(逆運動学)~ などを計算します。~ 歩行させる場合は、各種センサー値から足をどこに降ろすかを計算し、そこから逆運動学で各関節の指令値を計算して実行する、みたいな使い方をします。~ ~ ところで「ドライバーを持ったロボットが、ねじを締める」といった場合は、どうしているかというと、HRPシリーズとかは手に持つところから以降、専用の処理を書いて実行しているそうです。~ 人間の場合は、手に持った場合に(もしあるなら)身体モデルが拡張されているのではないか?と考えます。~ 拡張されているからこそ、物を持った状態で、それを手の延長のように動かせたり、杖のように使ったりできると。~ で、これをロボットに応用出来たら面白いと考えました。~ ~ もしこれが可能になると、ロボット内で移動のためのモーションをシミュレートできるので、例えば足が外れても代わりに杖をついて移動したり、歩行ができなくなったら代わりに匍匐前進したり、といったことが可能になるかもしれません。 ~ **ひとつの案 [#de2e090b] 人間の場合は、視覚情報から身体モデルの延長を行うことが多いと思う。~ 同様に画像認識を使用して、信号に反応した部位を判定し、身体モデルを再構成する。~ +規格化されたIDをもつ信号でモーターが動くとして、適当に信号を送ると、反応するモーターが存在するので、その場所をIDと関連付けてマーキングする。 +あるモーターを動かした場合、他のモーターが引きずられるようなら、ID間に何らかの関係(固い棒でつながっているとみなせるのか、柔らかい縄でつながっているとみなせるのか、など)があると記録する。 +上記を繰り返し、モーター間の距離と接続タイプを求めて身体モデルに反映する。 +身体モデルに沿って、各モーターの可動域を確認していく。 まあ、めっちゃ難しそうです(^-^)~ これ、最初はのたうち回っていたロボットがそのうち歩き出すっていう、ちょっとキモイものになるかもw ~ ---- #comment Total:&counter(total); Today:&counter(today); Yesterday:&counter(yesterday);