RobotLib Console: verschil tussen versies

Uit RobotMC.be
Ga naar: navigatie, zoeken
Geen bewerkingssamenvatting
Geen bewerkingssamenvatting
 
Regel 5: Regel 5:
De console routines van RobotLib zijn tools die op je PC draaien en via de seriële poort in verbinding staan met je robot. Met deze tools kun je commando's geven, status opvragen en volgen wat de robot doet. Deze tools zijn onmisbaar om je robot werkend te maken, te kalibreren en vervolgens het verloop van missies te volgen.
De console routines van RobotLib zijn tools die op je PC draaien en via de seriële poort in verbinding staan met je robot. Met deze tools kun je commando's geven, status opvragen en volgen wat de robot doet. Deze tools zijn onmisbaar om je robot werkend te maken, te kalibreren en vervolgens het verloop van missies te volgen.


Voor de uitvoering van missies heeft de robot het console niet nodig: de robot kan bediend worden met (bijvoorbeeld) de afstandbediening en voert taken zelfstandig uit.
Voor de uitvoering van missies heeft de robot het console niet nodig: de robot kan bediend worden met (bijvoorbeeld) de afstandsbediening en voert taken zelfstandig uit.


== Terminal programma ==
== Structuur ==
De basis van het de console routines - en de beste manier om te beginnen - is een terminal programma.  
Veel IoT toepassingen maken gebruik van een MQTT berichtenmakelaar 'in de cloud' om berichten door te geven voor bediening of om data te loggen. Het robotlib console gebruikt UDP op je lokale machine zodat meerdere scripts tegelijk - via een enkele seriële poort - met de robot kunnen communiceren.  


Op het internet is een groot aanbod van terminal programma's. Voor ons doel is [https://www.chiark.greenend.org.uk/~sgtatham/putty/ putty] een goede keuze. Het is een betrouwbaar programma met een nette, eenvoudige interface. We gebruiken het alleen in combinatie met de seriële poort, dus de geavanceerde netwerk functies kunnen we negeren.
[[bestand:RobotLib_mqtt.jpg]]  


Een alternatief is het gebruik van het RobotLib console programma WinMQttTerminal.py. Je kunt dit script starten met:
Bovenstaande plaatje geeft een overzicht van de communicatie.
py .\WinMQttTerminal.py --com com3


== MessageBroker ==
* Het plaatje toont een MQTT broker, die de aangeboden berichten doorgeeft aan scripts die zich hierop geabonneerd hebben. Vanwege performance en complexiteit is de default voor RobotLib is hiervoor geen MQTT meer, maar UDP.
Veel IoT toepassingen maken gebruik van een MQTT berichtenmakelaar 'in de cloud' om berichten door te geven voor bediening of om data te loggen. Het robotlib console gebruikt deze berichtenmakelaar zodat meerdere scripts tegelijk - via een enkele seriële poort - met de robot kunnen communiceren.  
* Een 'client' (bijvoorbeeld Bridge.py) koppelt de seriële poort aan de broker.
* Verschillende scripts kunnen data naar de robot sturen, data van de robot ontvangen of beide.


[[bestand:RobotLib_mqtt.jpg]]
De kracht van deze opzet is dat meerdere scripts tegelijk met de robot verbonden zijn. Zo kun je via het terminal script aan de robot de opdracht geven om een stukje te rijden. Als dat is ingeschakeld, zie je ziet positie informatie op de terminal en kunt dit met dit script loggen voor latere analyse. Tegelijk kun je het script Track.py gebruiken om de positie van de robot grafisch weer te geven. En als je robotlib bijvoorbeeld periodiek de snelheid laat printen, kun je deze real-time in een grafiek weergeven. 


Bovenstaande plaatje geeft een overzicht van de communicatie.
== Terminal programma ==
De basis van het de console routines - en de beste manier om te beginnen - is een terminal programma.  


* De MQTT broker geeft aangeboden berichten door aan scripts die zich hierop geabonneerd hebben.
Op het internet is een groot aanbod van terminal programma's. Voor ons doel is [https://www.chiark.greenend.org.uk/~sgtatham/putty/ putty] een goede keuze. Het is een betrouwbaar programma met een nette, eenvoudige interface. We gebruiken het alleen in combinatie met de seriële poort, dus de geavanceerde netwerk functies kunnen we negeren.
* Een 'client' (bijvoorbeeld SerialMQttBridge.py) koppelt de seriele poort aan de broker.
* Verschillende scripts (ook MQTT clients) kunnen data naar de robot sturen, data van de robot ontvangen of beide.


De kracht van deze opzet is dat meerdere scripts tegelijk met de robot verbonden zijn. Zo kun je via het terminal script (WinMQttTerminal.py, zonder --com parameter) aan de robot de opdracht geven om een stukje te rijden. Als dat is ingeschakeld, zie je ziet positie informatie op de terminal en kunt dit met dit script loggen voor latere analyse. Tegelijk kun je het script Track.py gebruiken om de positie van de robot grafisch weer te geven. En als je robotlib bijvoorbeeld periodiek de snelheid laat printen, kun je deze real-time in een grafiek weergeven.
Het 'ecosysteem' van RobotLib heeft het console programma Terminal.py. Deze sluit aan op de 'bridge' en maakt het mogelijk om dat ook andere programma's - tegelijk met de terminal - kunnen communiceren met robot.


=== Setup ===
=== Setup ===


