ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

コンフィグレーション空間での可動範囲

コンフィグレーション空間での可動範囲

ロボティクスの勉強、3周目くらいに入ってます。

ロボットを可動範囲内でどう制御するかの話で、xyz空間での制約ではなくコンフィグレーション空間での制約を使う方法があります。

Modern Robotics: Mechanics, Planning, and Controlから

2軸のロボットの場合、姿勢としてθ1とθ2があります。そのθで可動範囲を決めることができれば、その中でpath planningをすれば、障害物にぶつかることなくロボを制御できます。左の図のxyで問題を解かなくても、右側のθ1、θ2で問題を解けばOK。

ロボの制御プログラムとしては、右側で解けるのは非常に魅力的なのですが、じゃ右の図はどうやって作るの?というのがずっと分かりませんでした。

Principles of Robot Motion: Theory, Algorithms, and Implementations に右の図の作り方が載ってました。まず、θ1とθ2が決まれば、ロボの姿勢が一意に決まります。障害物が既知であれば、その姿勢が衝突するかどうかが分かる。後は、θ1、θ2をgridに区切って、全領域でぶつかる、ぶつからないをプロットすれば右の図ができる。なるほど。

柱とか床とか絶対に動かない障害物に対しては有効な気がします。

コンフィグレーション空間からxyz空間の変換って何回か行列かけたり足したりするだけだから、今の姿勢から一定の範囲のコンフィグレーション空間についてGPU使って一気にベクトル演算して、リアルタイムに点群と衝突判定するとかできないのかな。