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