Coinurl2

Thursday, 26 April 2012

NXT Programmering Lesson 9

NXT Programmering, Lesson 9

Tid: 3 timer, Deltagere: Kenneth, Rawad.

Siden sidst:
Intet at bemærke.

Formål:
Formålet med denne lab er at konstruere en robot der er istand til at navigere med et cartesian system, til dette anvendes lejos faciliteter.

Plan

  1. Konstruktion af Robot
  2. DifferentialPilot setup
  3. Navigation
  4. Undgå objekter ved navigation
  5. Optimering
  6. Konklusion

1. Konstruktion af robot
VI har konstrueret robotten som det kan ses på Mindstorms Education 9797 fra 8-22. Derudover har vi udvidet robotten til at kunne “holde” en tuds i stativet foran.

2. DifferentialPilot Setup
Vi har startet med at kigge DifferentialPilot interface  beskrivelse. Herefter har vi forsøgt at indstille differentialPilot til at kunne dreje præcist 360 grader rundt. Vi aflæste værdi hjul diameteren til 5.6 inches og valgte at sætte dette til 5.5 inches i programmet da vi menes at have hørt Ole sige at dækkene trykkes lidt ind pga vægten fra robotten. Herefter har vi justeret på trackWidth indtil robotten har kunne dreje præcist 360 grader rundt flere gange.

Hastigheden har vi sat til:
Robot.setTravelSpeed(15.0);
        Robot.setRotateSpeed(60.0);
Dette har vi prøvet os frem til.



3. Navigation

På billedet ovenover ses tre forsøg på at følge blightbots rute. Det kan tydeligt ses at robotten ikke lander samme sted hver gang. Den lander dog relativt tæt på sidste start position.

De lige ligner var relativt nemme at programmere. Vi har anvendt differentialPilot til alle bevægelserne.

Robot.travel(travelDistance);
travelDistance er en fast størrelse, og vi anvender denne til at behandle alle afstande som forhold.

turn = Math.sqrt((Math.pow(travelDistance*0.5, 2) + (Math.pow(travelDistance*0.5, 2))));
Robot.travel(turn);
Dette kode segment udregner hvor langt vi skal køre, efter vi har nået waypoint 1. travelDistance brugt som forhold kan tydeligt ses her.

4. Avoid object while navigating
Dette kan relativt nemt laves ved tilføjelse af sensorere der kan detektere objektet, samt ved at gøre brug af asynkron DifferentialPilot funktioner. Herefter kan der tilføjes en listener for at få rapporteret hvornår handling er udført. Hvis et objekt detekteres kan handling annulleres ved hjælp af stop funktionen.

Vi har afprøvet DifferentialPilots asynkrone funktioner, på samme måde som det ses i afsnit 3. Resultatet med asynkrone funktioner er det samme, dog returnerer funktionerne selvfølgelig med det samme.


5.  Optimering
Dette punkt nåede vi desværre ikke i lab 9.

6. Konklusion



Referencer
[1]: http://www.legolab.daimi.au.dk/DigitalControl.dir/NXT/Lesson9.dir/Lesson.html
[2]: Brian Bagnall, Maximum Lego NXTBuilding Robots with Java Brains, Chapter 12, Localization, p.297 - p.298.
[3]: http://www.ridgesoft.com/tutorials.htm
[4]: http://www.cs.umu.se/kurser/TDBD17/VT07/utdelat/kinematics.pdf
[5]: http://dl.dropbox.com/u/4447110/lab9.java

No comments:

Post a Comment