Meta(Oculus)Quest で立体視しながら、コントローラーでロボットハンドの操作:システム構成

腕回りの構成は
Meta(Oculus)Quest のコントローラーの動きでロボットの手の動きを制御:システム構成
と同じです。

PCでROS2を動かしてそこを中核に制御しています。

unity appでmeta(oculus) quest のコントローラの位置とクォータニオンを取得しています。取得したデータをEndpointを通じてROS2側にデータを送っています。

ROS2のメインで受け取ったデータから7リンク問題を解いています。ただし、位置は手首に合わせています。手首を合わせた後、その時のクォータニオンと、コントローラーのクォータニオンの差分を残りの3軸で合わせています。

7リンク問題を解いた際の各関節の角度情報をシリアル通信を通じて、Arduinoの送信しています。

Arduinoがロボットのサーボ制御を担っていますが、通信で受け取った角度に合わせるだけです。

首回りはモータードライバにWR-MSXXを使用しています。unityから首回りのEulerを受け取ってその値をもとにサーボを動かしています。

カメラ映像は、OpencvをROS2のノード内で使用して受け取りUnityに送っています。

手首までの関節は上の図のようになります。手首までの4リンク位置決め、手首から先のクウォータニオン決めは数式で1発で出すようになっていないので、これとは違う関節構造の場合でも、ソースは多少参考になるかと思います。