/progetto-labiagi_pick_e_delivery

Project implementing a small ROS node for pick and delivery with running nodejs server

Primary LanguageMakefile

PICK E DELIVERY

Hu Alessio 1839472 LABIAGI-2021

1. SCOPO DEL PROGETTO:

Offriamo un semplice servizio di pick e delivery online che permette a un utente registrato in una stanza di chiamare un robot, affidargli un pacco e assegnargli un destinatario al quale consegnare il pacco

2. ARCHITETTURA E TECNOLOGIE UTILIZZATE:

Diagramma

3. ISTRUZIONI PER L' INSTALLAZIONE E UTILIZZO:

Bisogna innanzitutto aver installato i seguenti programmi:

  • ROS Melodic
  • Nodejs
  • Docker

Per far partire il servizio (i punti 5-8 sono equivalenti al punto 9):

  1. Fare una copia in locale della cartella git git clone HTTPS https://gitlab.com/hu.1839472/progetto-labiagi.git

  2. Aggiungere la directory catkin_ws in ~/.bashrc e fare build
    IN: progetto-labiagi/catkin_ws echo "source $PWD/devel/setup.bash" >> ~/.bashrc catkin build

  3. Installare i package necessari per nodejs nella cartella main
    IN: progetto-labiagi/main npm install

  4. Fare il make di proc_webctl
    IN: progetto-labiagi/webctl make

  5. Creare un immagine di couchdb, farlo partire e creare i due database di users e room docker run -d --name pick_e_delivery_couchdb -p 5984:5984 -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=admin couchdb curl -X PUT http://admin:admin@127.0.0.1:5984/users curl -X PUT http://admin:admin@127.0.0.1:5984/rooms

    Popolare quindi il database delle stanza, nella cartella main eseguire
    IN: progetto-labiagi/main node populate_rooms.js

    Su http://localhost:5984/_utils è possibile monitorare il database, username e password sono entrambi "admin"

  6. Far partire lo stack di navigazione
    IN: progetto-labiagi/catkin_ws/src/srrg2_navigation_2d/april_tag ../../../../webctl/proc_webctl run_navigation.webctl

    Fare lo start quindi di:

    • 01_roscore
    • 02_stage
    • 03_mapserver
    • 04_rviz
    • 05_localize
    • 06_planner
    • 07a_follower(static)
    Guardando su stageros, dare la posa del robot su rviz
  7. Far partire il nodo ros principale rosrun pick_e_delivery MainNode

  8. Far partire il server
    IN: progetto-labiagi/main node server.js

  9. Alternativamente, eseguire il bash nella cartella principale che fa partire lo stack di navigazione, il nodo principale e il server
    IN: progetto-labiagi sudo chmod 777 zzstartserver.sh ./zzstartserver.sh

    Connettersi in localhost:9001 e iniziare i processi necessari allo stack di navigazione elencati nel punto 6 poi guardando su stageros, dare la posa del robot su rviz.
    Premere poi un qualsiasi tasto sul terminale per continuare

    Il servizio è ora disponibile sulla porta 3000!

4. NOTE SUL NODO ROS:

Il nodo MainNode controlla gli stati del robot e i vari eventi di timeout.
Pubblica sui seguenti topic:

  • /move_base_simple/goal per dare un nuovo goal al robot
  • /pick_e_delivery/Pose per informare al server la posa del robot e il suo stato
  • /pick_e_delivery/Timeout per informare al server eventi di timeout
È iscritto ai seguenti topic:
  • /tf per sapere la posa del robot
  • /pick_e_delivery/NewGoal per sapere il prossimo goal dal server
Offre i seguenti servizi:
  • pick_e_delivery/setTooLongInterval per cambiare il periodo di timeout di tooLong (inizialmente a 50)
  • pick_e_delivery/setWaitPackInterval per cambiare il periodo di timeout di waitPack (inizialmente a 30)
Gli stati del robot sono descritti da questo diagramma degli stati e delle transizioni creato con Umlet