RobotLib Console: verschil tussen versies

Uit RobotMC.be
Ga naar: navigatie, zoeken
Geen bewerkingssamenvatting
Geen bewerkingssamenvatting
Regel 1: Regel 1:
[[Category:robotlib]]
Zie [[RobotLib Index]] voor een overzicht van alle RobotLib documentatie op deze wiki.
Zie [[RobotLib Index]] voor een overzicht van alle RobotLib documentatie op deze wiki.
== Inleiding ==
== Inleiding ==

Versie van 29 dec 2017 21:34

Zie RobotLib Index 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 afstandbediening en voert taken zelfstandig uit.

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.

Een alternatief is het gebruik van het RobotLib console programma WinMQttTerminal.py. Je kunt dit script starten met:

py .\WinMQttTerminal.py --com com3

MessageBroker

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.

RobotLib mqtt.jpg

Bovenstaande plaatje geeft een overzicht van de communicatie.

  • De MQTT broker geeft aangeboden berichten door aan scripts die zich hierop geabonneerd hebben.
  • 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.

Setup

Mosquito MQTT server

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.

  • installeer Mosquito
  • extra libraries
  • start / autostart


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 SerialMQttBridge.py to link the serial port to the MQTT server. Set the desired serial port in SerialMQttBridge.json.
  • 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.

Console scripts

WinMQttTerminal

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.