XRP NL - First Tech Challenge

Blockly

Afzonderlijke motoren

../_images/motor_effort.png

Stel de motorinspanning in van -1,0 tot 1,0 en start de motor. Negatieve waarden draaien in de tegenovergestelde richting. Motorinspanningen zijn gebaseerd op de toegepaste spanning, maar zijn niet hetzelfde als rotatie, omdat veranderingen in web_log_data de rotatiesnelheid zullen veranderen.

../_images/motor_speed.png

Stel de rotatiesnelheid van de motor in, uitgedrukt in RPM's (omwentelingen per minuut). Als u snelheden instelt die groter zijn dan de motor kan draaien, draait de motor gewoon op maximale snelheid. Negatieve waarden laten de motor in de tegenovergestelde richting draaien. Dit gebruikt een PID-regelaar om te proberen de inspanning constant te regelen om de draaisnelheid op de opgegeven waarde te houden.

../_images/get_motor_speed.png

Krijg de motorsnelheid in RPM's (omwentelingen per minuut).

../_images/get_motor_position.png

De positie van de gecodeerde motor, in encodertellingen, ten opzichte van de laatste keer dat reset werd aangeroepen.

../_images/get_motor_encoder_count.png

Krijgt de positie van de gecodeerde motor, in encodertellingen, ten opzichte van de laatste keer dat reset werd aangeroepen.

../_images/reset_encoder.png

Stelt de encoderpositie terug op nul.

Aandrijving

../_images/straight.png

Gaat de opgegeven afstand in centimeters vooruit, en verlaat de functie wanneer de afstand is bereikt. Max_effort is begrensd van -1 (achteruit op volle snelheid) tot 1 (vooruit op volle snelheid).

../_images/turn.png

Draai de robot een bepaalde relatieve koers, opgegeven in graden, en ga door totdat de robot die koers heeft bereikt. effort is begrensd van -1 (draai tegen de klok in de relatieve koers op volle snelheid) tot 1 (draai met de klok mee de relatieve koers op volle snelheid) Dit blok gebruikt de IMU om de koers van de robot te bepalen en P controle voor de motorregelaar.

../_images/set_effort.png

Stel de inspanning van de linker- en rechtermotor in met behulp van de meegeleverde waarden van -1.0 tot 1.0.

../_images/set_speed.png

Varieert de kracht op elke wielmotor om de robot op de gevraagde snelheid te laten rijden. Als de belasting verandert, verandert de inspanning met een waarde om de snelheid constant te houden.

../_images/arcade.png

De robot rijdt met de opgegeven snelheid en draait tegelijkertijd met een hoeveelheid die gebaseerd is op de tweede parameter, variërend van -1.0 tot 1.0. Dit is vooral handig voor het sturen van de robot. Dit is vooral nuttig voor het sturen van de robot met proportionele regeling waarbij de tweede parameter de versterking is.


../_images/stop_motors.png

Dit blok stopt beide aandrijfmotoren. Het heeft geen effect op de andere motoren die mogelijk in gebruik zijn op de robot.

../_images/reset_encoders.png

De linker en rechter motorencoders worden op 0 gezet.


../_images/left_encoder.png

Dit blok is de waarde van de linker encoder.

../_images/right_encoder.png

Dit blok is de waarde van de rechter encoder.

Servo

../_images/set_servo.png

Dit blok stelt de servohoek in tussen 0 en 200 graden.

Sensoren

../_images/sonar.png

De sonarsensor meet de afstand tot objecten voor de afstandsmeter. Hij doet dit door ultrasoon geluid te gebruiken dat door één van de transducers op de sensor wordt uitgezonden en te meten hoe lang het duurt voordat de echo terugkeert naar de andere transducer. De sensor kent de snelheid van het geluid en berekent vervolgens de afstand tot het object. De afstanden worden in centimeters teruggegeven.

../_images/reflectance.png

De reflectiesensor, eigenlijk linker en rechter reflectiesensoren, heeft elk een LED en een fotocel. De LED schijnt licht op het oppervlak onder de sensor en de fotocel meet de intensiteit van het gereflecteerde licht. Het bereik van de teruggezonden waarden varieert van 0,0 tot 1,0, afhankelijk van de hoeveelheid weerkaatst licht.

../_images/gyro.png

