動く人形キボウちゃんを支える技術
動く人形キボウちゃん(以後キボウちゃん)とは現在 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
(最新情報もこちらで公開しています。)
Author And Source
この問題について(動く人形キボウちゃんを支える技術), 我々は、より多くの情報をここで見つけました https://qiita.com/hamukun8686/items/b7537beab95d99c9c4e2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .