Przejdź do treści

Rozproszone Systemy Sterowania: L5-L6

Wprowadzenie do ROS2

Zadanie (0-20 punktów, 2 tygodnie)

Cel

Utwórz system, w którym sygnał sinusoidalny jest generowany w jednym komponencie, a następnie jest skalowany w drugim komponencie. Utwórz wizualizację sygnałów.

Opis

Zaimplementuj dwa węzły ROS2, które komunikują się ze sobą za pomocą topików. Pierwszy węzeł jest generatorem, który generuje sygnał sinusoidalny i publikuje go do wybranego topiku (na przykład ‘/signal’).

Drugi węzeł powinien subskrybować wskazany topik i otrzymywać wiadomości z wartościami sygnału. Węzeł powinien również modyfikować sygnał, na przykład skalując go przez wybraną wartość i publikować do innego topicu, przykładowo ‘\modified_signal`.

Podczas ewaluacji, uruchom równocześnie narzędzia ROS2 (na przykład rqt_plot) do wizualizacji sygnału z wybranych topików.

Przykładowa struktura systemu

Uwagi

  • Generator powinien być parametryzowany parametrami umieszczonymi w pliku YAML (generator_params.yaml). Powinien on zawierać przyjajmniej częstosliwość i amplitudę sygnału.
  • Dodaj parametryzację drugiego węzła i umieść parametry w oddzielnym pliku YAML.
  • Rozważ użycie timera z rclpy (lub rclcpp dla C++) do publikacji wiadomości z odpowiednią częstotliwością.
  • Użyj właściwego formatu wiadomości, który może być łatwo wykorzystany z narzędziem rqt_plot.
  • Utwórz pakiet ROS2 i umieść w nim wszystkie pliki.
  • Utwórz launcher (Python based launcher), który będzie uruchamiał węzły i wczytywał odpowiednie parametry z plików. System powinien być uruchamiany pojedynczą komendą, jak poniżej
    ros2 launch package_name launcher_name
Zasoby: