21 Oct 2012, 11:46

KinectとMMDを使って落語をしてみた。

前回は、Kinect for Windowsと MikuMikuMovingを組み合わせて、3DのキャラクターをKinect で操作する方法を知らべた。

Kinect for Windows によるMMDの使い方

今回は、それをちょっと応用してみて、Kinect で 落語をしてみた。

(実はこれがやりたくて、Kinectを購入した)

味噌豆 on MMD

[http://www.youtube.com/embed/eb3YkpOUrNQ]

演じてみたのは、古典落語の小噺『味噌豆』。

出囃子は志ん生師匠の一丁入りを拝借しています。

(http://www.youtube.com/watch?v=RK0UUX-K31s)

ステージは、MMD演芸場(http://www.nicovideo.jp/watch/sm12172730)

モデルは、双音レンジ(http://mmd.dip.jp/files/320)

を利用させていただきました。

もう少し改善したい点は、

  • 手の仕草(パーしかできない)
  • 表情
  • リップシンク
  • 自分の部屋の狭さ(えっ?(・0・)?)

まあ、鑑賞に堪える(耐える?)ようなので、よしとしよう。

17 Oct 2012, 22:33

Kinect for Windows によるMMDの使い方

MMDが自分の動作に合わせて動いたら楽しそうだなーというだけの理由で、Kinect for Windows をAmazonで衝動買いした。価格は、22000円。

KinectをつかってMMDのモーションをキャプチャーする方法はインターネット上にたくさん紹介されている。しかし、よくよく調べてみると、これはすべて xBoxタイプの方法だった・・・orz。

えっ、Kinect for WindowsだとMMDつかえないの?
2万円したんだよー!

という思いとともにいろいろと調べたら、なんとか使う方法がわかったので、メモしておく。

Kinectには2種類あるらしい

Kinectには、Xboxに接続して使うタイプと、PCに接続して使うタイプの2つがあるらしい。そして、あたしはxboxをもっていないという理由で、PCに接続してつかう、Kinect for Windowsを購入した。

2つの機能比較は、以下のリンクが参考になる。

http://thinkit.co.jp/story/2012/07/03/3605

  • Xboxに接続するタイプ

 

  • PC(Windows 7)に接続するタイプ

 

Kinect for Windowsでミクを動かせ

MMM(MikuMikuMoving)がKinect for Windowsに対応している

MMDではダメだけれども、MikuMikuDanceの互換ソフトMikuMikuMoving(以下MMM)がKinect for Windowsに対応していることがわかった。ダウンロードは以下のサイトから。

MikuMikuMoving

MMMを起動するとリボンの[Kinect]タブをクリックして、キャプチャをクリックすると、Kinectから動作を取り込むことができる。image

こんな感じで、踊ってみた。ふう。

[http://www.youtube.com/embed/mPLmooCeXBM]

他、MoggNUI 導入でMMDをつかう方法について

どうやら、MoggNUI を利用するとMMDでもKinect for Windowsが使えるらしい。

ただし、自分の環境(Windows7 64bit)ではエラーして動かなかった。http://masque2525.blog97.fc2.com/?tag=Kinect

おまけ OpenNIを利用しようとして失敗した記録

失敗1 OpenNIをつかう方法

xboxタイプだと、以下の方法が王道パターン。

  1. OpenNIをインストール。
  2. SensorKinect(Kinectのドライバ)をインストール
  3. NITEをインストールする
  4. DxOpenNIをインストール。

しかし、この方法を試しても、Kinectをデバイスとして認識してくれない・・・。この時点で、Kinect for Windows SDKとOpenNIの両方を使うことができないことに気づく。

失敗2ツꀀ kinect-mssdk-openni-bridgeを試す

kinect-mssdk-openni-bridgeをつかうことで、Kinect for Windowsから OpenNIを利用することができる。ダウンロードは以下から。

kinect-mssdk-openni-bridge

しかし、残念、これをインストールしてもMMDからはOpenNIにアクセスできなかった。

OpenNIがインストールされていませんという注意がでて終了。

13 Oct 2012, 02:52

プロファイラgprofをつかう

CPU負荷を測るツール、gprofを試したので、簡単にメモ。

gprofでプログラムの性能をしらべる

プログラムの性能情報を知ることができる(プロファイリングできる)ツール。
実行ファイルから、以下の情報を得ることができる。

  • 実行時間

    • 単位時間内に関数の呼ばれた回数
    どの処理に時間がかかっているのかを、感覚的にではなくて数値情報として得ることができる。CPUに負荷がかかりすぎると組み込みソフトでは異常終了してしまう。このツールが利用することで、時間がかかっているポトルネックを発見できて、処理速度を最適化できる(らいし・・・試してないので)。

使い方

gprofはgccとともについてくるツールなので、とくにダウンロードは不要。
which gprofで見つかった。

ブロファイラ情報を得るには、ビルドするときに、以下のコンパイルオプションをつける。

-pg

MakefileだとCFLAGSに追加すればよい。

CFLAGS += 窶菟g

実行バイナリを実行すると、カレントフォルダにgmon.outというファイルができる。
このgmon.outに解析情報がはいっている。

解析結果を取り出すには、以下のコマンドを叩く。

gprof (実行ファイル).exe gmon.out

(実行ファイルはオブジェクトファイル(hogehoge.o)でもいい)

%   cumulative   self         self     total
time   seconds   seconds    calls      Ts/call  Ts/call  name
0.00      0.00     0.00       1001     0.00     0.00  buffer_over_run
0.00      0.00     0.00        1         0.00     0.00  buffer_over_run2

for文を1000回回してみたらこんな感じ。

その他メモ

Eclipseからgprofの解析結果を表示できるらしい。
試してみたが動かず。 どうやらCygwinは未対応?

http://wiki.eclipse.org/Linux_Tools_Project/GProf/User_Guide




                    

13 Oct 2012, 01:37

Eclipse CDTで gcovの結果を見てみる

gcovの出力結果をEclipseでみる方法を調べてみた。

Eclipse 3.7(Indigo)までは CDT gcov pluginが動いたけど、Eclipse4.2 (Juno)からは、動かない・・・。しかし、代わりに、Eclipse Juno では GCov pluginが動作した。

というわけで、2つの方法を紹介する。

その1CDT gcov plugin

インストール

以下のサイトからダウンロード。

http://sourceforge.jp/projects/ginkgo/

ダウンロードファイルを解凍すると featuresとpluginというファイルがある。

それぞれeclipse.exeと同じフォルダにあるfeaturesとpluginにコピーする。(org.ginko.gcov.feature_0.2.2とorg.ginkgo.gcov_0.2.2.jar)

あとは、- cleanオプションをつけてEclipse再起動。

CDT gcov pluginの設定

[プロジェクトエクスプローラ]からカバレッジを出したいプロジェクトを右クリックしてオプションを選択。

C Coverageという項目があるので、Activate natureを有効にする。

image

gcovを実行して、出力用データを作成する

Eclipseで表示するには、.gcovという形式のファイルをつくる必要がある。
以下の3ステップで作成する。

ビルドして hogehoge.gcnoを作成

ビルドして.gcnoファイルを作成する。
ビルドするときに、以下のオプションをつける。

-fprofile-arcs -ftest-coverage

MakefileだとCFLAGSに追加すればよい。

CFLAGS += -fprofile-arcs -ftest-coverage

実行ファイルを実行して、hogehoge.gcdaを作成

実行ファイル(.exe)を実行すると、*.gcdaができる。
自分の場合はGoogleTestでテストコードを書いて、テストを実行することで、カバレッジを得る。

gcovコマンドを実行して、hogehoge.c.gcovを作成

Eclipseでカバレッジを得るには、もう一工夫必要。
実行してできた、hogehoge.gcdaに対し、以下のコマンドを実行するとhogehoge.c.gcovというファイルができる。

gcov hogehoge.gcda

 

その2 GCov plugin を使う

以下からダウンロード。
http://wiki.eclipse.org/Linux_Tools_Project/GCov/User_Guide

ちなみに、Pleades日本語プロジェクトからEclipse 4.2 CDTを落としてきたら、Defaultでついていた。
http://mergedoc.sourceforge.jp/index.html#/pleiades.html

hogehoge.gcdaを作る

つくりからは上に同じ。
作成したら、プロジェクトビューから、作成したhogehoge.gcdaを開く。
実行バイナリファイルに含まれるすべてのカバレッジデータを出力するか、ファイル単位で出力するかを選択する。

image

ファイル単位で開いてみると、カラー表示されたカバレッジ出力結果が表示される。

image

実行バイナリファイル単位で表示すると、gcovビューにカバレッジの集計が見える。
(開くまで時間がかかる)

image

(GCovユーザガイド)http://wiki.eclipse.org/Linux_Tools_Project/GCov/User_Guide#Installation_and_Set-Up

08 Oct 2012, 23:34

DoxygenとJenkinsを連携させてみた。

前回までの記事で、Doxygenの基本的な使い方を書いた。

Doxygenでドキュメント管理しても、実は見ないことのほうが多かったりする。その理由は、

  • 目につく場所にないから
  • ソースコードを修正するたびにdoxygenファイルを作り直すのが面倒だから
  • ソースの修正がドキュメントに反映されていないから

などなど、考えられるが、Jenkinsを利用して、Jenkinsジョブを流すたびにドキュメントを更新し、さらにはJenkinsから閲覧できるようにすれば、上に上げた課題は解決するかも。

というわけで、JenkinsとDoxygenを連携してみる。

Doxygen Pluginのインストール

JenkinsにはDoxygen Pluginというものがあるので、インストールする。

[Jenkinsの管理] > [プラグインの管理] からDoxygen Plugeinを選択して、ダウンロードとインストール。

インストールできたらジョブの[設定] からビルドのDoxygenの生成コマンドを追加。

ex.) doxygen doxygen.conf

[ビルド後の処理の追加]から[Publish Doxygen]を選択。

doxygenの設定ファイルを指定する。

image

ビルドを実行して、Doxygenファイルを生成してみる。

DoxyGen HTMLというメニューが現れて、リンク先からDoxygenを閲覧することができる。


注意: こんなエラーがでたら、Doxygenのフォルダパスを指定している。

フォルダではなくて、Doxyfileを指定する。

Publishing Doxygen HTML results.
FATAL: error
java.io.FileNotFoundException: C:\Users\TSUNEMICHI\Dropbox\src\mock_study\html (アクセスが拒否されました。)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at hudson.plugins.doxygen.DoxygenDirectoryParser.loadDoxyFile(DoxygenDirectoryParser.java:208)
    at hudson.plugins.doxygen.DoxygenDirectoryParser.retrieveDoxygenDirectoryFromDoxyfile(DoxygenDirectoryParser.java:345)
    at hudson.plugins.doxygen.DoxygenDirectoryParser.invoke(DoxygenDirectoryParser.java:53)
    at hudson.plugins.doxygen.DoxygenDirectoryParser.invoke(DoxygenDirectoryParser.java:14)
    at hudson.FilePath.act(FilePath.java:842)
    at hudson.FilePath.act(FilePath.java:824)
    at hudson.plugins.doxygen.DoxygenArchiver._perform(DoxygenArchiver.java:219)
    at hudson.plugins.doxygen.DoxygenArchiver.perform(DoxygenArchiver.java:176)
    at hudson.tasks.BuildStepMonitor$2.perform(BuildStepMonitor.java:27)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:717)
    at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:692)
    at hudson.model.Build$BuildExecution.post2(Build.java:183)
    at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:639)
    at hudson.model.Run.execute(Run.java:1527)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:236)