De gyrosensor meet de rotatiesnelheid in de X-, Y- en Z-as. De snelheden worden geïntegreerd (gesommeerd over de tijd) en geven de rotatiehoek. Als de snelheid bijvoorbeeld 10 graden per seconde is en gedurende 2 seconden wordt opgeteld, zou dit 20 graden rotatie aangeven.

../_images/accelerometer.png

De versnellingsmeter meet de versnelling van de robot in de X-, Y- en Z-as. Een veelgebruikte toepassing hiervan is het meten van de versnelling door de zwaartekracht die de robot altijd ondervindt. Als de robot horizontaal op een oppervlak staat, dan zal de Z-versnelling 1G zijn, maar als de robot kantelt, bijvoorbeeld als hij een helling op of af gaat, dan wordt de zwaartekracht in de Z-as verminderd op basis van de kantelhoek. Hierdoor weet de robot of hij een helling of een andere helling op gaat.

Besturingsbord

../_images/LED_on.png

Schakelt de LED op de printplaat in.

../_images/LED_off.png

Schakelt de LED op de printplaat uit.

../_images/user_button.png

Dit blok vertegenwoordigt de status van de gebruikersknop, 1 voor ingedrukt en 0 voor losgelaten.

../_images/wait_for_button_press.png

Dit blok wacht totdat de gebruikersknop wordt ingedrukt. Dit is vooral handig om ervoor te zorgen dat uw programma pas begint te lopen als de robot in positie is nadat u hem hebt aangezet.

Gamepad

../_images/gamepad_button.png

Geeft 1 terug als een knop wordt ingedrukt of nul als dat niet het geval is. De keuzemogelijkheden voor de knoppen staan in de vervolgkeuzelijst.

../_images/joystick_value.png

Geef de waarde voor een joystick. De waarden lopen van -1 tot 1 voor volledig vooruit tot volledig achteruit. De specifieke joystick en as worden geselecteerd in de vervolgkeuzelijst voor het blok.

Logica

../_images/sleep.png

Pauzeert het programma voor het opgegeven aantal seconden bij deze regel. U kunt een fractionele waarde voor seconden opgeven om kleinere of preciezere waarden te krijgen.

../_images/if_do.png

Deze regel voert de blokken in de if-do-regel voorwaardelijk uit. Als de opgegeven logische expressie (een die waar of onwaar is) waar is, worden de ingesloten blokken uitgevoerd, anders worden ze overgeslagen. Bovendien kunt u alternatieve blokken toevoegen als de uitdrukking onwaar is door op het tandwielpictogram te klikken en "anders"-blokken toe te voegen.

../_images/relational_operators.png

Relationele operatoren drukken de relatie tussen waarden uit als waar of onwaar. Er zijn 6 verschillende relationele operatoren: gelijk, niet gelijk, groter dan, kleiner dan, groter dan of gelijk en kleiner dan of gelijk.

../_images/logical_oper.png

Met logische operatoren in combinatie met relationele operatoren kunt u complexere booleaanse (waar of onwaar) uitdrukkingen maken. De logische operatoren zijn OR (een van beide operanden is waar) en AND (beide operanden zijn waar). Het resultaat is waar, afhankelijk van de operanden en de gebruikte operator.

../_images/unary_log_oper.png

De NOT operator retourneert true als de pararmeter false is en retourneert false als de' parameter true is. De operator retourneert letterlijk de tegenovergestelde waarde die als argument is opgegeven.

image.png

Dit blok is een booleaanse (ofwel waar ofwel onwaar) waarde die kan worden gebruikt in voorwaardelijke expressies of op andere plaatsen waar een booleaanse waarde nodig is. Als bijvoorbeeld het argument van een repeat-while-lus waar is, zal deze oneindig herhalen, wat een oneindige lus wordt genoemd.

../_images/null.png

De nulwaarde vertegenwoordigt een niet-bestaande waarde waar in programma's op getest kan worden. Bijvoorbeeld in functies die een waarde retourneren tenzij er een speciaal geval is, en dan nul kunnen retourneren. Op nul kan worden getest door de aanroepende functie.

../_images/test.png

Het testblok retourneert een van de twee waarden, afhankelijk van of het argument waar of onwaar is.

Herhalingen

../_images/repeat.png

Dit blok voert de code in de body van het blok (do statements) het opgegeven aantal keren uit. Nadat het klaar is, wordt het blok dat volgt op de herhaling uitgevoerd.

../_images/repeat_while.png

