Poletna šola mobilne robotike 2008 – 3. dan

Posted August 25th, 2008 in Tehnikalije by smottt

Danes smo se prebili skozi 3. dan. Smo kar precej napredna skupina, torej se urnik precej prilagaja oz. je tempo izvajanja programa precej hitrejši kot je bilo predvideno. Danes smo poslušali uvod v programski jezik Python ter kako ga nato uporabiti za upravljanje robotov preko vmesnika bluetooth. Zaradi česar je celotna zadeva postala precej boljši izziv in pa predvsem precej bolj zanimiva. Slik na žalost nimam, ker smo pozabili fotoaparat. Se bom pa zato malo posvetil kodi. Morda pa bo komu zanimiv vpogled v programiranje robotka NXT :)

Koda, ki se izjava na samem kraju zločina – robotku – je spisana v jeziku RobotC. Gre za okleščeno različico jezika C. Koda kaj preveč komplicirana ne postane, saj skrbi le za sprejemanje sporočil in osnovno izvajanje ukazov, ki jih preko sporočil pridobi. Vendar pa koda, s katero sva z Marekom na tekmovanju sledenja črti osvojila tretje mesto, še ni tako napredna in pridobiva samo informacije s senzorjev, ter nato ustrezno poganja motorje. Primer kode RobotC (koda za 3. mesto – seveda ni vse v kodi, je tudi v konstrukciji robotka):

void hitrost(string whichMotor, int hitrost)
{
if(whichMotor == “A”) motor[motorA] = hitrost;
else if(whichMotor == “B”) motor[motorB] = hitrost;
else if(whichMotor == “C”) motor[motorC] = hitrost;
}

task main
{

SetSensorType(S4, sensorLightActive);
SetSensorType(S1, sensorLightActive);
SetSensorType(S3, sensorSONAR);

bFloatDuringInactiveMotorPWM = false;

while(true)
{
if(SensorValue[S1] < 40)
{
hitrost(“B”, 0);
hitrost(“C”, 0);
wait1Msec(20);

while(SensorValue[S1] < 40)
{
hitrost(“B”, -50);
hitrost(“C”, 90);
wait1Msec(110);

if(SensorValue[S1] > 40) break;
}

hitrost(“B”, 80);
}
else if(SensorValue[S4] < 40)
{
hitrost(“B”, 0);
hitrost(“C”, 0);
wait1Msec(20);

while(SensorValue[S4] < 40)
{
hitrost(“C”, -50);
hitrost(“B”, 90);
wait1Msec(110);

if(SensorValue[S4] > 40) break;
}

hitrost(“C”, 80);
}
else
{
hitrost(“B”, 80);
hitrost(“C”, 80);
}
}
}

Več primerov najdete spodaj med povezavami.

Torej z jezikom RobotC smo se spoznali in ukvarjali predvsem 1. ter 2. dan. Danes pa je prišel na vrsto Python, s katerim smo razširili naše zmožnosti. Najboljši bonbonček je seveda upravljanje robotka na daljavo preko bluetooth vmesnika. Zadeva gre približno takole. Na robotku neprestano teče prevedena skripta v RobotC, ki sprejema sporočila skripte spisane v Python jeziku, ki teče na računalniku in pošilja signale glede na naše vnose preko bluetootha robotku. Primer najine kode za upravljanje na daljavo:

Python:

from time import sleep
from msvcrt import *
import nxt.locator

sock = nxt.locator.find_one_brick(host=’00:16:53:03:8A:28′)
brick = sock.connect()
brick.start_program(‘day3PythonPlusC.rtm’)

while True:
input=getch()

if input == “H”:
word = chr(80) + chr(0) + chr(80) + chr(0) + chr(0)
brick.message_write(0, word)
if input == “P”:
word = chr(80) + chr(0) + chr(80) + chr(0) + chr(1)
brick.message_write(0, word)
if input == “M”:
word = chr(0) + chr(0) + chr(80) + chr(0) + chr(0)
brick.message_write(0, word)
if input == “K”:
word = chr(80) + chr(0) + chr(0) + chr(0) + chr(0)
brick.message_write(0, word)
if input == “q”:
break

brick.stop_program()
brick = sock.close()

RobotC:

#pragma config(Sensor, S2,     touch,               sensorTouch)
#pragma fileExtension(“rtm”)
#pragma platform(“NXT”)

void izpis(int lWheel, int rWheel)
{
motor[motorB] = rWheel;
motor[motorC] = lWheel;
}
task main()
{
nxtDisplayTextLine(1, “Ready”);
while (true)
{
while (bQueuedMsgAvailable())
{
if (messageParm[2]==1)
{
motor[motorB] = 0;
motor[motorC] = 0;

wait1Msec(50);

motor[motorB] = -messageParm[0];
motor[motorC] = -messageParm[1];
}
else if(messageParm[2] == 0)
{
motor[motorB] = messageParm[0];
motor[motorC] = messageParm[1];
}

ClearMessage();
}

if (message == 0)
{
wait1Msec(5);
continue;
}
}
return;
}

Tako nama je uspešno uspelo prosto premikati robotka preko tipkovnice in bluetooth vmesnika. Jutri nas čaka priprava robotka na žogobrc oz. preprosto igranje nogometa. Morda pridejo tudi kakšne fotke robotka in action :)

Še vsa koda po datotekah in malo več primerov:

http://metod.simpel.si/wp-content/uploads/2008/08/poletna-sola-mobilne-robotike-2008-day-1-2-3-files.zip

