ROBPLAN INSIGHT er et dashboard utviklet i samarbeid med SINTEF og Equinor. for å integreres med Equinors ISAR (Integration and Supervisory control of Autonomous Robots), som håndterer integrasjon av robotapplikasjoner i operatørsystemer. Gjennom ISAR API kan man sende kommandoer til en robot for å utføre oppdrag og samle inn resultater.
ROBPLAN INSIGHT er et resultat av et bachelorprosjekt (DTE-2781 Bacheloroppgave i datateknikk) med SINTEF og Equinor som oppdragsgivere.
Utviklet av Bachelorgruppe 16 ved UiT Norges arktiske universitet, våren 2024.
MERK: Dashboardet er blitt utviklet på Ubuntu 20.04 gjennom hele prosjektets gang og alle resultater produsert i bacheloroppgaven er basert på dette operativsystemet. Dashboardet har blitt installert og testet i Windows og, der alt fungerer utenom Historikk. Dette er på grunn av forskjell i hvordan dataene håndteres mellom Ubuntu og Windows.
For å sette opp et lokalt utviklingsmiljø må repositoryen forkes:
-
Fork repoet: Trykk på "+ Create a new fork" for å lage din egen kopi av repoet.
-
Klon repoet: Klon din forkede repo til din lokale maskin ved å kjøre følgende kommando i terminalen:
git clone https://github.com/<ditt-brukernavn>/RobPlan-UiT cd RobPlan-UiT
For å sette opp og kjøre MariaDB og phpMyAdmin som Docker-containere for webapplikasjonen:
- Naviger til mappen der
docker-compose.yml
-filen ligger.
Kjør kommando:
docker compose up -d
Kjør kommando:
docker-compose up -d
Etter oppsett av docker containeren kan du administrere databasen via http://localhost:8082/
Username: user
Password: test
Trykk på SQL øverst og kjør scriptet i Datamodel.sql
Deretter kjør scriptet i Data.sql
-
Opprett det virtuelle miljøet:
python -m venv venv
-
Aktiver det virtuelle miljøet:
source venv/bin/activate
-
Opprett det virtuelle miljøet:
python -m venv venv ```[ISAR](https://github.com/equinor/isar)
ROBPLAN INSIGHT er designet for å jobbe med ISAR. Følg instruksjonene i de respektive repoene for å installere Equinors ISAR og isar-robot
Merk: Dashboardet har ikke blitt testet med ISAR kjørt på Docker, men fungerer med ISAR kjørt lokalt.
- Lag en fork av ISAR
- Deretter klon og installer ISAR slik:
git clone https://github.com/<brukernavn>/isar
cd isar
pip install -e .[dev]
Installer så isar-robot med kommadoen:
pip install isar-robot
Etter installasjon av ISAR og isar-robot må du navigere til ISAR sin settings.env fil og sette følgende:
ISAR_MQTT_SSL_ENABLED = false
Dette er nødvendig for å deaktivere SSL for MQTT-kommunikasjon da standardoppsettet for ROBPLAN INSIGHT ikke inkluderer SSL-konfigurasjon for MQTT.
For at dashboardet skal kunne abonnere på emner fra ISAR, må du installere en MQTT-broker som Mosquitto:
- Oppdater pakkelisten og installer Mosquitto og Mosquitto-klienter:
sudo apt-get update
sudo apt-get install mosquitto mosquitto-clients
- Start Mosquitto-tjenesten og sett den til å starte automatisk ved oppstart:
sudo systemctl start mosquitto
sudo systemctl enable mosquitto
- Last ned Mosquitto.
- Følg installasjonsinstruksjonene for Windows.
- Start Mosquitto-tjenesten ved å navigere til installasjonsmappen, default path er C:\Program Files\mosquitto og kjør kommandoen
mosquitto.exe -v
For å overvåke MQTT-meldinger, anbefales det å bruke MQTT Explorer:
- Last ned MQTT Explorer.
- Installer og konfigurer klienten til å koble til din lokale Mosquitto-broker.
- Legg til en ny connection + og fyll inn følgende:
- Name: Valgfritt navn
- Host: localhost
- Port: 1883
- Username: isar
- Password:
Husk å skru av Encryption (tls).
Før du kjører applikasjonen, må du opprette et SSL-sertifikat for å kunne kjøre serveren over HTTPS.
- Installer OpenSSL med kommandoen
sudo apt-get install openssl
- Åpne terminalen og naviger til mappen hvor du ønsker å lagre sertifikatene.
- Kjør følgende kommando for å generere en privat nøkkel og et offentlig sertifikat:
openssl genrsa -out server.key 2048 openssl req -new -x509 -key server.key -out server.crt -days 365
Under prosessen, vil du bli bedt om å oppgi informasjon for sertifikatet. Disse kan være vilkårlige for lokal utvikling.
- Installer OpenSSL fra slproweb.com.
- Åpne OpenSSL og naviger til mappen hvor du ønsker å lagre sertifikatene.
- Kjør følgende kommando for å generere en privat nøkkel og et offentlig sertifikat:
openssl genrsa -out server.key 2048 openssl req -new -x509 -key server.key -out server.crt -days 365
Under prosessen, vil du bli bedt om å oppgi informasjon for sertifikatet. Disse kan være vilkårlige for lokal utvikling.
For å konfigurere applikasjonen til å bruke SSL-sertifikater og hente resultatene fra ISAR, må du opprette en .env-fil i prosjektets rotmappe. Denne filen brukes til å sette miljøvariabler som applikasjonen vil lese ved oppstart.
Opprett en .env-fil i prosjektets rotmappe og legg til følgende miljøvariabler:
export SSL_CERT_PATH="/path/to/your/server.crt"
export SSL_KEY_PATH="/path/to/your/server.key"
export RESULTS_DIR="/path/to/isar/results"
For eksempel:
export SSL_CERT_PATH="/home/dennis/RobPlan-UiT/server.crt"
export SSL_KEY_PATH="/home/dennis/RobPlan-UiT/server.key"
export RESULTS_DIR="/home/dennis/isar/results"
Nå som alt er konfigurert, kan vi kjøre ISAR og ROBPLAN INSIGHT.
- Åpne en ny terminal eller IDE: Naviger til ISAR-prosjektets rotmappe.
- Start ISAR:
Kjør følgende kommando:
Dette vil starte ISAR og opprette en isar-robot med navnet "Placebot"
python main.py
Hvis du ønsker å legge til flere roboter, må du endre settings.py i ISAR.
-
Sett en ny
API_PORT
:På linje 81, sett en ny port for API-en
API_PORT: int = Field(default=3001)
-
Sett et nytt
ROBOT_NAME
:På linje 184, sett et nytt navn for roboten.
ROBOT_NAME: str = Field(default="Placebot 2")
-
Sett en ny
ISAR_ID
:På linje 187, sett en ny unik ID for ISAR-instansen.
ISAR_ID: str = Field(default="00000000-0000-0000-0000-000000000001")
- Naviger til RobPlan-UiT sin rotmappe.
- Husk at det virtuelle miljøet må være aktivert.
python manage.py
Du kan nå åpne dashboardet i en nettleser gjennom https://127.0.0.1:5000/
Merk: Når du prøver å få tilgang til applikasjonen via HTTPS, kan du få en advarsel som sier:
"Your connection is not private NET::ERR_CERT_AUTHORITY_INVALID"
Dette er normalt når man bruker et selvsignert sertifikat. For å fortsette til applikasjonen, kan du trykke på "Advanced" og deretter "Proceed to 127.0.0.1 (unsafe)".
Du kan nå logge inn og begynne!
Brukernavn: testbruker
Passord: test
Etter innlogging kommer du til hoveddashboardet.
Dashboardet viser følgende:
- Aktive Oppdrag: Viser alle pågående oppdrag med detaljer som oppdragets navn, og robot som utfører oppdraget.
- Kalender: Inneholder viktige datoer for kommende og fullførte oppdrag.
- Anleggsoversikt: En visuell representasjon av anlegget hvor robotene opererer i, som hjelper operatøren å forstå hvor hver robot befinner seg.
Flåteoversikten gir detaljert informasjon om alle roboter i flåten. Dette inkluderer:
- Batterinivå: Viser nåværende batterinivå for hver robot.
- Nåværende Oppdrag: Informasjon om hvilke oppdrag hver robot utfører.
- Siste Signal: Tidspunktet for siste kommunikasjon fra roboten.
Hver robot har sin egen side, som nås ved å trykke på Detaljer-knappen på en robot. På denne siden kan man pause, fortsette, stoppe og replanlegge oppdrag.
På oppdragssiden kan du starte et oppdrag så lenge Start oppdrag-knappen er grønn. Hvis knappen er gul, betyr det at det ikke finnes noen ledige roboter til å utføre oppdraget. Oppdragssiden lar også brukeren:
- Legge til Nye Oppdrag: Opprette og tildele nye oppdrag til tilgjengelige roboter.
- Slette Oppdrag: Fjerne oppdrag som ikke lenger er nødvendige.
- Schedule oppdrag: Lar operatøren velge en tid oppdraget skal starte.
Historikksiden gir en oversikt over alle fullførte oppdrag. For hvert oppdrag vises:
- Oppdragsnavn: Navnet på oppdraget.
- Robotnavn: Hvilken robot som utførte oppdraget.
- Status: Om oppdraget ble fullført eller mislyktes.
- Tid Fullført: Når oppdraget ble ferdigstilt.
Hvert oppdrag har en rapport, som operatøren kan se på.
Rapportsiden genererer detaljerte rapporter for hvert fullførte oppdrag. Rapportene inkluderer:
- Inspeksjonsresultater: Data samlet inn under oppdraget.
- Bilder: Bilde fra robotens kamera.
- Lydopptak: Eventuelle relevante lydopptak gjort av roboten.
Sanntidsnotifikasjoner gir varsler om viktige hendelser som kan kreve operatørens oppmerksomhet:
- Lavt Batterinivå: Varsler når en robots batterinivå er lavt.
- Mislykkede Oppdrag: Informerer operatøren om oppdrag som ikke ble fullført.
- Fullførte Oppdrag: Bekreftelse når et oppdrag er fullført.
- ROBOT- Image by juicy_fish on Freepik
- Bakgrunnsbilde innlogging- Fritt å bruke uten kreditering. Hentet fra Freepik.com
- Facility_map, replan_mission.jpg og robotoverview.png er hentet fra Gazebo Turtleworld.
- current_mission.jpg, electric_box.jpg og example_audio.wav er hentet fra ISAR og isar-robot.
- Logo/Logo1 er designet av oss utviklere av ROBPLAN INSIGHT.