Dit blok voert de code in het blokgedeelte (do-instructies) herhaaldelijk uit terwijl de opgegeven voorwaarde waar is. De voorwaarde wordt getest voordat de code de eerste keer wordt uitgevoerd, dus als de voorwaarde onwaar is bij het uitvoeren van dit blok, wordt de code in het blok niet uitgevoerd. Optioneel kan de while-voorwaarde veranderd worden in until door until te selecteren in het pull-down menu, en dan wordt de code herhaaldelijk uitgevoerd totdat de voorwaarde waar is.

../_images/count.png

Het blok count gaat een variabele van de eerste waarde naar de tweede waarde met de hoeveelheid increment en voert het do-blok voor elke waarde één keer uit. Het blok telt op met een positieve toename en kan aftellen met een negatieve toename. Meestal wordt 1 gebruikt voor de increment, maar het kan elke waarde zijn, zoals 2 om even of oneven getallen te tellen.

../_images/for_each.png

Een for each-blok wijst de herhalingsvariabele één voor één toe aan elke waarde in een lijst. Bij elke toewijzing worden de do statements uitgevoerd. Wanneer alle elementen van de lijst zijn toegewezen, eindigt de lus.

../_images/break.png

Een break-blok verlaat de lus waarin het staat. Dit wordt meestal gebruikt met een voorwaardelijke om een lus vroegtijdig te verlaten in een uitzonderingsgeval of wanneer de lustaak voltooid is. Optioneel kunt u break veranderen in continue, in dat geval gaat de lus verder met de volgende iteratie of lus, waarbij de rest van de blokken in do sectie worden overgeslagen.

Wiskundig

../_images/numeric_const.png

Een numeriek constant blok dat het mogelijk maakt om een numerieke constante waarde in een uitdrukking te introduceren. Om bijvoorbeeld een afstand met 10 te vergelijken, kan een vergelijkingsblok, zoals groter dan, worden gebruikt met een sonarsensorwaarde als één operand en een constant blok met een 10 als de andere.

../_images/arithmetic_function.png

Dit blok neemt een waarde en past er een numerieke functie op toe, die een resultaat produceert. De soorten numerieke functies zijn onder andere vierkantswortel, absolute waarde, negeren, natuurlijke log (ln), log basis 10, e verheven tot de macht en 10 verheven tot de macht.

../_images/trig_function.png

Dit blok neemt een waarde en voert er een triggatiefunctie op uit. De soorten functies zijn sin, cos, tan, arcsin, arc cosinus en arc tangens.

../_images/symbolic_const.png

Dit blok geeft een constante waarde voor veelgebruikte waarden. De types zijn pi, e, vierkantswortel van 2, vierkantswortel van 1/2 en oneindig.


../_images/math_predicates.png


Dit blok test een waarde om te bepalen of het een bepaald type is. De keuzemogelijkheden zijn even, oneven, priem, geheel, positief, negatief en deelbaar door een waarde.

../_images/round_operation.png

Dit blok rondt zijn numerieke parameter af naar boven (naar het volgende gehele getal), naar beneden (naar het lagere gehele getal), of naar het dichtstbijzijnde gehele getal, naar boven of naar beneden.

../_images/list_predicates.png

Dit blok krijgt een lijst met waarden als parameter en kan een waarde teruggeven op basis van de waarden in de lijst. Het kan de som, de minimumwaarde, de maximumwaarde, de gemiddelde waarde, de mediaanwaarde, de modi, de standaardafwijking of een willekeurig item uit de lijst kiezen.

../_images/remainder.png

Het restblok berekent de rest (modulus) van de deling van de twee numerieke parameters.

../_images/constrain.png

Het constrain blok retourneert een waarde die beperkt wordt door twee waarden. Met andere woorden, als de parameter (1e getal) tussen de lage en de hoge waarde ligt, dan wordt het getal teruggegeven. Als de waarde lager is dan de lage waarde, dan wordt de lage waarde geretourneerd. Als de waarde hoger is dan de hoge waarde, dan wordt de hoge waarde geretourneerd. Dit is vooral nuttig in robottoepassingen waar u er bijvoorbeeld zeker van wilt zijn dat de inspanningswaarden die u voor een motor opgeeft altijd binnen het toegestane bereik (-1 tot 1) liggen.

../_images/random.png

Het random integer blok retourneert een pseudo-willekeurige integer waarde in het bereik van de twee parameters.

../_images/random_fraction.png

