Ρομποτική - Πρόγραμμα PREVENT
Πρακτική συνεδρία
Έναρξη
Ευρετήριο
Στόχοι
Άσκηση 1
Άσκηση 2
Άσκηση 3
source: https://emanual.robotis.com/
Στόχοι
- Ο στόχος αυτής της πρακτικής συνεδρίας ρομποτικής είναι να αποκτήσετε πρακτική εμπειρία στη λειτουργία ρομπότ, να κατανοήσετε βασικές έννοιες στον έλεγχο της ρομποτικής και να εφαρμόσετε δεξιότητες επίλυσης προβλημάτων σε πραγματικές εφαρμογές.
- Η συνεδρία αποτελείται από δύο βασικά σενάρια:
- οπτική ανίχνευση και αναγνώριση πυρκαγιάς
- εύρεση της πλησιέστερης εξόδου αποφυγή πυρκαγιάς
- Η πρακτική συνεδρία βασίζεται σε προσομοιώσεις ROS2 και Gazebo, οι οποίες μπορούν να εφαρμοστούν εύκολα σε φυσικά μοντέλα.
Η ρομποτική τεχνολογία μεταμορφώνει την αντιμετώπιση καταστροφών, καθιστώντας τις επιχειρήσεις αναζήτησης, διάσωσης και αποκατάστασης ταχύτερες, ασφαλέστερες και αποτελεσματικότερες.
Αποθετήριο GitHub
Στόχοι
Πρόκειται για μια έξυπνη ρομποτική προσομοίωση που συνδυάζει υπολογιστική όραση και αυτόνομη πλοήγηση για την ανίχνευση πυρκαγιών και την πλοήγηση σε επικίνδυνα περιβάλλοντα προς την ασφαλέστερη έξοδο.
Βασικά χαρακτηριστικά
- Ανίχνευση βέλους με βάση το χρώμα για καθοδήγηση πλοήγησης
- Ανίχνευση πυρκαγιάς/φλόγας με χρήση υπολογιστικής όρασης
- Αυτόνομη πλοήγηση ρομπότ σε προσομοιωμένα περιβάλλοντα
- Έλεγχος σε πραγματικό χρόνο μέσω πληκτρολογίου
- Ζωντανή μετάδοση από την κάμερα από την οπτική γωνία του ρομπότ
source: https://emanual.robotis.com/
Τι θα ζήσετε
- Ανίχνευση όρασης: Παρακολουθήστε τους αλγόριθμούς σας να αναγνωρίζουν χρωματιστά βέλη και φλόγες
- 3D προσομοίωση: Δείτε το ρομπότ σας να περιηγείται σε ένα ρεαλιστικό σχολικό περιβάλλον
- Ζωντανή κάμερα: Δείτε τον κόσμο μέσα από τα μάτια του ρομπότ σας
- Διαδραστικός έλεγχος: Οδηγήστε το ρομπότ σας χρησιμοποιώντας τα πλήκτρα WASD
- Αυτόνομη πλοήγηση: Αφήστε το ρομπότ να λαμβάνει αποφάσεις με βάση οπτικά ερεθίσματα
Προαπαιτούμενα
- Βασικές αρχές της υπολογιστικής όρασης
Άσκηση 1
Άσκηση 1 - Ανίχνευση όρασης
Ο στόχος αυτής της άσκησης ανίχνευσης όρασης είναι η ανάπτυξη βασικών δεξιοτήτων υπολογιστικής όρασης, ξεκινώντας με την πρακτική άσκηση ανίχνευσης χρωμάτων. Οι μαθητές θα μάθουν και θα εξασκηθούν συγκεκριμένα στην ανίχνευση χρωμάτων βέλους για τα τρία βασικά χρώματα (κόκκινο, πράσινο, μπλε) και στην ανίχνευση φλογών χρησιμοποιώντας διάφορα δείγματα εικόνων. Αυτή η πρακτική άσκηση παρέχει την απαραίτητη βάση για την κατανόηση του τρόπου λειτουργίας των αλγορίθμων επεξεργασίας εικόνων σε πραγματικές εφαρμογές.
Άσκηση 1 - Ανίχνευση όρασης
Ξεκινήστε με την άσκηση
# Install OpenCV for the exercisespip install opencv-contrib-python# Try the detection algorithmscd Exercise/python detect.py
Άσκηση 1 - Ανίχνευση όρασης
Ο κώδικας ανίχνευσης χρωμάτων (detect.py) και οι παραδειγματικές εικόνες μπορούν να μεταφορτωθούν από εδώ.
Ανίχνευση όρασης
import cv2import numpy as npimport sysdef detect_arrow_and_show(image_path: str): image = cv2.imread(image_path) if image is None: print(f"Error: Could not read {image_path}") return image_bgr = image.copy() hsv_image = cv2.cvtColor(image_bgr, cv2.COLOR_BGR2HSV) red_lower = np.array([0, 50, 50]) red_upper = np.array([10, 255, 255]) green_lower = np.array([35, 50, 50]) green_upper = np.array([85, 255, 255]) blue_lower = np.array([100, 50, 50]) blue_upper = np.array([130, 255, 255]) orange_lower = np.array([ 8,100,140]) orange_upper = np.array([20,255,255]) yellow_lower = np.array([20, 60,160]) yellow_upper = np.array([45,255,255]) red_mask = cv2.inRange(hsv_image, red_lower, red_upper) green_mask = cv2.inRange(hsv_image, green_lower, green_upper) blue_mask = cv2.inRange(hsv_image, blue_lower, blue_upper) orange_mask = cv2.inRange(hsv_image, orange_lower, orange_upper) yellow_mask = cv2.inRange(hsv_image, yellow_lower, yellow_upper)
red_pixels = cv2.countNonZero(red_mask) green_pixels = cv2.countNonZero(green_mask) blue_pixels = cv2.countNonZero(blue_mask) flame_pixels = cv2.countNonZero(red_mask) + cv2.countNonZero(orange_mask) + cv2.countNonZero(yellow_mask) color_counts = { 'Red': red_pixels, 'Green': green_pixels, 'Blue': blue_pixels, 'Flame': flame_pixels } max_color = max(color_counts, key=color_counts.get) max_count = color_counts[max_color] detected_color = max_color if max_count > 100 else "Unknown" # return detected_color cv2.putText(image, f'Detected: {detected_color}', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) cv2.imshow(f'{image_path} - {detected_color}', image) print(f"{image_path}: {detected_color} detected") cv2.waitKey(0) cv2.destroyAllWindows() if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python detect.py <filename>") else: detect_arrow_and_show(sys.argv[1])
Άσκηση 1 - Ανίχνευση όρασης
Vision detection
Και ο κώδικας ανίχνευσης φλόγας (liveFlameDetection.py):
import cv2import numpy as npdef flamedetector(): cap = cv2.VideoCapture(0) if not cap.isOpened(): print("Error: Could not open webcam.") return # Optional: make the image a bit sharper / consistent cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) # Parameters you can tune MIN_AREA_RATIO = 0.001 # 0.1% of frame area SAT_MIN = 140 # min saturation (reduce skin detections) VAL_MIN = 190 # min brightness (flames are bright) COOLDOWN_FRAMES = 8 # keep text on a few frames to avoid flicker cooldown = 0 print("Press 'q' to quit.") while True: ret, frame = cap.read() frame = cv2.flip(frame, 1) if not ret: print("Error: Could not read frame.") break hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) h, s, v = cv2.split(hsv) # Hue ranges for red/orange/yellow flames # red wrap-around (0-10) mask_r1 = cv2.inRange(hsv, np.array([0, SAT_MIN, VAL_MIN]), np.array([10, 255, 255])) # orange/yellow (15-45) – adjust upper bound if your flame looks more yellow mask_r2 = cv2.inRange(hsv, np.array([15, SAT_MIN, VAL_MIN]), np.array([45, 255, 255]))
mask = cv2.bitwise_or(mask_r1, mask_r2) # Clean up noise mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, np.ones((3,3), np.uint8), iterations=1) mask = cv2.morphologyEx(mask, cv2.MORPH_DILATE, np.ones((3,3), np.uint8), iterations=2) # Find large enough regions contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) frame_area = frame.shape[0] * frame.shape[1] min_area = max(200, int(MIN_AREA_RATIO * frame_area)) # never below 200 px detected = any(cv2.contourArea(c) > min_area for c in contours) # Debounce flicker if detected: cooldown = COOLDOWN_FRAMES elif cooldown > 0: cooldown -= 1 if cooldown > 0: cv2.putText(frame, 'Flame Detected!', (12, 34), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 255), 3, cv2.LINE_AA) cv2.imshow('Flame Detection (color)', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() if __name__ == "__main__": flamedetector()
Άσκηση 2
Άσκηση 2 - Προσομοίωση ρομπότ
Ο στόχος αυτής της άσκησης είναι να ενσωματωθούν βασικές έννοιες, ζητώντας από τους μαθητές να εφαρμόσουν τις δεξιότητές τους στον τομέα της υπολογιστικής όρασης και του ελέγχου σε ένα ρεαλιστικό περιβάλλον προσομοίωσης. Συγκεκριμένα, οι μαθητές θα εξασκηθούν στη χρήση ενός προσομοιωμένου συστήματος όρασης για την ανίχνευση ενδείξεων πλοήγησης και θα εφαρμόσουν τη λογική λήψης αποφάσεων για την επιτυχή πλοήγηση ενός TurtleBot3 μέσα από ένα μοντέλο σχολείου. Αυτή η άσκηση έχει σχεδιαστεί για να μιμείται πραγματικούς κινδύνους που μπορεί να προκύψουν μετά από σεισμούς και πυρκαγιές. Σε έναν σεισμό, δημιουργούνται πολυάριθμες πηγές ανάφλεξης, όπως σπασμένες σωληνώσεις αερίου και βραχυκυκλώματα. Κατά τη διάρκεια μιας πυρκαγιάς, τα κτίρια αναφλέγονται κυρίως από τις φλόγες που μεταφέρονται από τον άνεμο ή από την έντονη ακτινοβολούμενη θερμότητα από κοντινές καμένες κατασκευές.
Άσκηση 2 - Προσομοίωση ρομπότ
Prerequisites
- GPU: NVIDIA or AMD κάρτα γραφικών - Συνιστάται ανεπιφύλακτα
- Docker desktop software:Εάν είστε χρήστης Windows
Το Apple Mac δεν μπορεί να χρησιμοποιηθεί λόγω των GPU που βασίζονται σε μοντέλα πυριτίου.
Άσκηση 2 - Προσομοίωση ρομπότ
Ρύθμιση περιβάλλοντος ROS2
Βήμα 4: Πρόσβαση στον εικονικό σας υπολογιστή
Βήμα 3 Εκκινήστε το κοντέινερ
Βήμα 1 Κλωνοποιήστε το αποθετήριο
Βήμα 2: Δημιουργία κοντέινερ Docker
Άσκηση 2 - Προσομοίωση ρομπότ
Γρήγορη εγκατάσταση Ανοίξτε ένα τερματικό στην εικονική επιφάνεια εργασίας σας και εκτελέστε:
Βήμα 4 Ρύθμιση περιβάλλοντος (ΣΗΜΑΝΤΙΚΟ!)
Βήμα 3: Δημιουργία του έργου
Βήμα 1 Εγκατάσταση εξαρτήσεων
Βήμα 2: Διόρθωση συμβατότητας Python
Άσκηση 2 - Προσομοίωση ρομπότ
Εκκίνηση της προσομοίωσης Μόλις ολοκληρωθεί η εγκατάσταση, ανοίξτε 3 τερματικά και ακολουθήστε τα παρακάτω βήματα:
Τερματικός σταθμός 3: Οδήγηση του ρομπότ
Τερματικός σταθμός 1: Ξεκινήστε τον κόσμο
Τερματικός σταθμός 2: Όραση ρομπότ
Άσκηση 3
Άσκηση 3 - Εφαρμογή στον πραγματικό κόσμο
Εάν έχετε πρόσβαση σε πραγματικά φυσικά ρομπότ, μπορείτε να κάνετε αυτές τις ασκήσεις, όπου θα δοκιμάσετε προηγούμενες προσομοιώσεις σε ένα πραγματικό περιβάλλον.
source: https://www.ros.org/robots/turtlebot3/
Άσκηση 3 - Εφαρμογή στον πραγματικό κόσμο
Θα πρέπει να:
- κατασκευάστε ένα μοντέλο σχολείου για το περιβάλλον προσομοίωσης
- εκτελέστε τον ίδιο κώδικα όπως στην Άσκηση 1 (detect.py)
- Εκτελέστε τον ίδιο κώδικα όπως στην Άσκηση 2 (vision_detector.py)
Άσκηση 1
Άσκηση 2
soure: https://forum.robotis.com/t/awesome-turtlebot3-projects/4206
Ολοκλήρωση μαθήματος!
- Open your browser
- Navigate to: http://localhost:6080/
- Login with:
- Username: ubuntu
- Password: ubuntu
Boom! You now have a Linux desktop in your browser!
# Setup environment firstsource /opt/ros/humble/setup.bashsource /code/ros2_ws/install/setup.bashexport TURTLEBOT3_MODEL=waffle_pi# Launch the simulationros2 launch prevent sim_tb3.launch.py
You'll see the robot spawned in a 3D Gazebo world!
cd ~/code/ros2_ws/colcon build --symlink-install
Compiling magic happening...
docker run -p 6080:80 --gpus all --shm-size=32gb -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v $(pwd)/:/code/ --privileged -it --name humble tiryoh/ros2-desktop-vnc:humble bash
Run these commands in EVERY new terminal:
source /opt/ros/humble/setup.bashsource /code/ros2_ws/install/setup.bashexport TURTLEBOT3_MODEL=waffle_pi
git clone https://github.com/SivadineshPonrajan/PREVENT.gitcd PREVENT
sudo apt update && sudo apt install -y \ ros-humble-turtlebot3* \ ros-humble-turtlebot3-gazebo \ ros-humble-gazebo-ros-pkgs \ ros-humble-gazebo-ros \ ros-humble-image-view \ python3-numpy \ python3-opencv \ ros-humble-vision-opencvsudo apt install python3-colcon-common-extensions
# Setup environment firstsource /opt/ros/humble/setup.bashsource /code/ros2_ws/install/setup.bashexport TURTLEBOT3_MODEL=waffle_pi# Control the robot with keyboardros2 run turtlebot3_teleop teleop_keyboard
Use WASD keys to drive your robot around!
docker build -t tiryoh/ros2-desktop-vnc:humble .
This might take a few minutes...
sudo python3 -m pip uninstall -y numpy || truesudo apt-get updatesudo apt-get install -y --reinstall python3-numpypython3 -m pip install "numpy<2" --no-cache-dir
🐍
# Setup environment firstsource /opt/ros/humble/setup.bashsource /code/ros2_ws/install/setup.bashexport TURTLEBOT3_MODEL=waffle_pi# View what the robot seesros2 run image_view image_view --ros-args --remap /image:=/camera/image_raw
Watch the world through the robot's camera!
GR - PREVENT Robotics Practical Session (Halmstad)
citizensinpower
Created on October 15, 2025
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Essential Course
View
Practical Course
View
Basic Interactive Course
View
Course 3D Style
View
Minimal Course
View
Neodigital CPD Course
View
Laws and Regulations Course
Explore all templates
Transcript
Ρομποτική - Πρόγραμμα PREVENT
Πρακτική συνεδρία
Έναρξη
Ευρετήριο
Στόχοι
Άσκηση 1
Άσκηση 2
Άσκηση 3
source: https://emanual.robotis.com/
Στόχοι
Η ρομποτική τεχνολογία μεταμορφώνει την αντιμετώπιση καταστροφών, καθιστώντας τις επιχειρήσεις αναζήτησης, διάσωσης και αποκατάστασης ταχύτερες, ασφαλέστερες και αποτελεσματικότερες.
Αποθετήριο GitHub
Στόχοι
Πρόκειται για μια έξυπνη ρομποτική προσομοίωση που συνδυάζει υπολογιστική όραση και αυτόνομη πλοήγηση για την ανίχνευση πυρκαγιών και την πλοήγηση σε επικίνδυνα περιβάλλοντα προς την ασφαλέστερη έξοδο.
Βασικά χαρακτηριστικά
source: https://emanual.robotis.com/
Τι θα ζήσετε
Προαπαιτούμενα
Άσκηση 1
Άσκηση 1 - Ανίχνευση όρασης
Ο στόχος αυτής της άσκησης ανίχνευσης όρασης είναι η ανάπτυξη βασικών δεξιοτήτων υπολογιστικής όρασης, ξεκινώντας με την πρακτική άσκηση ανίχνευσης χρωμάτων. Οι μαθητές θα μάθουν και θα εξασκηθούν συγκεκριμένα στην ανίχνευση χρωμάτων βέλους για τα τρία βασικά χρώματα (κόκκινο, πράσινο, μπλε) και στην ανίχνευση φλογών χρησιμοποιώντας διάφορα δείγματα εικόνων. Αυτή η πρακτική άσκηση παρέχει την απαραίτητη βάση για την κατανόηση του τρόπου λειτουργίας των αλγορίθμων επεξεργασίας εικόνων σε πραγματικές εφαρμογές.
Άσκηση 1 - Ανίχνευση όρασης
Ξεκινήστε με την άσκηση
# Install OpenCV for the exercisespip install opencv-contrib-python# Try the detection algorithmscd Exercise/python detect.py
Άσκηση 1 - Ανίχνευση όρασης
Ο κώδικας ανίχνευσης χρωμάτων (detect.py) και οι παραδειγματικές εικόνες μπορούν να μεταφορτωθούν από εδώ.
Ανίχνευση όρασης
import cv2import numpy as npimport sysdef detect_arrow_and_show(image_path: str): image = cv2.imread(image_path) if image is None: print(f"Error: Could not read {image_path}") return image_bgr = image.copy() hsv_image = cv2.cvtColor(image_bgr, cv2.COLOR_BGR2HSV) red_lower = np.array([0, 50, 50]) red_upper = np.array([10, 255, 255]) green_lower = np.array([35, 50, 50]) green_upper = np.array([85, 255, 255]) blue_lower = np.array([100, 50, 50]) blue_upper = np.array([130, 255, 255]) orange_lower = np.array([ 8,100,140]) orange_upper = np.array([20,255,255]) yellow_lower = np.array([20, 60,160]) yellow_upper = np.array([45,255,255]) red_mask = cv2.inRange(hsv_image, red_lower, red_upper) green_mask = cv2.inRange(hsv_image, green_lower, green_upper) blue_mask = cv2.inRange(hsv_image, blue_lower, blue_upper) orange_mask = cv2.inRange(hsv_image, orange_lower, orange_upper) yellow_mask = cv2.inRange(hsv_image, yellow_lower, yellow_upper)
red_pixels = cv2.countNonZero(red_mask) green_pixels = cv2.countNonZero(green_mask) blue_pixels = cv2.countNonZero(blue_mask) flame_pixels = cv2.countNonZero(red_mask) + cv2.countNonZero(orange_mask) + cv2.countNonZero(yellow_mask) color_counts = { 'Red': red_pixels, 'Green': green_pixels, 'Blue': blue_pixels, 'Flame': flame_pixels } max_color = max(color_counts, key=color_counts.get) max_count = color_counts[max_color] detected_color = max_color if max_count > 100 else "Unknown" # return detected_color cv2.putText(image, f'Detected: {detected_color}', (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2) cv2.imshow(f'{image_path} - {detected_color}', image) print(f"{image_path}: {detected_color} detected") cv2.waitKey(0) cv2.destroyAllWindows() if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python detect.py <filename>") else: detect_arrow_and_show(sys.argv[1])
Άσκηση 1 - Ανίχνευση όρασης
Vision detection
Και ο κώδικας ανίχνευσης φλόγας (liveFlameDetection.py):
import cv2import numpy as npdef flamedetector(): cap = cv2.VideoCapture(0) if not cap.isOpened(): print("Error: Could not open webcam.") return # Optional: make the image a bit sharper / consistent cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) # Parameters you can tune MIN_AREA_RATIO = 0.001 # 0.1% of frame area SAT_MIN = 140 # min saturation (reduce skin detections) VAL_MIN = 190 # min brightness (flames are bright) COOLDOWN_FRAMES = 8 # keep text on a few frames to avoid flicker cooldown = 0 print("Press 'q' to quit.") while True: ret, frame = cap.read() frame = cv2.flip(frame, 1) if not ret: print("Error: Could not read frame.") break hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) h, s, v = cv2.split(hsv) # Hue ranges for red/orange/yellow flames # red wrap-around (0-10) mask_r1 = cv2.inRange(hsv, np.array([0, SAT_MIN, VAL_MIN]), np.array([10, 255, 255])) # orange/yellow (15-45) – adjust upper bound if your flame looks more yellow mask_r2 = cv2.inRange(hsv, np.array([15, SAT_MIN, VAL_MIN]), np.array([45, 255, 255]))
mask = cv2.bitwise_or(mask_r1, mask_r2) # Clean up noise mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, np.ones((3,3), np.uint8), iterations=1) mask = cv2.morphologyEx(mask, cv2.MORPH_DILATE, np.ones((3,3), np.uint8), iterations=2) # Find large enough regions contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) frame_area = frame.shape[0] * frame.shape[1] min_area = max(200, int(MIN_AREA_RATIO * frame_area)) # never below 200 px detected = any(cv2.contourArea(c) > min_area for c in contours) # Debounce flicker if detected: cooldown = COOLDOWN_FRAMES elif cooldown > 0: cooldown -= 1 if cooldown > 0: cv2.putText(frame, 'Flame Detected!', (12, 34), cv2.FONT_HERSHEY_SIMPLEX, 1.0, (0, 0, 255), 3, cv2.LINE_AA) cv2.imshow('Flame Detection (color)', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() if __name__ == "__main__": flamedetector()
Άσκηση 2
Άσκηση 2 - Προσομοίωση ρομπότ
Ο στόχος αυτής της άσκησης είναι να ενσωματωθούν βασικές έννοιες, ζητώντας από τους μαθητές να εφαρμόσουν τις δεξιότητές τους στον τομέα της υπολογιστικής όρασης και του ελέγχου σε ένα ρεαλιστικό περιβάλλον προσομοίωσης. Συγκεκριμένα, οι μαθητές θα εξασκηθούν στη χρήση ενός προσομοιωμένου συστήματος όρασης για την ανίχνευση ενδείξεων πλοήγησης και θα εφαρμόσουν τη λογική λήψης αποφάσεων για την επιτυχή πλοήγηση ενός TurtleBot3 μέσα από ένα μοντέλο σχολείου. Αυτή η άσκηση έχει σχεδιαστεί για να μιμείται πραγματικούς κινδύνους που μπορεί να προκύψουν μετά από σεισμούς και πυρκαγιές. Σε έναν σεισμό, δημιουργούνται πολυάριθμες πηγές ανάφλεξης, όπως σπασμένες σωληνώσεις αερίου και βραχυκυκλώματα. Κατά τη διάρκεια μιας πυρκαγιάς, τα κτίρια αναφλέγονται κυρίως από τις φλόγες που μεταφέρονται από τον άνεμο ή από την έντονη ακτινοβολούμενη θερμότητα από κοντινές καμένες κατασκευές.
Άσκηση 2 - Προσομοίωση ρομπότ
Prerequisites
- Docker desktop software:Εάν είστε χρήστης Windows
Το Apple Mac δεν μπορεί να χρησιμοποιηθεί λόγω των GPU που βασίζονται σε μοντέλα πυριτίου.Άσκηση 2 - Προσομοίωση ρομπότ
Ρύθμιση περιβάλλοντος ROS2
Βήμα 4: Πρόσβαση στον εικονικό σας υπολογιστή
Βήμα 3 Εκκινήστε το κοντέινερ
Βήμα 1 Κλωνοποιήστε το αποθετήριο
Βήμα 2: Δημιουργία κοντέινερ Docker
Άσκηση 2 - Προσομοίωση ρομπότ
Γρήγορη εγκατάσταση Ανοίξτε ένα τερματικό στην εικονική επιφάνεια εργασίας σας και εκτελέστε:
Βήμα 4 Ρύθμιση περιβάλλοντος (ΣΗΜΑΝΤΙΚΟ!)
Βήμα 3: Δημιουργία του έργου
Βήμα 1 Εγκατάσταση εξαρτήσεων
Βήμα 2: Διόρθωση συμβατότητας Python
Άσκηση 2 - Προσομοίωση ρομπότ
Εκκίνηση της προσομοίωσης Μόλις ολοκληρωθεί η εγκατάσταση, ανοίξτε 3 τερματικά και ακολουθήστε τα παρακάτω βήματα:
Τερματικός σταθμός 3: Οδήγηση του ρομπότ
Τερματικός σταθμός 1: Ξεκινήστε τον κόσμο
Τερματικός σταθμός 2: Όραση ρομπότ
Άσκηση 3
Άσκηση 3 - Εφαρμογή στον πραγματικό κόσμο
Εάν έχετε πρόσβαση σε πραγματικά φυσικά ρομπότ, μπορείτε να κάνετε αυτές τις ασκήσεις, όπου θα δοκιμάσετε προηγούμενες προσομοιώσεις σε ένα πραγματικό περιβάλλον.
source: https://www.ros.org/robots/turtlebot3/
Άσκηση 3 - Εφαρμογή στον πραγματικό κόσμο
Θα πρέπει να:
Άσκηση 1
Άσκηση 2
soure: https://forum.robotis.com/t/awesome-turtlebot3-projects/4206
Ολοκλήρωση μαθήματος!
- Username: ubuntu
- Password: ubuntu
Boom! You now have a Linux desktop in your browser!# Setup environment firstsource /opt/ros/humble/setup.bashsource /code/ros2_ws/install/setup.bashexport TURTLEBOT3_MODEL=waffle_pi# Launch the simulationros2 launch prevent sim_tb3.launch.py
You'll see the robot spawned in a 3D Gazebo world!
cd ~/code/ros2_ws/colcon build --symlink-install
Compiling magic happening...
docker run -p 6080:80 --gpus all --shm-size=32gb -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v $(pwd)/:/code/ --privileged -it --name humble tiryoh/ros2-desktop-vnc:humble bash
Run these commands in EVERY new terminal:
source /opt/ros/humble/setup.bashsource /code/ros2_ws/install/setup.bashexport TURTLEBOT3_MODEL=waffle_pi
git clone https://github.com/SivadineshPonrajan/PREVENT.gitcd PREVENT
sudo apt update && sudo apt install -y \ ros-humble-turtlebot3* \ ros-humble-turtlebot3-gazebo \ ros-humble-gazebo-ros-pkgs \ ros-humble-gazebo-ros \ ros-humble-image-view \ python3-numpy \ python3-opencv \ ros-humble-vision-opencvsudo apt install python3-colcon-common-extensions
# Setup environment firstsource /opt/ros/humble/setup.bashsource /code/ros2_ws/install/setup.bashexport TURTLEBOT3_MODEL=waffle_pi# Control the robot with keyboardros2 run turtlebot3_teleop teleop_keyboard
Use WASD keys to drive your robot around!
docker build -t tiryoh/ros2-desktop-vnc:humble .
This might take a few minutes...
sudo python3 -m pip uninstall -y numpy || truesudo apt-get updatesudo apt-get install -y --reinstall python3-numpypython3 -m pip install "numpy<2" --no-cache-dir
🐍
# Setup environment firstsource /opt/ros/humble/setup.bashsource /code/ros2_ws/install/setup.bashexport TURTLEBOT3_MODEL=waffle_pi# View what the robot seesros2 run image_view image_view --ros-args --remap /image:=/camera/image_raw
Watch the world through the robot's camera!