Poletna šola mobilne robotike 2008 – 1. & 2. dan

Posted August 23rd, 2008 in Tehnikalije, Video, Zanimivosti by smottt

Tako, prva dva dneva naše šole robotike sta mimo. Kaj smo torej kaj počeli? Če ste si ogledali program na Marekovem blogu, vam je približno jasno. Smo pa program malo prilagodili, glede na predznanje udeležencev, saj smo včeraj že izpeljali tekmovanje,  ki je bilo sicer načrtovano za ponedeljek. Zabave in smeha torej ni manjkalo, smo se pa tudi marsikaj novega naučili. Med drugim sem tudi poslušal prvo predavanja na FRI. Kratko, pa vseeno šteje. Sicer pa objavljam nekaj eskluzivnih fotk :P

Kot lahko po fotkah vidite, sva z Marekom osvojila končno 3. mesto. Precej zaradi lenobe in pa premalo spanja ponoči česar posledica je bila lenoba :P

Pa še 2 videa robotkov v akciji:

Robotek ni delal čistega kvadrata, kar je posledica zaokroževanja meritev in kalkulacij. Naredili smo lahko zgolj približek 90° obrata :)

Tu se vidi samo enega robotka, ki ni hiter, ampak deluje. Če zasledim kje video finalnega obračuna sledenja črti, ga bom objavil, saj so zadevo zelo dobro izpeljali. Kodo in podobne zadeve pa objavim v eni izmed sledečih objav :)

Just a thought

Posted August 20th, 2008 in Lajf by smottt

God must love crazy people. He made so many of them!

Od danes naprej sem na (zasluženem?) “dopustu”, saj se jutri začne Poletna šola mobilne robotike. Upam, da bom dovolj pri volji in objavil kakšne fotke, filmčke, skratka zanimivosti. Več o poletni šoli pa je napisal Marek.

Igra za spročanje jeze

Posted August 18th, 2008 in Zanimivosti by smottt

Ti je dolgčas? Ali si pač samo jezen? Potem preizkusi tole igrico. Garantirano sproščanje jeze na najvišjem nivoju! Seveda je priporočljivo pred igranjem malo pospraviti razne kočljive stvari z mize, da se prepreči morebitno gmotno oz. kakšno drugačno škodo. Zadevo sem opazil nekaj časa nazaj na nekem blogu. Kje točno, sem pozabil. Lahko pa približno citiram avtorjev zapis (če se kdo najde v opisu, naj javi):

Za morebitno materialno škodo ne odgovarjam.

In sem si mislil, why not. Nisem imel niti toliko živcev, da bi prišel čez 1. stopnjo. Igra z razlogom izpiše pred začetkom – You don’t know what you’re getting into.

In še povezava:

http://www.notdoppler.com/theworldshardestgame.php

* Za igranje potrebuješ Adobe Flash Player. Seveda.

Netlog in zabavna politika sprejemanja imen

Posted August 16th, 2008 in Zanimivosti by smottt

Vstal sem se že zgodaj. In vedno, ko se vstaneš zgodaj, ti je dolgčas. Torej v skladu z naćeli dolgčasa sem počel stvari, ki jih drugače ne bi. Pregledal sem maile na live.com računu in opazil, da me že kar precej ljudi želi za prijatelja na netlog socialni mreži. Pa si mislim, naj imajo veselje, se bom pa registriral. Lepo me spusti skozi enostaven registracijski sistem, kar se mi zdi kar pohvalno, glede na to, da ti ponavadi vsiljujejo vpis vseh možnih podatkov, ki jih še sam ne veš. Vendar pa se kmalu izkaže, da je zadeva mogoče tudi kar malo preveč preprosta. Presodite sami:

P.S.: email naslov je izbrisan zaradi takšnih in drugačnih razlogov.

woohoo!!!

Posted August 14th, 2008 in Lajf by smottt

Po slabih 2 tednih stagnacije brez interneta, so mi pravkar priklopili T2. Po včerajšnjih predporodnih krčih zadeva deluje!! Spet bom zamudil v službo, ampak se splača :)

Več zvečer.. stay tuned.

S čim se ukvarjam?

Posted August 9th, 2008 in Lajf by smottt

Torej, s čim se ukvarjam zadnji teden ali še več, ko ni bilo nič napisanega:

  • skakal sem po Ljubljani, iskal stanovanje
  • ko je bilo stanovanje določeno, sem spet skakal po Ljubljani, da smo uredili papirje
  • dobil sem službo na ToboAds projektu (wow!), ki mi vzame tistih nekaj ur na dan :D
  • kar posledično pomeni, da sem nonstop v Ljubljani
  • interneta še niso priklopili, saj naj bi imeli napačne kontaktne podatke, kljub trem telefonskim številkam, ki jih je kolega pustil pri njih za kontakt
  • torej dejansko ne utegnem ničesar napisat, mogoče pa bo naslednji teden boljše :P

En citat iz iProme bloga:

Pogrešate pogostejše vnose na blog? Pogrešali jih boste tudi v nadaljnje!

P.S.: Skuril sem (upam, da samo) napajalnik in mi je za povrhu vsega še računalnik “crknu” :) fešta pa taka..

Dočakali smo php majčke

Posted August 2nd, 2008 in Zanimivosti by smottt

Kako sem bil jezen danes zjutraj, ko me je zbudil poštar :) potem pa, ko sem dobil pošto, sem bil pa kar precej razveseljen. Končno smo dobili php majčke, ki smo jih tako dolgo čakali :)

Ali imaš svojo? ;)