De toevalsfractie retourneert een drijvendekommawaarde (fractioneel) tussen 0 en (en niet inclusief) 1.

Tekst

../_images/comment.png

Het commentaarblok kan gebruikt worden om informatie over uw programma toe te voegen om u of iemand anders te vertellen wat het programma doet. De blokken worden genegeerd als het programma draait, het is alleen bedoeld om het programma duidelijk te maken voor een lezer.

../_images/print1.png

De parameter van het afdrukblok wordt weergegeven in de shell-uitvoervensters in de XRPCode-toepassing.

../_images/string_constant.png

Het stringconstante-blok neemt een letterlijke string (alle zichtbare tekens) en kan die gebruiken in expressies die strings vereisen. Bijvoorbeeld, controleren of een tekenreeksvariabele gelijk is aan de waarde "ON" kan gedaan worden met een vergelijkingsblok en een tekenreeksconstante.

../_images/create_text.png

Het tekstblok creëren neemt een aantal tekstwaarden en voegt ze samen tot een grotere tekenreeks. Als er meer dan 2 invoerwaarden nodig zijn, kunnen er meer invoerwaarden worden toegevoegd door op het tandwielpictogram te klikken en meer invoerwaarden naar het blok te slepen.

../_images/append_text.png

Het blok tekst toevoegen voegt een tekenreekswaarde toe aan het einde van de invoerreeks en retourneert de nieuwe tekenreeks als de operatorwaarde.

../_images/string_length.png

Het blok stringlengte retourneert een geheel aantal tekens in het stringargument.


../_images/string_null_check.png

Het blok is empty geeft true terug als de tekenreeksparameter geen tekens heeft en anders false.

../_images/find_string.png

De zoekstring controleert of de zoekstring (2e waarde) binnen de eerste tekenreeks ligt. De tekenpositie van de zoekstring wordt geretourneerd, of nul als de tekenpositie niet wordt gevonden. Er kan gezocht worden naar de eerste of de laatste keer dat de zoekstring voorkomt.

../_images/get_char.png

Het blok get letter is zeer flexibel en retourneert bepaalde tekens uit een tekststring. Het kan het eerste teken, het laatste teken, het teken op een positie ten opzichte van het begin van de tekenreeks, het teken op een positie ten opzichte van het einde van de tekenreeks of een willekeurige letter uit de tekenreeks teruggeven.

../_images/find_substring.pngHet blok find substring retourneert een deel van de parameterstring. De geretourneerde waarde is de substring (of ingesloten tekenreeks) van de beginletter # tot de eindletter #.


../_images/change_case.png

Het blok verander hoofdletters geeft de parameterstring terug met alle letters omgezet naar de opgegeven hoofdletter. De keuzemogelijkheden zijn hoofdletters (alle hoofdletters), kleine letters, of hoofdletters waarbij de eerste letter van elk woord wordt gekapitaliseerd.


../_images/trim.png

Trim verwijdert spaties uit een invoerstring. De opties zijn voorloopspaties (begin van de invoerstring), achterloopspaties (einde van de invoerstring), of beide kanten van de invoerstring.

../_images/read_text.png

Het blok Tekst lezen leest invoer van het toetsenbord van het apparaat waarop het Blockly programma draait.

Lijsten

../_images/empty_list.png

Het blok lege lijst maakt een lijst zonder elementen. Invoerwaarden kunnen aan het blok worden toegevoegd door op het tandwielpictogram te klikken, waardoor de functionaliteit hetzelfde is als bij het blok Maak lijst. Dit en het volgende blok maken identieke resultaten als het aantal invoerwaarden hetzelfde is.

../_images/create_list.png

Het blok create list kan een lijst maken met een willekeurig aantal elementen erin. Het aantal elementen kan worden aangepast door op het tandwielpictogram te klikken en elementen toe te voegen of te verwijderen. Dit en het vorige blok creëren identieke resultaten als het aantal invoerwaarden hetzelfde is.


../_images/create_list_repeated.png

Deze lijst maakt een lijst van willekeurige grootte die gevuld is met de opgegeven waarde.

../_images/get_list_element.png

Het blok get list element kan verschillende functies uitvoeren. Het kan het lijstelement op een opgegeven positie in de lijst krijgen. Het kan ook het opgegeven element krijgen en het uit de lijst verwijderen. En het kan ook alleen het element uit de lijst verwijderen. In de eerste 2 gevallen retourneert het blok een waarde. Als er alleen een item wordt verwijderd, geeft het geen waarde terug en kan het in een groep instructies worden ingevoegd.