Build step 'Publish Doxygen' changed build result to FAILURE






                    

08 Oct 2012, 22:38

Doxygen C言語のコメント備忘録

前回の記事では、Doxygenの導入をまとめたので、

ここではC言語/C++で使えるコメント(Doxygenタグ)の記入方法をまとめる。

公式サイトには、全てのコメント使用例が書いてあるが、ちょっと多すぎる。

http://www.doxygen.jp/commands.html#cmdparam

Doxygenの基本コメントまとめ

doxygenコメントは冒頭に /*! をつける。

C言語ソースでよく利用する(?)コメント(タグ)を列挙する。

共通でよく使う

@brief 説明文

 

  • インデントをそろえたハイフン’-“で箇条書きが表見できる。
  • /*@{*/ と/*@}*/ で囲むことで、グループ化できる。

ファイルヘッダ関係

@file ファイル名
@date 日付
@author 作者
@version 版数/バージョン
@par ユーザ定義の記述

 

[text]

/*!

  • @file sample.c

*

  • @dateツꀀツꀀツꀀ Created on: 2012/09/05

  • @authorツꀀ Author: きつね

  • @version 1.0

  • @briefツꀀSツꀀ GoogleMock実験用

  • @parツꀀツꀀツꀀツꀀ History 新規作成

*/

