Rozwiązany: dodaj pliki usług w setup.py ROS2

W ostatnich latach w dziedzinie robotyki nastąpił gwałtowny rozwój i przyjęcie technologii. Jednym z nich jest ROS2 (Robot Operating System 2), platforma oprogramowania pośredniego typu open source, która udostępnia narzędzia, biblioteki i konwencje do tworzenia, testowania i utrzymywania aplikacji robotów. W tym artykule szczegółowo opisano dodawanie plików usług do pakietu ROS2 przy użyciu pliku setup.py, niezbędnej umiejętności programistów pracujących z tą platformą. Zaczniemy od krótkiego wprowadzenia, przedstawimy rozwiązanie problemu, przeprowadzimy Cię przez przewodnik krok po kroku i omówimy powiązane tematy w celu głębszego zrozumienia.

Konfiguracja pliku usługi w pakiecie ROS2 obejmuje dwa główne kroki: utworzenie pliku definicji komunikatu usługi (.srv) oraz dodanie niezbędnych konfiguracji w plikach package.xml i setup.py. W tym samouczku utworzymy prostą usługę, która pobiera ciąg wejściowy i zwraca długość podanych danych wejściowych.

Najpierw przygotujmy nasze miejsce do pracy. Utwórz pakiet ROS2 o nazwie „string_length_service” za pomocą następującego polecenia:

„„
ros2 pkg create – typ kompilacji ament_python string_length_service
„„

Teraz utwórz katalog o nazwie „srv” w pakiecie „string_length_service”, w którym będziesz przechowywać plik definicji komunikatu serwisowego:

„„
mkdir srv
„„

W katalogu „srv” utwórz plik o nazwie „StringLength.srv” o następującej zawartości:

„„
ciąg wejściowy_ciąg
-
długość int64
„„

W pliku package.xml pamiętaj o dodaniu niezbędnych zależności:

„`xml
std_msgs
pakiety_interfejsu_usługi
ament_cmake
ament_cmake_auto
matplotlib
„„

Przejdźmy teraz do zasadniczej części tego artykułu – dodania plików usług w setup.py. Otwórz plik „setup.py” i dołącz następujący kod:

„pyton”
z setuptools import setup
z globala importuj glob

nazwa_pakietu = 'usługa długości_stringu'

organizować coś(
nazwa=nazwa_pakietu,
wersja='0.0.0′,
pakiety=[nazwa_pakietu],
pliki_danych=[
(„udział/indeks_amentu/indeks_zasobu/pakiety”,
['zasób/' + nazwa_pakietu]),
(„udział/” + nazwa_pakietu, [„pakiet.xml”]),
('udział/' + nazwa_pakietu, glob('srv/*'))
],
install_requires=['narzędzia konfiguracyjne'],
zip_safe=Prawda,
konserwator='nazwa_programisty_tutaj',
keeper_email='developer_email_here',
opis='Usługa obliczania długości łańcucha znaków',
licencja='MIT',
testy_require=['pytest'],
punkty_wejściowe={
„skrypty_konsoli”: [
'string_length_server = ' + nazwa_pakietu + '.string_length_server:main',
'string_length_client = ' + nazwa_pakietu + '.string_length_client:main',
],
},
)
„„

Omówmy teraz, co robi ten kod: Plik setup.py wykorzystuje narzędzia setuptools do dystrybucji i zarządzania naszym pakietem. Zmienna nazwa_pakietu przechowuje nazwę naszego pakietu. Lista data_files określa niezbędne zasoby, pliki package.xml i pliki usług, które mają być dystrybuowane wraz z pakietem. install_requires zawiera listę wymaganych pakietów, a wpisy_punktów definiują pliki wykonywalne naszej usługi. Pamiętaj, aby zastąpić „nazwa_programisty_tutaj” i „tutaj_email_programisty” właściwymi wartościami.

Używanie rclpy i std_srvs

Po skonfigurowaniu plików usług w setup.py konieczne jest zaimplementowanie kodu serwera i klienta przy użyciu biblioteki klienta ROS2 Python Client Library, rclpy i std_srvs dla standardowych typów usług.

Utwórz pliki „string_length_server.py” i „string_length_client.py” w katalogu pakietu i zaimplementuj kod serwera i klienta. Szczegóły dotyczące pisania kodu serwera i klienta można znaleźć w dokumentacji ROS2.

Budowanie i testowanie usługi

Na koniec zbuduj i przetestuj swój pakiet, używając następujących poleceń:

„„
źródło /opt/ros/foxy/setup.bash
kompilacja colcon – pakiety-wybierz usługę długości_ciągu
źródłowy install/setup.bash
„„

Po pomyślnej kompilacji uruchom serwer i klienta, korzystając z dwóch oddzielnych terminali:

„„
ros2 uruchom usługę długości_ciągu_serwer_długości_ciągu
„„

„„
ros2 uruchom usługę string_length_string_length_client
„„

W tym przewodniku przedstawiono szczegółowe wyjaśnienie dodawania plików usług w setup.py dla pakietów ROS2, poruszając jednocześnie powiązane tematy, takie jak rclpy i std_srvs. Wykonując poniższe kroki, możesz tworzyć i dystrybuować usługi ROS2 w wydajny i zorganizowany sposób, ułatwiając interakcje w aplikacjach robotycznych. Powodzenia i przyjemnego kodowania!

Powiązane posty:

Zostaw komentarz