Επιλύθηκε: προσθέστε αρχεία υπηρεσίας στο setup.py ROS2

Τα τελευταία χρόνια, ο τομέας της ρομποτικής έχει δει μια έκρηξη προόδου και υιοθέτησης τεχνολογιών. Ένα από αυτά είναι το ROS2 (Robot Operating System 2), ένα πλαίσιο ανοιχτού κώδικα ενδιάμεσου λογισμικού που παρέχει εργαλεία, βιβλιοθήκες και συμβάσεις για την ανάπτυξη, δοκιμή και συντήρηση εφαρμογών ρομπότ. Αυτό το άρθρο εξετάζει την προσθήκη αρχείων υπηρεσίας σε ένα πακέτο ROS2 χρησιμοποιώντας το setup.py, μια βασική δεξιότητα για προγραμματιστές που εργάζονται με αυτήν την πλατφόρμα. Θα ξεκινήσουμε με μια σύντομη εισαγωγή, θα παρουσιάσουμε μια λύση στο πρόβλημα, θα σας καθοδηγήσουμε σε έναν οδηγό βήμα προς βήμα και θα συζητήσουμε σχετικά θέματα για βαθύτερη κατανόηση.

Η ρύθμιση ενός αρχείου υπηρεσίας στο πακέτο ROS2 περιλαμβάνει δύο βασικά βήματα: τη δημιουργία ενός αρχείου ορισμού μηνύματος υπηρεσίας (.srv) και την προσθήκη των απαραίτητων διαμορφώσεων στα αρχεία package.xml και setup.py. Σε αυτό το σεμινάριο, θα δημιουργήσουμε μια απλή υπηρεσία που παίρνει μια συμβολοσειρά εισόδου και επιστρέφει το μήκος της παρεχόμενης εισόδου.

Αρχικά, ας προετοιμάσουμε τον χώρο εργασίας μας. Δημιουργήστε ένα πακέτο ROS2 με το όνομα "string_length_service" με την ακόλουθη εντολή:

«"
ros2 pkg δημιουργία –build-type ament_python string_length_service
«"

Τώρα, δημιουργήστε έναν κατάλογο με το όνομα "srv" μέσα στο πακέτο "string_length_service" για να αποθηκεύσετε το αρχείο ορισμού μηνυμάτων υπηρεσίας:

«"
mkdir srv
«"

Μέσα στον κατάλογο "srv", δημιουργήστε ένα αρχείο με το όνομα "StringLength.srv" με το ακόλουθο περιεχόμενο:

«"
συμβολοσειρά input_string
-
μήκος int64
«"

Στο αρχείο package.xml, φροντίστε να προσθέσετε τις απαραίτητες εξαρτήσεις:

"`xml
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
matplotlib
«"

Τώρα, ας περάσουμε στο βασικό μέρος αυτού του άρθρου – την προσθήκη αρχείων υπηρεσίας στο setup.py. Ανοίξτε το αρχείο "setup.py" και συμπεριλάβετε τον ακόλουθο κώδικα:

«Πύθωνας
από setuptools εισαγωγή εγκατάστασης
από glob εισαγωγής glob

πακέτο_όνομα = 'υπηρεσία_μήκους_string'

εγκατάσταση (
όνομα=όνομα_πακέτου,
έκδοση='0.0.0',
πακέτα=[όνομα_πακέτου],
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
('share/' + package_name, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=Αλήθεια,
maintenanceer='developer_name_here',
maintenanceer_email='developer_email_here',
description='Μια υπηρεσία για τον υπολογισμό του μήκους συμβολοσειράς',
άδεια='MIT',
tests_require=['pytest'],
σημεία_εισόδου={
'console_scripts': [
'string_length_server = ' + package_name + '.string_length_server:main',
'string_length_client = ' + package_name + '.string_length_client:main',
],
},
)
«"

Ας συζητήσουμε τώρα τι κάνει αυτός ο κώδικας: Το αρχείο setup.py χρησιμοποιεί setuptools για τη διανομή και τη διαχείριση του πακέτου μας. Η μεταβλητή package_name περιέχει το όνομα του πακέτου μας. Η λίστα data_files καθορίζει τον απαραίτητο πόρο, το package.xml και τα αρχεία υπηρεσίας που θα διανεμηθούν μαζί με το πακέτο. Το install_requires παραθέτει τα απαιτούμενα πακέτα και τα entry_points ορίζουν τα εκτελέσιμα αρχεία της υπηρεσίας μας. Βεβαιωθείτε ότι έχετε αντικαταστήσει τα "developer_name_here" και "developer_email_here" με τις κατάλληλες τιμές.

Χρησιμοποιώντας rclpy και std_srvs

Μετά τη ρύθμιση των αρχείων υπηρεσίας στο setup.py, είναι απαραίτητο να εφαρμόσετε τον κώδικα διακομιστή και πελάτη χρησιμοποιώντας τη βιβλιοθήκη πελάτη ROS2 Python, rclpy και std_srvs για τους τυπικούς τύπους υπηρεσιών.

Δημιουργήστε τα αρχεία "string_length_server.py" και "string_length_client.py" στον κατάλογο του πακέτου σας και εφαρμόστε τον κώδικα διακομιστή και πελάτη. Μπορείτε να βρείτε λεπτομέρειες σχετικά με τον τρόπο εγγραφής κώδικα διακομιστή και πελάτη στην τεκμηρίωση του ROS2.

Κατασκευή και δοκιμή της υπηρεσίας

Τέλος, δημιουργήστε και δοκιμάστε το πακέτο σας χρησιμοποιώντας τις ακόλουθες εντολές:

«"
πηγή /opt/ros/foxy/setup.bash
colcon build –packages-select string_length_service
πηγή install/setup.bash
«"

Μετά την επιτυχή κατασκευή, εκτελέστε τον διακομιστή και τον πελάτη χρησιμοποιώντας δύο ξεχωριστά τερματικά:

«"
Το ros2 τρέχει string_length_service string_length_server
«"

«"
ros2 εκτέλεση string_length_service string_length_client
«"

Αυτός ο οδηγός παρουσίασε μια εις βάθος εξήγηση της προσθήκης αρχείων υπηρεσίας στο setup.py για πακέτα ROS2 ενώ αγγίζει σχετικά θέματα όπως το rclpy και το std_srvs. Ακολουθώντας αυτά τα βήματα, μπορείτε να δημιουργήσετε και να διανείμετε τις υπηρεσίες ROS2 σας με αποτελεσματικό και οργανωμένο τρόπο, διευκολύνοντας τις αλληλεπιδράσεις στις ρομποτικές εφαρμογές σας. Καλή τύχη και καλή κωδικοποίηση!

Σχετικές αναρτήσεις:

Αφήστε ένα σχόλιο