Ardumower Control Center (Entwicklungsecke)

Die Android-Geschichte wird nicht gebraucht (später evtl. mal um Positionsdaten vom Android zu lesen aber dann kann man auch über TCP/IP gehen).

Server-App ist genau der richtige Ansatz denke ich. Serielle Verbindung zum Ardumower wohl auch (irgendwie muss er ja ans TCP/IP Netz angebunden werden).
 
war ein wenig fummlig aber nach dem ich auf die neue node version umgestellt habe läuft es jetzt auch auf dem rasperry pi 3 (andere versionen habe ich noch nicht probiert)

zum deinstallieren apt-get remove node --purge
und am Besten hiermit die neuste 6x version von node benutzen

dauert ein paar Wochen, weil ich noch ein wenig was anderes habe und die Hardware fertig ist...sorry habe noch keiner ardumower !
 
Hallo

Ich habe jetzt alles soweit auf einen Orange Pi Zero am laufen. Gestartet habe ich das ganze per node index.js

Danach kann ich über Port 8080 darauf zugreifen.
Der Zero ist noch nicht mit dem Mower verbunden.
Das ganze sieht aus wie auf dem Video. So richtig verstanden habe ich aber nicht was das werden soll.
Erhofft hatte ich mir einen Ersatz für die pfod App plus Kamera.

Hab ich die richtige Version oder ist die Software noch nicht so weit?
 
Hallo,
es fehlt noch die Schnittstelle zur Ardumower-Firmware "Azurit". Die Kamera müsstest Du manuell installieren (siehe auch Beitrag zum Raspberry) und dann die HTTP-Adresse eintragen können um ein Bild zu erhalten. Und ja, es ist noch nicht ganz fertig... (ich selber habe es z.B. noch nicht richtig performant am Raspberry zum Laufen bekommen - werden bei Dir Satelliten-Karten schnell geladen und angezeigt? Ich muss dafür am Raspberry fast eine Minute warten...)
Gruss,
Alexander
 
Hi,
bin leider die nächsten Wochen noch busy und werde mir dann die ganze Sache weiter anschauen.
Leiider kann man erst drüber nachdenken was das soll wenn die Verbindung richtig klappt ;-)
Gruss
Volker.
 
Hallo,

danke für die Antwort. Ich hatte schon befürchtet, das falsche Repository erwischt zu haben.
Was ich bisher gesehen habe, wird beim Start des node Server ein fest hinterlegtes Satellitenbild von einer URL geladen.
So ein Bild macht natürlich nur Sinn, wenn man den Mower darauf verorten kann. Deshalb habe ich dem kaum Beachtung geschenkt, da ich Azurit und nur die Schleife verwende.

Die Performance des Servers ist aus meiner Sicht ok (gestetet auf dem Schreibtisch bei schlechten WLAN Empfang und ohne Arduino). Starten des Servers dauert ca 20 Sekunden, laden der Seite etwa 5 Sekunden. Das läuft bei mir aber nicht auf dem RPI3 sondern auf einem Orange PI Zero. Der nutzt eine andere CPU. Ein RPI bekomme ich nicht so gut im Mower unter, PI Zero ist bekanntlich kaum lieferbar und ohne WLAN, der OPIZ hat schon WLAN integriert, ist klein und günstig (~8€), dafür ist der Support aber bescheiden. Als OS nutze ich ARMBIAN.

Bei Gelegenheit werde ich mir den Code mal ansehen.
 
Der PHP-basierte Prototyp "Ardumower Portal" (Flasher, Terminal, Überwachung, Steuerung, Kamera) funktioniert nicht besonders rund (zu viele anfällige Teilkomponenten), insbesondere ist er nicht Echtzeitfähig (Stichwort fehlende HTTP AJAX-Schnittstelle/HTTP-Sockets für Echtzeitübertragung). Dies soll das neue Control Center lösen indem es in viel komfortableren Javascript/NodeJS entwickelt wird. Du hast ja bestimmt schon gemerkt dass die Daten des Servers/Roboters Live am Client zu sehen sind. Das ist das Ziel hiermit.
 
