LoginSignup
8
7

More than 5 years have passed since last update.

ROS-Androidでミクちゃんをカメラ小僧できるアプリケーション作ってみた

Last updated at Posted at 2015-08-08

概要

動画


簡易版.(ちゃんと編集してニコニコにでもうpしたい)
5秒ぐらいにピピッてなったのはスマホのビデオ撮影開始の音で,そこからスマホで撮影した動画に切り替わっている.
右下のワイプは撮影している僕の姿です.

ソース

作った理由

研究でROSを使っていて感じたROSのメリットは,

  • 基本的なパッケージがレポジトリにあって,apt-getで簡単に入れられる
  • 強力なビジュアライズツール(Rviz, rqt)
  • Pub/Subでのノード間通信が簡単で,複数PCなどでも関係なく通信してくれる

だなぁ,ロボットで面倒なところ全部引き受けてくれてるなぁと思ってた.
でもふと,てかよく見たら下2つってロボットあんまかんけーなくね?ロボット以外でも便利なんじゃね?と気付いてしまった.
なんで,前々から温めてたネタを使い慣れてるROSでさくっと作ってみた.
まぁドヤ顔して言うと,ROSの可能性を広げたかった.

しくみ

Android側でスマホの姿勢をPCに投げ続け,その姿勢に応じてrvizのカメラ位置を変えてるだけです.
ちょっとシンプル過ぎて他に言うことが無いです.

使い方

※ githubのreadmeの日本語詳細版です.

準備

  1. ROSのインストール
    まぁこれは各自やってください.

  2. パッケージのクローン→ビルド

    $ mkdir ~/catkin_ws
    $ cd ~/catkin_ws
    $ git clone https://github.com/mu-777/ros_miku_viewing.git src
    $ cd ~/catkin_ws
    $ catkin_make
    
  3. MMDのdaeファイルを置く

    $ mkdir -p ~/catkin_ws/src/ros_miku_viewing/miku_rviz/robot/mmd_dae
    

    で,この中にMMDをdaeに変換したファイルを置いてください.daeへの変換はいろいろあるので各自おねがいします.
    自分はとあるPGの研究記録ⅡさんのPMDEditor Collada(.dae)エクスポーターを使いました.いつもお世話になっています.
    置いたら,common/launch/parameter.launch<property name="modelDataFileName" value="Tda-style_miku.dae"/>のvalueを自分の表示したいdaeファイルの名前を置き換えてください.

  4. Androidアプリを入れる

    android_imu_publisher/imu_publisher/imu_publisher-release.apkを使ってご自分のスマホに入れてください.
    一応Xperia SOL22(Android 4.2.2)では確認してますが,それ以外はわかりません.

動かす

  1. スマホとPCを同じネットワークに入れる
    各自ネットワークを作ってスマホとPCをつなげてください.自分のスマホでは,テザリングでPCを接続しても,このアプリが動くことは確認できてます.(ただしスマホのモバイルネットワークは切る必要があります)

  2. PCでROSのノードを動かす.
    ターミナル立ち上げて,

    $ export ROS_IP=<PCのIPアドレス>
    $ roscore
    

    別のターミナルで,

    $ export ROS_IP=<PCのIPアドレス>
    $ cd ~/catkin_ws
    $ source devel/setup.bash
    $ roslaunch roslaunch common main_tda_miku.launch
    
  3. Androidアプリを起動する
    起動して,Master URIのhttp://localhost:11311http://<PCのIPアドレス>:11311 にして,Connectボタンを押します.
    あとは自分のカメラアプリを起動して,PCの画面のミクちゃんをカメラ小僧してください.

作ってみて

正直,ROSでやる必要なかったですが,こんなこともできるんだよと.
でも,MMDをdaeに変換してしまってるので,ミクちゃんを動かすこととかできないんですよね...
MMDをパーツごと(頭・上腕・前腕...)に分割できれば,urdf作ってjointstateやれば動かせるんですけど,分割ってどうやるの?とか,ジョイントの継ぎ目どうなるの?とか,ボーンあるのに遠回りしてねとか,てかそもそもそこまでやりたいんだったら大人しくUnity使えよってことになるんでね.
今回のネタについては,ROSで組むのは帯に短したすきに長しというか,この程度のクオリティになっちゃうなと.まぁまずROSでこういうアプリケーション組むってことがおかしいんですが.
でも,情報系の人も結構ROSご存知の方いますし,Qiitaみたいなプログラマ御用達のところにもちょっとずつROSの記事出始めてるんで,だれかなんか面白いことやってくれませんかね?

あと,Qiitaでこういう作ってみた系の記事ってよろしくないんですかね...?
自分の認識ではプログラミング関係の情報Tips集のイメージなので,ここでやるべきではないのかなとは思いましたし, http://b4b4r07.hatenadiary.com/entry/2015/07/22/110317 とか見てても,やめときゃよかったかなとは思ったのですが...
ブログとか持ってないですし,かといってブログ作るほどいろいろ情報発信するレベルではないので,とりあえず自分のメモ込みで書いてみたのですが...
なんかちょうどいいサービスはないんですかね...?

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7