The Embassy of the United States (Tokyo American Center) partnered with Keio University held a “Entrepreneurship Seminar and Business Competition” on February 8th – 10th 2012. There are 12 teams (approx. 51 students) representing 10 different Universities from all around Japan to compete for winning recognition of their business plans and social entrepreneurship project proposals.
At this competition, me and my team represented Gunma University as “AYUMIX Team” with the business plan named “Ando-kun”, Dynamic Information Service. You may refer to the above Youtube video for further detail on the proposed idea. (Japanese only ^^;;)
At this event, there were a lot of great people who joined and gave lecture on the seminar. Such as Mr. Allen Miner, CEO of Sunbridge company and many others. The lecture were mostly talking about their experience on entrepreneurship and “Tips & Tricks” about how to be succeed in building a business.
Sometime I used to get trouble while switch-compiling between OpenCV1.1 and OpenCV2.1 project on Visual Studio 2008. It is due to some projects run well on OpenCV1.1, while some other projects are perform well on OpenCV2.1. Here are a few things need to be set when we are going to switch the OpenCV library.
1. OpenCV1.1
On Visual Studio 2008, click Tools ⇒ Option ⇒ Project and Solution (at the left side bar) ⇒ VC++ directory. Choose the “Include file” and put some of the below folder path :
Last month, my University asked me to give a presentation in front of local companies about the latest condition of my country Indonesia. The presentation was scheduled to be delivered on November 1st in a seminar called “Chinese Business Research 2011 / 平成23年度 第一回 中国ビジネス研究会” held in Gunma University. The main purpose of the seminar is to give information (and discussion) to the local companies around Gunma prefecture about the current business condition in Asia (especially China, Indonesia and Vietnam).
The topic of my presentation is mostly talk about the recent condition in Indonesia observed from many aspects such as economy, social & culture, demography, etc. You may refer to the below slideshow for more detail about my presentation, or click this link for full presentation.
The presentation was delivered in Japanese around 30 minutes and additional 15 minutes for discussion. This is actually my first experience to give a presentation in front of many Japanese company’s leader. Thanks God, I could manage to present it well and answered all the questions confidently.
After struggling several days with all stuff related to OpenKinect (libfreenect) and Microsoft Visual Studio 2008, finally I could execute the experiment on getting the Kinect RGB-Depth image wrapped with the OpenCV2.1 library functions.
Or, the below code is taken from Tisham’s page which then combined with Canny Filter operation :
(comment out all the glview.c code and replace with the below source code)
/* freenectopencv.cpp
Copyright (C) 2010 Arne Bernin
This code is licensed to you under the terms of the GNU GPL, version 2 or version 3;
see:
http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt
http://www.gnu.org/licenses/gpl-3.0.txt
*/
/*
* Makefile for ubuntu, assumes that libfreenect.a is in /usr/lib, and libfreenect.h is in /usr/include
*
* make sure you have the latest version of freenect from git!
***************************************************************************************************************************
* Makefile
***************************************************************************************************************************
CXXFLAGS = -O2 -g -Wall -fmessage-length=0 `pkg-config opencv --cflags ` -I /usr/include/libusb-1.0
OBJS = freenectopencv.o
LIBS = `pkg-config opencv --libs` -lfreenect
TARGET = kinectopencv
$(TARGET): $(OBJS)
$(CXX) -o $(TARGET) $(OBJS) $(LIBS)
all: $(TARGET)
clean:
rm -f $(OBJS) $(TARGET)
*************************************************************************************************** * End of Makefile
***************************************************************************************************
*/
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <libfreenect.h>
#include <pthread.h>
#define CV_NO_BACKWARD_COMPATIBILITY
#include <cv.h>
#include <highgui.h>
#define FREENECTOPENCV_WINDOW_D "Depthimage"
#define FREENECTOPENCV_WINDOW_N "Normalimage"
#define FREENECTOPENCV_RGB_DEPTH 3
#define FREENECTOPENCV_DEPTH_DEPTH 1
#define FREENECTOPENCV_RGB_WIDTH 640
#define FREENECTOPENCV_RGB_HEIGHT 480
#define FREENECTOPENCV_DEPTH_WIDTH 640
#define FREENECTOPENCV_DEPTH_HEIGHT 480
IplImage* depthimg = 0;
IplImage* rgbimg = 0;
IplImage* tempimg = 0;
IplImage* canny_img = 0;
IplImage* canny_temp = 0;
pthread_mutex_t mutex_depth = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t mutex_rgb = PTHREAD_MUTEX_INITIALIZER;
pthread_t cv_thread;
// callback for depthimage, called by libfreenect
void depth_cb(freenect_device *dev, void *depth, uint32_t timestamp)
{
cv::Mat depth8;
cv::Mat mydepth = cv::Mat( FREENECTOPENCV_DEPTH_WIDTH,FREENECTOPENCV_DEPTH_HEIGHT, CV_16UC1, depth);
mydepth.convertTo(depth8, CV_8UC1, 1.0/4.0);
pthread_mutex_lock( &mutex_depth );
memcpy(depthimg->imageData, depth8.data, 640*480);
// unlock mutex
pthread_mutex_unlock( &mutex_depth );
}
// callback for rgbimage, called by libfreenect
void rgb_cb(freenect_device *dev, void *rgb, uint32_t timestamp)
{
// lock mutex for opencv rgb image
pthread_mutex_lock( &mutex_rgb );
memcpy(rgbimg->imageData, rgb, FREENECT_VIDEO_RGB_SIZE);
// unlock mutex
pthread_mutex_unlock( &mutex_rgb );
}
/*
* thread for displaying the opencv content
*/
void *cv_threadfunc (void *ptr) {
cvNamedWindow( FREENECTOPENCV_WINDOW_D, CV_WINDOW_AUTOSIZE );
cvNamedWindow( FREENECTOPENCV_WINDOW_N, CV_WINDOW_AUTOSIZE );
cvNamedWindow( "Canny Image", CV_WINDOW_AUTOSIZE );
cvNamedWindow( "Depth Canny", CV_WINDOW_AUTOSIZE );
depthimg = cvCreateImage(cvSize(FREENECTOPENCV_DEPTH_WIDTH, FREENECTOPENCV_DEPTH_HEIGHT), IPL_DEPTH_8U, FREENECTOPENCV_DEPTH_DEPTH);
rgbimg = cvCreateImage(cvSize(FREENECTOPENCV_RGB_WIDTH, FREENECTOPENCV_RGB_HEIGHT), IPL_DEPTH_8U, FREENECTOPENCV_RGB_DEPTH);
tempimg = cvCreateImage(cvSize(FREENECTOPENCV_RGB_WIDTH, FREENECTOPENCV_RGB_HEIGHT), IPL_DEPTH_8U, FREENECTOPENCV_RGB_DEPTH);
canny_img = cvCreateImage(cvSize(FREENECTOPENCV_RGB_WIDTH, FREENECTOPENCV_RGB_HEIGHT), IPL_DEPTH_8U, 1);
canny_temp = cvCreateImage(cvSize(FREENECTOPENCV_DEPTH_WIDTH, FREENECTOPENCV_DEPTH_HEIGHT), IPL_DEPTH_8U, FREENECTOPENCV_DEPTH_DEPTH);
// use image polling
while (1) {
//lock mutex for depth image
pthread_mutex_lock( &mutex_depth );
// show image to window
cvCanny(depthimg, canny_temp, 50.0, 200.0, 3);
cvCvtColor(depthimg,tempimg,CV_GRAY2BGR);
cvCvtColor(tempimg,tempimg,CV_HSV2BGR);
cvShowImage(FREENECTOPENCV_WINDOW_D,tempimg);
cvShowImage("Depth Canny", canny_temp);
//unlock mutex for depth image
pthread_mutex_unlock( &mutex_depth );
//lock mutex for rgb image
pthread_mutex_lock( &mutex_rgb );
// show image to window
cvCvtColor(rgbimg,tempimg,CV_BGR2RGB);
cvCvtColor(tempimg, canny_img, CV_BGR2GRAY);
cvShowImage(FREENECTOPENCV_WINDOW_N, tempimg);
// Canny filter
cvCanny(canny_img, canny_img, 50.0, 200.0, 3);
cvShowImage("Canny Image", canny_img);
//unlock mutex
pthread_mutex_unlock( &mutex_rgb );
// wait for quit key
if( cvWaitKey( 15 )==27 )
break;
}
pthread_exit(NULL);
return NULL;
}
int main(int argc, char **argv)
{
freenect_context *f_ctx;
freenect_device *f_dev;
int res = 0;
int die = 0;
printf("Kinect camera test\n");
if (freenect_init(&f_ctx, NULL) < 0) {
printf("freenect_init() failed\n");
return 1;
}
if (freenect_open_device(f_ctx, &f_dev, 0) < 0) {
printf("Could not open device\n");
return 1;
}
freenect_set_depth_callback(f_dev, depth_cb);
freenect_set_video_callback(f_dev, rgb_cb);
freenect_set_video_format(f_dev, FREENECT_VIDEO_RGB);
// create opencv display thread
res = pthread_create(&cv_thread, NULL, cv_threadfunc, (void*) depthimg);
if (res) {
printf("pthread_create failed\n");
return 1;
}
printf("init done\n");
freenect_start_depth(f_dev);
freenect_start_video(f_dev);
while(!die && freenect_process_events(f_ctx) >= 0 );
}
Please notice that I am using : libfreenect for Windows + Microsoft Visual Studio 9 (2008) + OpenCV 2.1
1. “Dan Dia memberikan rezeki dari arah yang tidak disangka-sangka. Dan barangsiapa bertawakal kepada Allah, niscaya Allah akan mencukupkan keperluannya. Sesungguhnya Allah melaksanakan urusanNya. Sungguh, Allah telah menentukan bagi setiap sesuatu” QS 65:3
2. “Dan jika kamu menghitung-hitung nikmat Allah, niscaya kamu tak dapat menentukan jumlahnya. Sesungguhnya Allah benar-benar Maha Pengampun lagi Maha Penyayang.” (QS Annahl [16]: 18)
Hadits
1. “Barangsiapa yang menginginkan kesuksesan dunia maka hendaklah menguasai ilmunya, dan barangsiapa yang menginginkan kebahagiaan akhirat maka ia juga harus menguasai ilmunya…” (Mawa’izh al-Imam asy-Syafi’i)
2. “Didiklah anak-anakmu agar siap menghadapi zamannya, karena mereka kelak akan hidup pada zaman yang berbeda dengan zamanmu…” (Ali bin Abi Thalib ra)
3. “Orang yang pandai membaca Al-Quran akan bersama malaikat yang mulia lagi taat, dan orang yang membacanya dengan terbata-bata bahkan berat baginya,maka baginya 2 pahala”HR.Muslim.
4. “‘Orang yang cerdas adalah yang senantiasa menghisab dirinya serta beramal untuk mempersiapkan kehidupannya sesudah kematian… ” (HR. Imam Tirmidzi)
Tokoh
1. Tuhan kami Yang Maha Pemurah,
Kami mohon Engkau mendampingi upaya kami untuk membangun kehidupan yang besar dari tempat-tempat yang kecil.
Jadikanlah kami merasa nyaman di tempat kami yang kecil ini, menikmati sekali proses berpikir yang kreatif, asyik bekerja sesuai rencana kami, tersenyum penuh harap membayangkan keberhasilan kami, berdebar-debar dengan keyakinan yang hampir menjadi kenyataan tentang merekahnya sambutan sesama kepada usaha kami.
Tuhan kami Yang Maha Penyayang,
Jadikanlah tempat kecil ini sebagai tempat kumulai perjalanan naikku, dan tempat kecil yang akan kuingat dengan penuh syukur saat aku menceritakannya dengan penuh kasih kepada anak-anak dan cucu-cucuku.
Aamiin
Seperti biasanya, hari ini ketika sedang bersiap berangkat ke kampus saya beres-beres kamar merapikan baju dan kaos yang telah kering setelah dijemur selama sekitar 4 hari. Menjemur cucian selama musim dingin memang butuh waktu yang cukup lama, karena cuaca di luar sangat dingin dan udaranya kering. Apalagi di daerah Kiryu ini, angin di luar bertiup sangat kencang dan dingin. Jadi, saya lebih cenderung menjemur pakaian di dalam ruangan saja.
Nah, ketika sedang asik melipat baju dan merapikan pakaian, tiba-tiba terdengar suara dering dari telepon genggam yang saya letakkan di atas meja komputer. Mulanya saya pikir itu telepon dari petugas Pos yang tiap pagi saya hubungi untuk mengangkut barang dagangan (online shop) saya. Tapi, ternyata telepon itu dari Fukuda-san, pegawai kampus yang bertugas untuk mengurusi keperluan mahasiswa asing di Universitas Gunma.
Satu kalimat yang membuat saya tersentak adalah, ”Fahmi-san, Yoneyama Shougakukin goukakushimashita! Omedetou gozaimasu!” yang pada intinya beliau ingin menyampaikan berita bahwa saya lulus program beasiswa dari Yoneyama Memorial Foundation untuk melanjutkan studi ke jenjang S2.
Alhamdulillah, saya ini termasuk golongan orang yg terlahir dari keluarga sederhana yg pas-pasan. Ayah bekerja sebagai PNS, ibu mengurus keperluan sehari-hari di rumah. Kami tinggal di kampung Cilandak, daerah Jakarta Selatan, belakang Cilandak Town Square.
Cerita bermula ketika saya duduk di bangku SMA kelas dua. Di awal pekan tahun ajaran baru, serombongan kakak kelas dari Universitas Indonesia datang memberikan presentasi tentang jurusan-jurusan favorit yg banyak diminati peserta ujian SPMB (Seleksi Penerimaan Mahasiswa Baru).
Karena dari dulu punya cita-cita jadi dokter, ada keinginan yg kuat utk nyoba masuk Fakultas Kedokteran UI. Lalu, setelah FKUI, kepingin nyoba masuk Fakultas Teknik Elektro. Tapi, ada satu hal yg membuat saya bimbang dan sedikit ragu. Waktu itu beredar gosip kalau mau masuk FKUI mesti siapin uang minimal 50 juta rupiah. Kalau mau masuk Fakultas Teknik mesti punya 25 juta rupiah!
“Degg…”
Tiba-tiba saya saya terdiam kaget. “Kok mahal banget ya…?” Mana mungkin punya uang sebanyak itu.
Sampai di rumah, saya coba komunikasikan dengan orang tua. Mencoba utk curhat ke ibu. Kalau memang mesti keluar minimal 25 juta, terpaksa pinjam uang sana-sini. Semalaman saya berpikir panjang nggak bisa tidur. Berpikir bagaimana caranya supaya nggak ngerepotin orang tua lebih jauh. Nggak mau menambah beban orang tua lebih berat lagi.
Alhasil, keesokan harinya saya mencoba bangun pagi lebih awal dari biasa. Waktu itu pergi ke sekolah naik angkot D02 warna putih jurusan Lebak Bulus-Pondok Labu (hmm… jadi kangen naik angkot nih… hehe).
Sesampainya di persimpangan Pondok Labu, saya mengalihkan target utama ke “Pasar Pagi”. Dulu sewaktu acara ekskul sekolah, teman-teman sie konsumsi sering beli kue, gorengan atau cemilan di “Pasar Pagi”. Harganya murah dan jenis kuenya macem-macem.
Pagi itu saya beli donat, kue apem, dan beberapa gorengan yg isinya kacang ijo (nama kue-nya apa ya..? saya lupa). Modal utk belanja saya habiskan sekitar 5.000rupiah. Lalu, sesampainya di kelas, saya coba tawarkan donat dan kuenya ke teman. Awalnya agak malu sih, rasanya sungkan kalo mesti nawarin kue dagangan ke teman. Apalagi dengan tujuan bisnis… hehe
Sejak saat itu, saya pun resmi jadi penjual kue di kelas. Ya, lumayan sih… modal 5 ribu, dapat untung sekitar 2-3 ribu. Nggak banyak, tapi yg penting bisa ditabung. Continue reading
The below videos are simulation of RGB and Depth data taken by Microsoft Kinect Sensor.
Kinect sensor equipped with RGB Camera, 3D Depth Sensors, Motorized Tilt and Multi-Array mic. (picture taken from Wikipedia)
In this experiment, left screen is a display of color image and right screen is a display of 3D depth image taken by the IR (infrared) sensor.
Beberapa bulan lalu (kalo nggak salah November 2010), Microsoft mengeluarkan produk baru yg bisa dipakai sebagai sensor utk bermain video game X-Box tanpa memakai joystick. Nama sensor barunya adalah Microsoft Kinect Sensor. Dengan memakai Kinect, kita nggak perlu lagi bermain video game dengan joystick. Nah, sebagai gantinya, joystick-nya itu adalah semua anggota badan kita yg setiap ayunan tangan, gerakan kaki atau anggukan kepala akan ditangkap oleh si Kinect dan diubah menjadi data yg selanjutnya diproses oleh komputer menjadi sinyal-sinyal input joystick. Kalau kita lompat, maka karakter video game di layar pun akan ikutan melompat.
Alat ini dilengkapi dengan beberapa sensor, yaitu : Kamera RGB (Red-Green-Blue), ‘Depth sensor’ yg dilengkapi dengan pemancar&penangkap Infra Merah, Multi-Array Microphone.
Baru-baru ini saya iseng nyobain kinerja si Kinect di laboratorium kampus. Lumayan, nyobain “mainan” baru yg dibeliin sama sensei Lab. (mahal jg kalo mesti beli sendiri dari kantong pribadi). Ternyata seru juga loh!!
Coba deh lihat dua video di atas. Hehehe.. ada orang aneh gerak-gerak nggak jelas …
Layar terbagi menjadi dua bagian : layar sebelah kiri dan layar sebelah kanan. Nah, layar sebelah kiri memberikan output berupa gambar asli yg ditangkap oleh kamera (gambar merah-hijau-biru), sedangkan layar sebelah kanan memberikan informasi berupa jarak antara si “benda” terhadap kamera.
Kinect bisa memberikan prediksi jarak antara “benda” dengan kamera berkat adanya sinar infra merah yg ditembakkan ke arah benda, lalu terpantul kembali ke bagian penerima infra merah. Dari situ bisa dihitung waktu pantulan, dan komputer bisa memberikan perkiraan jarak. Setelah itu, “data jarak” diubah menjadi gradasi warna yg menunjukkan perbedaan jarak antara benda dengan kamera. Kalau diperhatikan dengan jeli, di layar sebelah kanan akan terlihat gradai warna oranye, kuning, hijau, biru dan hitam. Semakin dekat suatu benda dengan kamera, maka tampilan gradasi akan manjadi hitam.
Setelah percobaan ini selesai dan koding-nya udah mantap, saya punya rencana utk memasang si Kinect di robot MG10. Kayanya bakal seru nih,,, robot MG10 akan punya “mata” baru yg bisa melihat kondisi sekitar sekaligus memberikan prediksi jarak dengan objek di sekitarnya.