Hallo zusammen,

nach langer Abwesenheit habe ich endlich Zeit, das Thema nochmal aufzunehmen. Normalerweise programmiere ich ERP Systeme, node.js ist für mich absolutes Neuland.

Ich hatte im März bereits das ganze in Augenschein genommen und mir nun das aktuelle Repository geladen (Stand August). Der Node.js Server läuft, wirft aber recht schnell mit Exceptions um sich.

Was ich nicht hingekomme ist die Kommunikation mit dem Arduino. Das ganze betreibe ich auf einem OrangePI Zero. Ich habe immerhin herausgefunden, dass der Arduino unter /dev/ttyACM0 auftaucht. Das habe ich dann in der config.json angepasst. Dennoch stürzt der Server ab, sobald ich etwas an den Arduino senden möchte.

paddy@orangepizero:~/ControlCenter$ node index.js
to see more debug output on linux export DEBUG=* e.g. on windows set DEBUG=*,-not_this
/home/paddy/ControlCenter/server.js:179
myPort.write(data);
^

TypeError: Cannot read property 'write' of undefined
at Socket. (/home/paddy/ControlCenter/server.js:179:13)
at emitOne (events.js:77:13)
at Socket.emit (events.js:169:7)
at /home/paddy/ControlCenter/node_modules/socket.io/lib/socket.js:503:12
at doNTCallback0 (node.js:407:9)
at process._tickCallback (node.js:336:13)

So wie ich das interpretiere, findet der Server den Arduino nicht. Wie bestimme ich denn den COM Port? Bin für jeden Tipp dankbar

Was ich letztlich erreichen will ist den Mower von der Couch aus zu steuern. Er fährt sich immer mal fest und geht in den Error state. Dann muss ich mit dem Smartphone hin gehen und resetten. Toll wäre es, wenn ich den manuell fahren kann (scheint ja implementiert zu sein). Über die Kamera (das klappt immerhin) sehe ich da, was er macht.

Noch eine Frage zu der Kommunikation. Sehe ich das richtig, dass letztlich die gesamte Kommunikation über die PFOD Kommandos erfolgt?

Viele Grüße
Patrick
 
Hi,

genau ich habe das Repository neu heruntergeladen und laut github wurde es im August zuletzt bearbeitet.

Ich habe nun einmal mit minicom auf den Arduino zugegriffen. Das Device stimmt.

Ich habe mittels npm die erforderlichen Pakete wie z.B. socket.io usw installiert.
Jedenfalls habe ich jetzt ein npm install gemacht. Die Exceptions sind nun weg. Allerdings sehe ich in der Ardiuno Konsole des Control Centers immer noch nichts. Tastatureingaben scheinen ignoriert zu werden. Jedenfalls tut sich nichts. Manuelle Kontrolle über das CANVAS geht auch nicht.

PS: gibt es irgendwo eine Installationsanleitung?

Nachtrag: die Exception kommt nach einiger Zeit wieder, sobald versucht wird an den Arduino zu senden.
[strike]Noch ein Nachtrag: laut config.json habe ich debug eingeschaltet. Wo finde ich denn das Debug log?[/strike] Ich habe es gefunden. In der Konsole gibt man vor dem Start des Versers einfach "export DEBUG=*" ein, dann erhält man ausführliche Ausgaben.
 
ich habe zwar mal was am Control center gemacht aber noch keine Ardumover platine dran gehabt

vielleicht ist da noch ein Bug drin...was sagt denn die Debug meldung ?
 
Die Debug Ausgabe müllt sich zu. Vor allem kommt irgendwann nur Buchstabensalat. Für mich sieht es aus als ob der Stream eines Bildes ausgegeben wird.

