7 Commits

Author SHA1 Message Date
ishak jmilou.ishak
b48243f831 changed sensor data to db in other function 2025-01-13 14:57:52 +01:00
317731ec87 python merge fix 2025-01-13 11:00:43 +01:00
441ca19578 repaired js after merge 2025-01-13 10:44:20 +01:00
7f807d0031 added g import from flask 2025-01-13 10:39:23 +01:00
c0ec6901c4 edited python requirements 2025-01-13 10:33:46 +01:00
2fa8fb2926 Merge branch '35-als-gebruiker-wil-ik-dat-mijn-data-word-opgeslagen-in-een-database-om-data-terug-te-zien' into 'main'
Resolve "Als gebruiker wil ik dat mijn data word opgeslagen in een database om data terug te zien"

Closes #35

See merge request technische-informatica-sm3/ti-projectten/rooziinuubii79!4
2025-01-13 10:27:00 +01:00
ishak jmilou.ishak
1fd88c7636 added some info on the readme 2025-01-08 15:19:03 +01:00
4 changed files with 42 additions and 22 deletions

View File

@@ -1,8 +1,39 @@
# TI-project - Kobuki
# TI-project - exploration robot Kobuki
## Description
This project is a kobuki that drives around in dangerous areas and detects objects in its path. It uses a camera to detect objects. The kobuki is able to drive around in a room and detect objects.
This project is a kobuki that drives around in dangerous areas and detects objects in its path. It uses a camera to detect objects. The purpose of this project is to explore dangerous areas without risking human lives. You are able to control the robot using controller on the website.
## Photos
![Kobuki](/docs/assets/KobukiPhoto.jpg)
## Installation
### Requirements
- Kobuki robot
- Raspberry Pi (minimum 3B)
- Camera
- power supply for Raspberry Pi
- laptop or computer
### Steps
1. **Install Python and Pip**
- Ensure you have Python installed on your system. You can download it from [python.org](https://www.python.org/).
- Pip is the package installer for Python. It usually comes with Python, but you can install it separately if needed.
2. **Clone Our Repository**
- Clone our repository to your local machine doing the following :
- Open your terminal
- Change the current working directory to the location where you want the cloned directory.
- Type `git clone https://gitlab.fdmci.hva.nl/technische-informatica-sm3/ti-projectten/rooziinuubii79.git
3. **Install the required packages**
- Open the terminal and navigate to the project - scr - Python - flask.
- Run the following command to install the required packages:
- `pip install -r requirements.txt`
- This will install all the python packages required to run the project.
- for C++, you will need to install the following packages:
- OpenCV
- mqtt-client
4.

View File

@@ -3,3 +3,4 @@ paho-mqtt==1.6.1
ultralytics==8.3.58
opencv-python-headless==4.6.0.66
numpy==1.23.4
mysql-connector-python==9.1.0

View File

@@ -1,4 +1,4 @@
from flask import Flask, Response, request, render_template, jsonify
from flask import Flask, Response, request, render_template, jsonify, g
import paho.mqtt.client as mqtt
from ultralytics import YOLO
import cv2
@@ -49,18 +49,6 @@ def on_message(client, userdata, message):
cv2.rectangle(processed_image, (x1, y1), (x2, y2), (0, 255, 0), 2)
cv2.putText(processed_image, f"{class_name} {box.conf.item():.2f}", (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 255, 0), 2)
# Globale MQTT setup
def on_message(client,userdata, message):
global kobuki_message, latest_image
if message.topic == "kobuki/data":
kobuki_message = str(message.payload.decode("utf-8"))
with app.app_context():
sensor_data(kobuki_message) # Sla de data op in de database
elif message.topic == "kobuki/cam":
latest_image = message.payload
# Create an MQTT client instance
mqtt_client = mqtt.Client()
mqtt_client.username_pw_set("server", "serverwachtwoordofzo")
@@ -132,7 +120,9 @@ def database():
cursor.close()
return str(rows)
def sensor_data(kobuki_message):
@app.route('/data', methods=['GET'])
def data():
try:
# Parse de JSON-string naar een Python-dictionary
data = json.loads(kobuki_message)
@@ -165,12 +155,10 @@ def sensor_data(kobuki_message):
print(f"JSON decode error: {e}")
except mysql.connector.Error as err:
print(f"Database error: {err}")
@app.route('/data', methods=['GET'])
def data():
return kobuki_message
@app.route('/image')
def image():
global processed_image

View File

@@ -35,6 +35,7 @@ document.addEventListener("DOMContentLoaded", function() {
}
// Parse the data and show it on the website
async function parseData() {
const data = await fetchData();
const sensorDataContainer = document.getElementById("sensor-data");
sensorDataContainer.innerHTML = ""; // Clear previous data
@@ -58,4 +59,3 @@ document.addEventListener("DOMContentLoaded", function() {
// Update the image every 200 milliseconds
setInterval(updateImage, 100);
});