==== Mosquito MQTT server ====
==== Configuratiefile ====
De seriële verbinding van de robot kan ruim 10 kbyte per seconde aan data doorgeven, veel meer dan een gemiddelde IoT toepassing. We maken daarom geen gebruik van een MQTT server in de cloud, maar installeren deze op de console PC.  
De configuratie voor de scripts wordt opgeslagen in een json file. De locatie van de json file wordt ingesteld in het environment:
 
  RlConsoleCfg=C:\MyRobot\arm\ConsoleShortcuts\RlConsoleCfg.json
* installeer Mosquito
* extra libraries
* start / autostart
 


==== Python ====
==== Python ====
Regel 55: Regel 50:


Opstarten:
Opstarten:
* Start SerialMQttBridge.py to link the serial port to the MQTT server. Set the desired serial port in SerialMQttBridge.json.
* Start Bridge.py om de serial port 'beschikbaar' te maken. De port en baudrate worden ingesteld in de sectie "Bridge' van de json configuratie file.
* Start MQttStreamToFrame.py to support both stream and message based comms.
* Start MQttStreamToFrame.py
Nu kun je de console scripts starten die je nodig hebt. Alle scripts kunnen tegelijk draaien, zolang ze niet tegelijk commando's naar de robot sturen.
Nu kun je de console scripts starten die je nodig hebt. Alle scripts kunnen tegelijk draaien, zolang ze niet tegelijk commando's naar de robot sturen.
Regel 63: Regel 56:
== Console scripts ==
== Console scripts ==


=== WinMQttTerminal ===
=== Terminal ===
terminal to interact with the robot, log data, (re)play files.
terminal to interact with the robot, log data, (re)play files.



Huidige versie van 19 dec 2021 om 12:01

Zie deze pagina voor een overzicht van alle RobotLib documentatie op deze wiki.

Inleiding

De console routines van RobotLib zijn tools die op je PC draaien en via de seriële poort in verbinding staan met je robot. Met deze tools kun je commando's geven, status opvragen en volgen wat de robot doet. Deze tools zijn onmisbaar om je robot werkend te maken, te kalibreren en vervolgens het verloop van missies te volgen.

Voor de uitvoering van missies heeft de robot het console niet nodig: de robot kan bediend worden met (bijvoorbeeld) de afstandsbediening en voert taken zelfstandig uit.

Structuur

Veel IoT toepassingen maken gebruik van een MQTT berichtenmakelaar 'in de cloud' om berichten door te geven voor bediening of om data te loggen. Het robotlib console gebruikt UDP op je lokale machine zodat meerdere scripts tegelijk - via een enkele seriële poort - met de robot kunnen communiceren.

RobotLib mqtt.jpg

Bovenstaande plaatje geeft een overzicht van de communicatie.

  • Het plaatje toont een MQTT broker, die de aangeboden berichten doorgeeft aan scripts die zich hierop geabonneerd hebben. Vanwege performance en complexiteit is de default voor RobotLib is hiervoor geen MQTT meer, maar UDP.
  • Een 'client' (bijvoorbeeld Bridge.py) koppelt de seriële poort aan de broker.
  • Verschillende scripts kunnen data naar de robot sturen, data van de robot ontvangen of beide.

De kracht van deze opzet is dat meerdere scripts tegelijk met de robot verbonden zijn. Zo kun je via het terminal script aan de robot de opdracht geven om een stukje te rijden. Als dat is ingeschakeld, zie je ziet positie informatie op de terminal en kunt dit met dit script loggen voor latere analyse. Tegelijk kun je het script Track.py gebruiken om de positie van de robot grafisch weer te geven. En als je robotlib bijvoorbeeld periodiek de snelheid laat printen, kun je deze real-time in een grafiek weergeven.

Terminal programma

De basis van het de console routines - en de beste manier om te beginnen - is een terminal programma.

Op het internet is een groot aanbod van terminal programma's. Voor ons doel is putty een goede keuze. Het is een betrouwbaar programma met een nette, eenvoudige interface. We gebruiken het alleen in combinatie met de seriële poort, dus de geavanceerde netwerk functies kunnen we negeren.

Het 'ecosysteem' van RobotLib heeft het console programma Terminal.py. Deze sluit aan op de 'bridge' en maakt het mogelijk om dat ook andere programma's - tegelijk met de terminal - kunnen communiceren met robot.

Setup

Configuratiefile

De configuratie voor de scripts wordt opgeslagen in een json file. De locatie van de json file wordt ingesteld in het environment:

 RlConsoleCfg=C:\MyRobot\arm\ConsoleShortcuts\RlConsoleCfg.json

Python

  • Installeer Python 3
  • Installeer Python modules
# http://pyserial.readthedocs.io/en/latest/pyserial.html
py -m pip install pyserial
# mqtt
py -m pip install paho-mqtt
# install matlib:  
py -m pip install matplotlib

Run

Opstarten:

  • Start Bridge.py om de serial port 'beschikbaar' te maken. De port en baudrate worden ingesteld in de sectie "Bridge' van de json configuratie file.

Nu kun je de console scripts starten die je nodig hebt. Alle scripts kunnen tegelijk draaien, zolang ze niet tegelijk commando's naar de robot sturen.

Console scripts

Terminal

terminal to interact with the robot, log data, (re)play files.

WinCommands

A notepad-like command sheet, that allows to send multiple lines (selected text or whole sheet).

Track

Show the robot on the Roborama track.

Graph2

Real time plot van gegevens.

Loader

  • Basic Symbols.txt download.
  • Basic code upload.
  • Commando's vanuit commandline.