Help us understand the problem. What is going on with this article?

動く人形キボウちゃんを支える技術

ezgif.com-optimize (5).gif

動く人形キボウちゃん(以後キボウちゃん)とは現在 Segawa が開発中の機械が内蔵された人形です。ソフトウェアは OpenSiv3D を基本として、動きの情報の入力、関節角度の計算、サーボモータへの出力の三段階で構成されています。これから各段階で使用したライブラリ等について紹介します。

入力

動きの情報の入力として、モーションキャプチャのトラッキングデータを活用します。
現在は OpenVR によってトラッキングデータを取得しています。
https://github.com/ValveSoftware/openvr

OpenSiv3D からかんたんに使えるように OpenVRManager と呼ばれるラッパーを作りました。

//VR Device
OpenVRDevice device;
device.init();

//略

if(device.isActive())
{
    device.update();
    targetPos1 = GetTargetPos(device.getRightControllerPos());

//略

また、MMD のモーションデータ(.vmd)の再生や Switch のコントローラ、ゲームパッドにも対応しています。
近いうち OpenSiv3D に LeapMotion、Kinect、Realsense、顔認識が実装されると思われますので基本全てに対応します。

処理

リンク機構のシミュレーションや逆運動学 (IK) 処理には線形代数ライブラリ Eigen を使用しています。
目標とする姿勢を入力すると、それを実現する角度を算出する処理を実装しました。
http://eigen.tuxfamily.org/index.php?title=Main_Page

出力

サーボモータはすべて Robotis の Dynamixel シリーズを用いているため、サーボモータへの角度制御には Dynamixel SDK を使用しています。
https://github.com/ROBOTIS-GIT/DynamixelSDK

これも OpenSiv3D からかんたんに使えるように DynamixelManager と呼ばれるラッパーを作りました。

//Dynamixel
Dynamixel dyna1;
dyna1.connectPort(U"COM3", Dynamixel::BaudRate::Rate1000000, ham::ProtocolType::Protocol2);

//略

dyna1.setWriteRequest(ham::XL320_GoalPosition(4), GetXL320ValueFromRad(motorAngles1.x));
dyna1.sendData();

おわりに

今回紹介した機能は将来的に OpenSiv3D の機能の一部として実装される予定です。
キボウちゃんのプロジェクトは、小規模の量産と普及を一つの目標として取り組んでいます。

また、本プロジェクトは現在は個人で進めており、応援してくださる方を募集しています。
よろしくおねがいします。
https://www.pixiv.net/fanbox/creator/44998054
(最新情報もこちらで公開しています。)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away