Schade ich habe gehofft das es zumindest rudimentär klappt. Dann bleibt mir wohl nichts anderes Übrig als den Code zunächst auf das Minimum zu reduzieren.
 
Hi.
I try to understand this thread because i view that the Raspberry PI is used but i think i miss Something.
I didn't see any screen with the remote or state or error of the mower.
Did the control center communicate with AZURIT ?
Is it possible to start or stop the mower from this App ?
The only video i can see is the DecaWave test and a small remote .

I work actualy on the communication between PI and arduino DUE using NMEA sentence, but raspberry PI parts is not very easy for me because i am beginner in PYTHON, so it help me a lot if post exist about this part.

Thanks.
 
Hi
it is about the Control Center. Which is basically Javascript based web app which connects to something running in node js.
No python needed yet
Actually it should be os agnostic. But yes something like raspberry pi would be the target plattform.
As the communication protocol of Ardumower is somewhat not finished that app is is also not.

Regards,
Volker
 
In my opinion, Control Center based on node.js is the right way. Because Sunray is not ready so far, it should work with Azurit as it is almost used and other firmware is normally based on it.

Meaning this we should not wait for any kind of communication standard. Instead we should use current serial communication we use for pfod app. This will have the less impact to Azurit and is already working. For me it would be great if we bring all functions from Pfod or Arduremote to ControlCenter plus Webcam. This should be feasible during winter season.

From my point of view, I will start development by forking and uncomment everything related to DW sender. Next step will be a stable communication between Raspberry and Arduino.
 
half a year ago I was on the same path and tried to do some work on CC. It was an epic fail thought
however meantime I would think not everything should be on one big app or even in one big arduino.
So currently I think the best setup would be node js together with node-red as fronted, ROS as middleware and ardumower firmware on arduino
learning curve is a bit steep so I am teaching myself into that
 
Hello,

thanks for your hint to Node-Red. I didn't know this toolset yet but I've seen some pretty videos. Also it seems to be part of current Raspberry OS Images and could also be used on other devices like my OrangePI Zero. Because CC looks pretty ugly at the moment, it might be a solution to get a cool web frontend. I forked the CC and may have found out what is wrong with arduino communication. If everything works (as a proof of concept) I will have a closer look to node red as I want to have a web frontend for all devices (responsive design) and don't want to write tons of javascript by my own.

Why do you think we need a middleware here? I don't know ROS by now.
 
great will look for your PR than...

Because if you manage to attach anything like ardumowver, camera, IMU etc next thing is to put some logic around. Simple example is object recognition for your camera. This can be quite complex. ROS already solves this and many other issues.Also it becomes something like a standard thing to have for robots
Have a look here who is already admittedly using it http://robots.ros.org/ Or in other word because I like to see things growing without to many grey hairs ;-)
 
Hi Volker,

thanks for hint me to ROS. It looks really interesting. As I understood, they use ROS for all high level operations like orientation, path planning, object recognision and so on. And they use some kind of firmware for low level operations like driving motors, keep on track (odometry) and sensor data collection.

For Ardumower, this means we have to build mostly new. We need a new Arduino Firmware with less logic. It only has to drive, stop if bumper hit or perimeter reached but nothing more. ROS running on Raspberry or other powerful device gets informed about situations like bumper hit and has to plan the next steps. As I see, this is way beyond we have today and maybe we will get with Sunray. This will be a really cool future development. I like the idea to handle it this way.

But this will take a lot of time and is nothing for winter season :) Think big, start small, so first of all I stick to Azurit and try to bring Control Center up and running. What I've seen so far, there is a lot of work to do and there might be also some change to Azurit be necessary. I'll have a closer look to Node-RED as visualization layer (I hate to write my own HTML and CSS code).

I fixed the issue with CC and Android communication. If demoMode is active in config.json, no communication will be done. If demoMode is off, the serial port gets initialized (was missing) and communication like Serial Monitor is possible.

Volker, do you plan to investigate further to CC or have you stopped your work here?
 
Oben