[/text]

image

宣言関係

これらの宣言は、ファイルのどこかに @fileと記載されている必要がある。

@struct 構造体
@enum 列挙型
@def 定義
@var グローバル変数

 

[text]

/*! @struct NUM

*ツꀀ @briefツꀀ ナンバー

*/

typedef struct NUM

{

int num;ツꀀツꀀツꀀツꀀ /*!< 数ツꀀツꀀツꀀツꀀツꀀツꀀ */

int count;ツꀀツꀀ /*!< カウント */

}NUM;

/*! @struct RET

*ツꀀ @bruefツꀀ 戻り構造体

*/

typedef struct RET

{

int ret;ツꀀツꀀツꀀツꀀ /*!< 戻り値ツꀀツꀀ */

int count;ツꀀツꀀ /*!< カウント */

}RET;

/*!@def

  • @brief 数の上限

*/

#define NUM_MAXツꀀ 10

/*!@enumツꀀ collor

  • @brief 色

*/

typedef enum{

red,ツꀀツꀀツꀀツꀀ /*!<赤 */

blue,ツꀀツꀀツꀀ /*!<青 */

yellowツꀀツꀀ /*!<黄色 */

}collor;

[/text]

  • メンバの説明は、/*!< hogehoge */ でも書ける。

image

関数ヘッダ関係

 

