-
Notifications
You must be signed in to change notification settings - Fork 1
Laboratorium pierwsze
jkaniuka edited this page Mar 20, 2021
·
8 revisions
Stworzenie programu do sterowania żółwiem. Program powinien zapewnić sterowanie za pomocą innych klawiszy niż oryginalnie w przewodniku, np.: g d p l. Klawisze, którymi się steruje, powinny być wczytywane jako parametry węzłów.
Wybrany język programowania: Python 🐍
Nazwa pakietu ROS2: turtle_keyboard
Plik główny programu: new_keys.py
- korzysta zarówno z bibliotek ROS2 w celu umożliwienia tworzenia węzłów/zadawania prędkości/wczytywania parametrów oraz z bibliotek języka Python - niezbędnych do wczytywania naciśnięć klawiszy sterujących ruchem żółwia 🐢
- funkcja getKey() odpowiada za obsługę naciśnięcia klawisza sterującego, zwraca wciśnięty na klawiaturze znak w formacie string
-
- w konstruktorze tworzony jest węzeł my_publisher_node
- wspomniany węzeł publikuje wiadomość typu Twist na temacie /turtle1/cmd_vel
- wewnątrz klasy zaimplementowano także timer zapewniający publikowanie wiadomości co okres timer_period ⏲️
- zawiera definicje oraz opisy parametrów (typ string):
- ⬆️ "up" <- klawisz do jazdy na wprost,
- ⬇️ "down" <- klawisz do jazdy w tył,
- ⬅️ "left" <- klawisz do jazdy w lewo,
- ➡️ "right" <- klawisz do jazdy w prawo,
- metoda turtle_movement()
- pobiera wartości parametrów z węzła my_publisher_node
- publikuje wiadomość w formacie Twist() zadając prędkość liniową/kątową w zależności od sterowania
- odpowiada za jednoczesne uruchomienie dwóch węzłów : my_publisher_node oraz turtlesim_node
- zbudowanie pakietu w katalogu roboczym: colcon build --packages-select turtle_keyboard
- w nowym oknie terminala (będąc w katalogu roboczym) należy wskazać źródło plików . install/setup.bash
- uruchomienie roslaunch ros2 launch turtle_keyboard turtle_keyboard_launch.py
Zmiana parametrów możliwa jest na dwa sposoby:
- Z linii komendy ros2 param set /my_publisher_node
<parametr>
<wartość>
( Komenda ros2 param describe /my_publisher_node<parametr>
wyświetli opis parametru ) - Bezpośrednio w pliku roslaunch
Poniżej znajduje się schemat komunikacji (rqt_graph).
Węzeł my_publisher_node publikuje informację (wciśnięcia klawiszy) na temacie /turtle1/cmd_vel. Węzeł /turtlesim subskrybuje ten temat i otrzymuje informacje.