Code Monkey home page Code Monkey logo

researchproject1920's Introduction

Research Project '19-'20

PXL Digital | AI & Robotics

Deze README wordt, samen met de andere bestanden in de repo, regelmatig aangevuld.

IP Camera

AI Hub setup

We gebruiken een DLink IP camera (dcs-4602ev). Deze kan aangesproken worden via ROS als je volgende stappen onderneemt:

  • Clone de RODIPCa github repo
  • Verbind met het netwerk AI Hub Devices (wachtwoord wordt via Slack gecommuniceerd)
  • Start roscore
  • Run het RODIPCa script connect.py met de gewenste parameters (adres en login camera wordt via Slack gecommuniceerd)

Nadien zou met bv. rostopic list een nieuwe topic zichtbaar moeten zijn (eventueel met de gespecifieerde naam) waarop je kan subscriben om de camerabeelden binnen te halen.

Remote setup: rosbag

Om remote al wat werk te kunnen doen richting communicatie met de IP camera, proberen we zo snel mogelijk een rosbag te voorzien. Dit kan je zien als een soort recording van één of meerdere ROS topics en de berichten die er over verstuurd worden. Deze kan je opnieuw afspelen en zo dus 'simuleren'. Op die manier kan je dan in je applicatie naar de opgenomen data luisteren alsof dat het live beeld is. Dit kan je dan reeds in je applicatie proberen te tonen, zodat jullie nadien enkel de koppeling eventueel wat moeten aanpassen. We geven jullie hieronder de info die jullie normaal nodig hebben, maar een andere tutorial kunnen jullie hier vinden.

De rosbag kan je afspelen door in een terminal naar de folder te navigeren waar het rosbag bestand is opgeslagen. Daarna kan je met rosbag play <naam van het rosbag bestand> de opgenomen topics weer laten afspelen. Omdat het fragment maar 1 seconde duurt, kan je dit best laten loopen. Dit doe je door de -l flag toe te voegen.

rosbag play -l 2020-03-12-20-20-05.bag

Let er op dat roscore ook moet opstaan voordat je dit doet. Na het opstarten van de recording, kan je normaal gezien de opgenomen topic zien. Na rostopic list zou je dus het volgende moeten zien:

sam@sam:~$ rostopic list /clock /duckiecam/compressed /rosout /rosout_agg

De topic /duckiecam/compressed is dezelfde die jullie zullen opvragen aan de 'live' camera, dus hiermee kunnen jullie voorlopig aan de slag om dit te integreren in de applicatie en computer vision algoritmen uit te proberen.

Duckumentation

duckiebot-naam moet overal vervangen worden met de naame van de bot die jullie team probeert aan te spreken. Hier kan ook het statische IP voor gebruikt worden in plaats van de naam.

De duckiebots zijn onderdeel van het Duckietown pakket (niet te verwarren met Ducktown), dat ontwikkeld werd aan MIT. Duckiebots werken met een Raspberry Pi, waarop Docker draait. Hierin worden enkele container gedeployed die het mogelijk maken om rechtstreeks met de duckiebot te communiceren via ROS. Om een overzicht van de actieve containers op een duckiebot te krijgen, kan je naar http://duckiebot-naam(.local):9000 gaan om de Portainer interface te openen in de browser. (Ook deze Portainer interface wordt gehost door een container die op de duckiebot draait.)

De belangrijkste andere containers zijn:

  • roscore
  • rosinterface
  • demo_joystick : stelt enkele ROS topics open om de duckiebot aan te sturen Deze containers worden normaal gezien automatisch opgestart.

In principe moeten er verder geen Docker containers toegevoegd of aangepast worden voor het uitvoeren van de minimale vereisten van dit project. Voor extra's kan dit eventueel nodig zijn, doe dit in samenspraak met Sam&Sam.

Zorg er in eerste instantie voor dat je met je laptop op hetzelfde netwerk verbonden bent als de duckie. Anders kunnen de devices elkaar niet vinden en dus ook niet communiceren. Standaard verbinden de duckiebots met het AI Hub Devices_5Ghz netwerk op de AI Hub. Zorg dus dat jij dat ook doet als je wil communiceren met de bot. Het wachtwoord voor dit netwerk werd reeds via Slack gecommuniceerd. Als tweede optie hebben we er voor gezorgd dat de duckies proberen te verbinden met een mobiele hotspot duckienet en het wachtwoord quackquack. Dit kan je gebruiken om thuis de duckiebots te integreren in jullie project.


Opmerking: Er lijkt in veel gevallen iets mis te gaan bij het versturen van berichten naar de duckiebot, wanneer je over een hotspot er mee werkt. Indien dit het geval is, kan je er ook voor zorgen dat de duckiebot bij opstarten automatisch probeert te verbinden met jouw thuisnetwerk. Bekijk de step by step guide voor meer details.


