Megjöttek az új szenzorok

Régen foglalkoztam már LEGO NXT-vel, így gondoltam ideje felvenni ismét a fonalat. Körülbelül 3 éve van már egy bemutató cikkem “beragadva” itt a Logout-on. Adós vagyok még egy, NXT-hez készült alternatív firmware, a LeJOS bemutatásával is.

Ideje befejezni/folytatni.

Hogy mi változott? Megjelent hivatalosan a 3. generációs LEGO robot, az EV3, ami nagyon erősen felkeltette az érdeklődésemet.

Mielőtt még elrohantam volna EV3-at venni, körülnéztem, hogy tudnék a meglévő NXT-mel valami újba fogni.

Rendeltem három szenzort a mindsensors.com-ról.

Asus 1215B update

Ez egy válasz egy korábbi bejegyzésre.

A gép kapott egy SSD-t (Kingston V+200 120GB) és gondoltam kap egy Windows 8-at is. Mivel a HDD/SSD csere nagyon körülményes ezzel a géppel, ezért inkább az Asus szervizre bíztam.

Ha már ott jártam, megkérdeztem, hogy tudnak-e valamit a 1215B touchpad hibájáról. Kiderült, hogy ez egy típushibája a gépnek és ha még garis, akkor ingyen javítják.

Ma kaptam vissza a gépet, SSD rendben beszerelve és a touchpad is működik (1-2 hét múlva tudok biztosat mondani).
SSD berakása után döbbentem rá, hogy mennyire hangos volt a régi HDD. Alapjáratos ventin csak akkor hallom a gépet, ha odatapasztom a fülem a billentyűzetre...

OpenCV és a teljesítmény

Akik tudják, mit takar az OpenCV, azoknak nem kell bemutatnom: [link]

Most röviden leírom, milyen érdekes dolgokat fedeztem fel pár függvénnyel kapcsolatban.

Az OpenCV-ben rengetek függvény van sok mindenre, de előfordulhat, hogy mi szeretnénk kézzel valamit számolni az egyes pixeleken, de OpenCV-ben nincs rá függvény.

Először is, az OpenCV teljesítményét kézzel nem fogjuk elérni, de néhány dolog valamiért pluszba belassít.
(OpenCV teljesítmény: egyszer végre tényleg bele kéne másznom a kódjába, hogy hogyan valósítják meg ezt, mert nagyon jól jönne:) )

Itt egy példa, végig akarunk menni minden pixelen:

Itt egy kép:
cv::Mat imgmat(cv::Size(640,480),CV_8UC3);

Ezen akarunk végigmenni:
for(int row=0; row<imgmat.rows; row++)
{
for(int col=0; col<imgmat.cols; col++)
{

}
}

Első nap, első óra MSc-s hallgatóként

Ez a kis animáció kb. összefoglalja, milyen pofákat vágtam :D

Szerencsére a többi nem volt már olyan vészes.

Bejegyzés késett 11 napot, de sebaj.

Asus 1215B (ezüst)

Új hordozható számítógépet kellett vásárolnom, mert úgy néz ki, az elkövetkezendő 2 évben (ha minden jól megy), ingáznom kell majd Bp. és Szeged között.

A követelmények a követezők voltak:
+ Hosszú akkumulátor üzemidő
+ Könnyű gép
+ Kicsi gép
+ És a külseje se legyen azé ronda

Ezeknek felelt meg az Asus 1215B.

Sem a netbookot magát, sem a teljesítményét nem mutatom be, mert ezt már két PH! cikkben is megtették:
[link1] [link2]

Épp ezért lett személyes bejegyzés, mert ez egy gyakorlatilag egy élménybeszámoló lesz.

Elég kalandosan érkezett meg a csomag. Házhoz szállítást kértem, mert nem akartam ezért 1 nap szabit kivenni, és kedvem se volt elmenni a cég telephelyére, hogy személyesen átvegyem.

Végre...

Pár napi szenvedés van ebben a screenshotban.
Részletek: LGPL-s FFmpeg-t kellett az OpenCV-vel megetetni fordításkor linux alatt, de nem nagyon akart sikerülni, de végre rájöttem a nyitjára.

Pár kód későbbre, mert továbbra se vagyok teljesen kész.

GTK teszt:

#include <iostream>
#include "cv.h"
#include "highgui.h"

using namespace std;

int main (int argc, char *argv[])
{
cout << "Hello world!" << endl;
cvNamedWindow("g");
cvWaitKey();
cvDestroyWindow("g");
return 0;
}

FFmpeg teszt

int main()
{
cvNamedWindow( "Example2", CV_WINDOW_AUTOSIZE );
CvCapture* capture = cvCreateFileCapture( "/home/elrood/Documents/video.avi" );
IplImage* frame;

while(1) {
frame = cvQueryFrame( capture );
if( !frame ) break;
//cvSaveImage("/home/elrood/Documents/foo.png", frame);
cvShowImage( "Example2", frame );
char c = cvWaitKey(33);
if( c == 27 ) break;
}
cvReleaseCapture( &capture );
cvDestroyWindow( "Example2" );
cvWaitKey();
return 0;
}

Lego NXT fejlesztési lehetőségek

A következő néhány bejegyzés a LeJOS-nak lesz szentelve.

Pár szóban mi is ez az egész:
A LeJOS egy kicsi virtuális gép, amit a Lego NXT-re portoltak. A LeJOS előnyei (forrás a weboldal, had ne fordítsam le:) ):

+ Object oriented language (Java)
+ Preemptive threads (tasks)
+ Arrays, including multi-dimensional
+ Recursion
+ Synchronization
+ Exceptions
+ Java types including float, long, and String
+ Most of the java.lang, java.util and java.io classes
+ A Well-documented Robotics API

A LeJOS használatához firmware-t is kell majd frissíteni (későbbi bejegyzés).

A LeJOS mellett a további firmware-k és programozási eszközök:

Gyári fw. + (National Instruments) NXT-G

XXX. OTDK


Forrás: [link]

Véget ért a XXX. Jubileumi Országos Tudományos Diákköri Konferencia Informatika Tudományi Szekciója, amin én is részt vettem mint előadó. A program. Mi hétfő 15:40-kor adtunk elő.


A helyszín [+]

Főiskola vége

Végre valamit sikerült elvégezni :). Aki ismer tudja miről beszélek:).

Állásinterjúkra már nagyon kíváncsi vagyok.