僕、そこまでブログを書くつもりはないのですが、なぜかまた書くことになりました。
連続はすこしつらいです。
今日、初代部長さんがキネクト講習会を開いてくれました。
僕、プログラミングができない回路班なのですが、今回はC++が全くできない自分でもできるように教えてくれました。
ただ、キネクトを動かす環境を作るのにひどく疲れました。
以下が、プログラミングが全くできない僕がグーグル先生を参考に(コピペ)して作ったプログラミングです。コメント文は講師のizmさんが教えてくれました。
使っているキネクトはXBOX360です。
ソフトはPointCloudLibraryを使っています。
// PCLSecondTime.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
//
#include "stdafx.h"
#include <stdio.h>
#include <pcl/visualization/cloud_viewer.h>
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/io/openni_grabber.h>
#include <pcl/visualization/cloud_viewer.h>
class SimpleOpenNIViewer
{
public:
//初期化の中身
SimpleOpenNIViewer () : viewer ("unko PCL OpenNI Viewer") {}
//Kinectからデータがきたときどうするの
void cloud_cb_ (const pcl::PointCloud<pcl::PointXYZRGBA>::ConstPtr &cloud)
{
if (!viewer.wasStopped()){
viewer.showCloud (cloud);
}
//ここでファイルを保存することもできる
//pcl::io::savePCDFile("currentMS.pcd",cloud,true);
}
//コールバックを指定して起動する
void run ()
{
pcl::Grabber* interface = new pcl::OpenNIGrabber();
boost::function<void (const pcl::PointCloud<pcl::PointXYZRGBA>::ConstPtr&)> f =
boost::bind (&SimpleOpenNIViewer::cloud_cb_, this, _1);
interface->registerCallback (f);
interface->start ();
while (!viewer.wasStopped())
{
//1秒に一回、Kinectが死んでないか問い合わせ
Sleep (1000);
}
interface->stop ();
}
//変数の宣言 関数ではない
pcl::visualization::CloudViewer viewer;
};
int _tmain(int argc, _TCHAR* argv[])
{
v.run ();//永遠に終わらない
//おわる
printf("終了");
return 0;
}
ほとんどが、プログラミングができるizmさんが分かりやすく教えてくれたため、プログラミングが苦手な自分でも理解することができました。
まず、キネクトに映す背景です。
これが、キネクトで撮った写真です。
今回は、時間の関係もあって画像の表示しか進みませんでしたが、これから物体の認識ができるようまで高めていこうと思います。
最後に今回の講師izmさんから一言
twitterid:izmです。本日は前途有望な若者のbootcamp的な一日になって、非常に興味深かったです。また今度は面白いネタがあったら一緒に遊びましょう。
ありがとうございました。
もしも、この技術が進んだら岐大でもロボットにキネクトを乗っける時代が来るかもしれません…楽しみです。何年も先の話なんだろうな~
次回こそ、1年生の「フォルティス」がブログを書きます。お楽しみに…
0 件のコメント:
コメントを投稿