Om een duckiebot op te starten, voorzie je deze van een opgeladen batterij en steek je de 2 USB kabeltjes er in. De duckiebot zal dan automatisch opstarten. Zo lang de LED's branden, is het opstart-proces nog bezig. Dit kan enkele minuten duren. Het kan soms nog even duren na het doven van de LED's, voor de duckiebot responsief is. Wanneer de LED's uit gaan, probeer je daarom best eerst te pingen naar de duckiebot, om te kijken of hij al responsief is. Pas daarna kan je met de bot communiceren.

ping duckiebot-naam.local

Om via ROS te communiceren met de duckiebot, moeten de ROS_MASTER_URI en ROS_IP exports op de juiste waarde gezet worden. ROS_MASTER_URI moet als waarde het IP van de duckiebot krijgen, ROS_IP moet als waarde het IP van de laptop krijgen. Het IP van de duckiebot kan je vinden met ping duckiebot-naam.local, je eigen IP met bv. ip a. We hebben ook een scriptje geschreven om deze initialisatie automatisch te doen, dit vindt je ook in deze git repo (duckie_init.sh)

Gebruik: duckie_init.sh alfred (11311) waarbij de tweede parameter de ROS master poort is, default staat deze op 11311 en deze moet niet absoluut meegegeven worden. Nadien print het script ook de huidige export values uit zodat je snel kan checken of ze correct staan. Zorg dat het script uitvoerbaar is. (chmod)

Richtlijnen voor gebruik van duckiebots

  1. Draag zorg voor het materiaal! We vertrouwen jullie de duckiebots toe, zodat jullie ze mee naar huis kunnen nemen om remote te kunnen werken aan het project. Toon dat dit vertrouwen terecht is!
  2. Batterij van duckiebots niet opladen terwijl de duckiebot zelf aan staat. Steeds ontkoppelen en dan opladen.
  3. NOOIT op tafels testen, zet je duckiebot steeds op de grond. Door netwerkvertraging of een bug kan de bot onverwachte bewegingen maken en van de tafel vallen.
  4. BE PATIENT - Eenden zijn rustige beestjes en zullen zich niet haasten als je boos wordt op hen.
  5. Don't be TOO patient - Wanneer de LED's van de duckiebot al 10 minuten uit zijn na opstarten en de duckiebot is nog niet responsief (ping) : best eens proberen om hem opnieuw uit en aan te zetten.
  6. Spreek Sam en Sam gerust aan wanneer er problemen blijken te zijn met de duckiebots. Steeds eerst checken voor je zelf configuratie begint aan te passen.

Quick/Quack checks

Als alle ROS parameters juist zijn ingesteld, kan je bv. via een rostopic list command kijken of de beschikbare ROS topics ook die van de duckiebot bevatten (bv. /duckiebot-naam/joy)

Er kunnen ook default containers gebruikt worden om bv. via keyboard de duckiebot te besturen. Hiervoor heb je wel dts (duckietown-shell) nodig. Omdat jullie dit in principe niet nodig hebben voor jullie minimale requirements, verwijzen we hiervoor naar de Duckietown documentatie. Let op: deze documentatie kan soms verwarrend zijn, vraag eerst even raad aan het onderwijsteam voor je hier aan begint.

QAQ (Quizzically Asked Questions)

Alles staat juist maar toch komen berichten niet door.

Check deze extra readme, demo code en hulp script voor een step by step guide. Bijkomend is er deze workaround (credits: Steve) die nog een aantal stappen bevat die je mogelijk moet uitvoeren.

Onze duckie rijdt het decor in wanneer we gewoon rechtdoor rijden. How to fix?

Er moet mogelijk nog gecalibreerd worden. Neem aandachtig (m.a.w. lees eerst eens door, begin daarna pas commando's in te voeren) de documentatie op deze pagina door: https://docs.duckietown.org/DT19/opmanual_duckiebot/out/wheel_calibration.html. Het plakken van een lijn voor de calibratie is niet echt nodig, kijk gewoon hoe ver de duckie afwijkt en pas de waarde aan tot het wat acceptabel is. Vergeet zeker niet de configuratie op te slaan wanneer je klaar bent.

Ik kan niet pingen met ping duckienaam.local

Probeer in dit geval ook eens ping duckienaam of ping duckie_IP. Als je hier problemen mee hebt, kan je best steeds <duckiebot.local> vervangen door het IP van de duckiebot.

Ik wil de duckiebot verbinden via een router thuis

Dit kan, maar dan moet je SSH'en naar de Raspberry Pi die op je duckiebot zit. Check deze extra readme, demo code en hulp script voor een step by step guide. Voor het SSH wachtwoord contacteer je Sam en Sam.

Ik moet extra Docker containers installeren op de duckiebot

Begin hier voorlopig niet aan, meer info binnenkort op deze plaats! Doe dit ENKEL na overleg met de lectoren! Om extra containers toe te voegen moet je dts (duckietown-shell) geinstalleerd hebben. De guide hiervoor is online te vinden, maar wordt hier binnenkort aan toegevoegd.

researchproject1920's People

Contributors

samvanderstraeten avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.