mirror of
https://gitlab.fdmci.hva.nl/technische-informatica-sm3/ti-projectten/rooziinuubii79.git
synced 2025-08-05 12:54:57 +00:00
Compare commits
7 Commits
35-als-geb
...
b48243f831
Author | SHA1 | Date | |
---|---|---|---|
|
b48243f831 | ||
317731ec87 | |||
441ca19578 | |||
7f807d0031 | |||
c0ec6901c4 | |||
2fa8fb2926 | |||
|
1fd88c7636 |
35
README.md
35
README.md
@@ -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
|
||||

|
||||
|
||||
## 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.
|
@@ -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
|
@@ -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
|
||||
|
@@ -34,7 +34,8 @@ document.addEventListener("DOMContentLoaded", function() {
|
||||
}
|
||||
}
|
||||
|
||||
// Parse the data and show it on the website
|
||||
// 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);
|
||||
});
|
||||
|
||||
|
Reference in New Issue
Block a user