@fn 関数宣言
@breaf 要約説明
@param param <引数名> { 引数説明 } 関数の引数
param[in] 入力フォーマット
param[out] 出力フォーマット
param[in,out] 入出力フォーマット
@return { 戻り値の記述 } 戻り値の記述
@detail 詳細説明

 

[text]

/*!

  • @fnツꀀツꀀツꀀツꀀツꀀツꀀツꀀ get_ret

  • @brief

  • @param[in] void

  • @returnツꀀツꀀツꀀ 結果の数

  • @detailツꀀツꀀツꀀ 数をライブラリから取得し、その結果によって処理を分岐する

*/

[/text]

image

07 Oct 2012, 13:10

公式ロゴURLまとめ Twitter/Facebook/Google+/foursquare

このブログのプロフィールを作成しようとして、ソーシャルメディアの商標(ロゴ)について調べてみたので、忘れないように備忘録。

Twitter

twitter-bird-white-on-blue

https://twitter.com/logo

よく見かける『t』の一文字は公式なロゴではないらしい。注意が必要。

Facebook

f_logo

http://www.facebook.com/brandpermissions/logos.php

『f』のロゴは認められているけれども、『facebook』のロゴは認められていないらしい。

Facebookロゴの使用は概して認められません。特定の用途について特別に許可を取得したい場合は、Facebook担当者にお問い合わせください。

Google+

Google+

https://developers.google.com/+/plugins/badge/#configure

Google+の場合は、Google Badgeというサービスで、Web上でリンクを作成する。

foursquare

RSS

ロゴは以下の公式URLから取得できる。

https://ja.foursquare.com/about/logos

 

07 Oct 2012, 08:26

StepCounterでJenkinsからステップ数をカウントしてみる

Jenkinsをつかったステップ数表示について、以前CCCCを紹介した。

CCCCを利用してC言語のステップ数をJenkinsで表示するツꀀ

ネットで調べてみると、他にもステップ数を数える方法があったのでメモする。

  • Sonerを使う
  • c4juを使う
  • StepCounterを使う

Sonerは高機能なメトリクス解析ツール。だけど、メモリをたくさん消費するらしいので、サーバではなくノートPCで実験している自分には不向きなのでパス。

c4juはCCCCの出力XMLから Jenkins の「JUnitテスト結果の集計」で利用できる XML を出力ツール。こちらのサイトで紹介されている。

