あかすくぱるふぇ

同人サークル「あかすくぱるふぇ」のブログです。

・ティラノ公式チュートリアル
まずは、以下のページに従って、ティラノ用に用意されたモデルを動かします。

「Live2Dロード」から「Live2Dモーション」までの時間が短いと
モーションが反映されない場合があるようなので注意してください。


・live2d公式モデル
次に、live2d公式ページで配布されているモデルを動かします。
桃瀬ひよりモデル(FREE用)を例に説明します。

まずは、Cubism Editorでcmo3ファイルを開き、
「ファイル」→「組み込み用ファイル書き出し」→「moc3ファイル書き出し」
でモデルファイルを書き出します。

物理演算設定ファイル、ユーザデータファイル、表示補助ファイルは
たぶん不要なのでチェックを外してください。

うまくいくと、以下の画像のように、
moc3, model3.jsonファイルとテクスチャ画像の入ったフォルダが生成されると思います。


次に、Cubism Editorでcan3ファイルを開き、
「ファイル」→「組み込み用ファイル書き出し」→「モーションファイル書き出し」
でモーションファイルを書き出します。
※「全シーンを出力」にチェックを入れてOKボタンを押してください。

うまくいくと、motion3.jsonファイルがたくさん(桃瀬ひよりの例では10個)できると
思いますので、それをmotionsフォルダに格納して、下図のように配置してください。

その後、以下の記事を参考に、Viewerでmotionをmodel3.jsonに紐づけます。
https://qiita.com/kurisaka_konabe/items/463471ff68fec6ff91b6

最後に、ティラノ公式チュートリアルと同様に、ティラノビルダー上で
motion3.jsonを指定すれば、ティラノビルダー上で公式モデルを動作させることができます。

・注意点
ティラノ上で、live2dモデルをロードしてすぐだとモーションの適用に失敗する場合がある。
使用する直前ではなく、少し前にlive2dモデルをロードしておくとよい。

・gazeboでworld生成
roslaunch gazebo_ros empty_world.launch world_name:=<abspath>

- コマンドラインの例
roslaunch gazebo_ros empty_world.launch world_name:=/opt/ros/kinetic/share/husky_gazebo/worlds/clearpath_playpen.world

- launchファイルの例
<launch>
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="world_name" value="$(find husky_gazebo)/worlds/clearpath_playpen.world"/>
</include>
</launch>

参考ページ


・ロボットのspawn
<param name="robot_description"
command="$(find xacro)/xacro.py $(find husky_description)/urdf/husky.urdf.xacro --inorder" />
<node name="spawn_husky" pkg="gazebo_ros" type="spawn_model"
args="-urdf -param robot_description -model /"/>

参考ページ


・ロボットのコントロール
urdfにgazebo_ros_control_pluginを追加
yamlファイルにcontrollerのconfigurationを記入し、パラメータサーバにロード
controllerをspawnする
controller経由でロボットに指令を送って動かす

・リポジトリ

・ネットワーク構造
入力画像サイズ:384×384
出力
 heatmap:46×46×19
 paf:46×46×38
構造
 convで46×46×128に変換
 分岐してさらにconv。heatmapは46×46×19に、pafは46×46×38に変換。
 concatenateして、46×46×185に変換。以上の処理をループ。

・正解データ
heatmap:各関節について正解位置を中心としたガウス分布
paf:繋がる関節関係を19個定義しておき、それらの中心をつなぐ単位ベクトル(x, y)を、リム全体に配置

・その他
COCO.jsonはオリジナルのデータセットには含まれていない
関節データの3次元目は、0:defined and invisible, 1:defined and visible, 2:not defined
画像に人が写っているのにアノテーションがない領域を定義するマスク画像も利用してる

↑このページのトップヘ