../_images/list_length.png

Het blok list length geeft het aantal elementen in de lijst terug.

../_images/is_list_empty.png

Het blok is empty geeft true of false terug, afhankelijk van of de lijst die als parameter is opgegeven elementen bevat.


../_images/find_in_list.png

Zoek de eerste of laatste keer dat een element in een lijst voorkomt en geeft de positie van het element in de bronlijst terug.


../_images/edit_list.png

Dit blok Bewerk lijst is zeer flexibel en kan vele functies op lijsten uitvoeren. Afhankelijk van de instelling van de set-parameter zal het een lijstelement op de opgegeven positie plaatsen of invoegen. De positie van de invoeg- of vervangbewerking kan op een bepaalde index vanaf het begin of het einde van de lijst zijn, het eerste element van de lijst, het laatste element van de lijst, of een willekeurig element van de lijst.

../_images/sub_list.png

Het sublijstblok kan een deel van het lijstargument teruggeven. De startpositie van de sublijst kan een index zijn vanaf het begin van de lijst, het einde van de lijst of het eerste element van de lijst. De eindpositie kan een index vanaf het begin van de lijst, vanaf het einde van de lijst of het laatste element van de lijst zijn.


../_images/text_to_list.png

Dit blok Tekst maken naar lijst kan een tekenreeks nemen en een lijst maken met één element per substring, elk afgebakend met een gespecificeerde tekenreeks. Een telefoonnummer kan bijvoorbeeld 3 sets nummers hebben die elk worden afgebakend door koppeltekens (-), en dit blok kan een lijst maken met 3 elementen, elk een tekenreeks die tussen de koppeltekens stond. Het blok zal het tegenovergestelde doen, dat wil zeggen van een lijst een tekststring maken door alle elementen van de lijst aan elkaar te rijgen met de scheidingsteken tussen elk element.

../_images/sort.png

Het blok Sorteren neemt een invoerlijst en retourneert een lijst die oplopend of aflopend gesorteerd is met behulp van numeriek sorteren, alfabetisch sorteren of alfabetisch sorteren waarbij de hoofdletters genegeerd worden.

Variabelen

../_images/create_variable.png

De knop Variabele maken is geen blok, maar wanneer u erop drukt, wordt u gevraagd om de naam van een variabele die u wilt maken. De variabele wordt toegevoegd aan de lijst van variabelen in deze sectie en kan dan in het hele programma gebruikt worden.

../_images/set_variable.png

De set variabele-regel stelt de opgegeven variabele in op de opgegeven waarde. Als u in plaats van een variabelenaam op te geven "variabele hernoemen" selecteert, dan zal deze regel de variabele overal in het programma hernoemen naar de nieuwe naam. Als u "Variabele wissen" selecteert, zal de regel alle blokken wissen die naar deze variabele verwijzen, waar deze ook in het programma voorkomt.


../_images/change_variable.png

De regel Variabele wijzigen kan de waarde van een variabele met een bepaalde hoeveelheid veranderen, positief of negatief. Het is een steno voor het gebruik van een set-regel met een optel- of aftrekregel.

Functies

../_images/function_def.png

Het blok om iets te doen zal een nieuw blok aanmaken in de Functies-sectie van het palet. Het nieuwe blok zal alle blokken die in dit blok staan uitvoeren wanneer het gebruikt wordt. Optioneel kan het functieblok parameters toevoegen om het gedrag te wijzigen door op het geear-pictogram te klikken en parameters (ingangen) toe te voegen aan de ingangssectie van de blokdefinitie. Deze parameters zullen beschikbaar zijn als variabelen binnen de functie.

../_images/funct_def_with_return.png

Het functieblok met een retourwaarde is identiek aan het functieblok (vorige blok), behalve dat het een waarde teruggeeft en overal gebruikt kan worden waar een waarde gebruikt kan worden in het programma. De teruggegeven waarde wordt aan het functieblok gekoppeld in de returnaansluiting.

../_images/return.png

Het if-return-blok kan een waarde retourneren vanuit een functie, zonder dat het aan het einde van de ingeperkte blokken moet worden afgesloten. U kunt een booleaanse waarde opgeven als deel van de return-statemenbt om het alleen een waarde te laten retourneren onder gespecificeerde voorwaarden.