CCCC + Jenkins – ブログズミ

ただ、JUnitテスト結果の集計ビューはすでにGoogleTestで使っているため、これもパス。

残るは、StepCounter Plugin。こちらのサイトで紹介されている。

StepCounterプラグインの紹介- takumaの備忘録

結論としては、これが良い感じ。

StepCounter Pluginを使ってみる。

githubからダウンロードできた。

https://github.com/jenkinsci/stepcounter-plugin/tree/57da29cfa10a2f0f4cd62c544353044e343391d7

(現時点ではアップデートに必要な stepcounter.hpi がなかった)

ダウンロードしたら、[Jenkinsの管理] > [プラグインの管理] > [高度な設定] >[プラグインのアップデート]を選択。

ここで、/target配下にあるstepcounter.hpiを選択して、アップデートを選択。

そして、Jenkinsを再起動する。

これでStepCounterが使えるようになった。

あとは、ジョブの[設定] > [ビルド後の処理の追加]から[StepCounter]を選択してそれなりの設定を入れる。

image

出力結果

image

ファイルごとにステップ数もでる。

image

時系列の推移も大丈夫そうだ。

[http://www.youtube.com/embed/LUuROdFRfRc]

06 Oct 2012, 07:08

gcovrをWindowsバッチコマンドから実行したらimort siteエラーでハマる

Cygwin環境で、gcovrをWindowsのコマンドプロンプトで実行しようとすると、以下のエラーが出た。 gcovrとは、gcovの結果をCoverture形式のXML出力結果に変換するPythonスクリプトだ。

‘import site’ failed : use 窶砺 for trackback

Pythonを使ったことがないからよくわからないが、調べてみると環境変数にパスが正しく設定されていないと、これが表示されるらしい。

回避方法は以下のサイトによると、

import PYTHONHOME=/usr

を打ち込めばいいらしい。

参考 _ Python ‘import site’ failed; use -v for traceback

これがWindowsのコマンドプロンプトからだと、

set PYTHONHOME=/usr

で回避できた。

環境変数の設定からなんとかしようといろいろ試したけれど、よくわからなかった。
とりあえず、gcovrを実行する前におまじないを叩いてから実行するという、若干ダメな回避方法で凌ぐ。

正しい方法がわかったら、またメモしよう。

03 Oct 2012, 22:38

Doxygenの使い方(セットアップ編)の備忘録

最近、モノ忘れが激しくて困る。

そんな、おとぼけおじさんの、ドキュメント生成ツールDoxygenの使い方の備忘録。

今回は導入まで。

Doxygenのダウンロードとインストール

公式サイトからDoxygenをダウンロード&インストール。

または、自分はCygwinを使っているので、setup.exeからダウンロード&インストール。

image

Doxygenの設定ファイルの作り方

Doxygenを試したいプロジェクトディレクトリで、以下のコマンドを実行。

doxygen 窶堵ツꀀ doxygen.conf

doxygen.confは設定ファイル名なので、任意の名前でよい。実行すると、設定ファイルが出来上がる。設定する項目はたくさん用意されているけれども、とりあえず以下の項目を編集した。

PROJECT_NAME プロジェクト名 mock_study
OUTPUT_LANGUAGE 言語 Japanese
INPUT 入力ディレクトリのパス src/
INPUT_ENCODING 入力ソースのエンコード SHIFT_JIS/EUC-JP
ここをいじらないと、
Doxygenが文字化けする。
FILE_PATTERNS 拡張子指定 *.c *.h
GENERATE_LATEX LATEX形式出力 NO

 

  • デフォルトのエンコードはUTF-8なので、
  • デフォルトではHTMLとLATEX形式の出力が有効になっている。

Doxygenでドキュメントを生成してみる

設定ファイルを引数として、コマンドを実行する。

doxygen doxygen.conf

html/というフォルダができ、その下にドキュメントが生成される。

閲覧するには、index.htmlを開く。

C言語でDoxygenを利用するときの注意点

出来上がったindex.htmlを開くと、

わお、ソースファイルがない!ヘッダファイルしかない!

いろいろ悩んだ結果、設定ファイルで、

EXTRACT_ALLツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀ = YES

とすると、Cソースもドキュメント化された。