Skip to content

Laboratorium pierwsze

jkaniuka edited this page Mar 20, 2021 · 8 revisions

Cel laboratorium 🤖 :

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 🐍

Opis plików źródłowych 📃 :

Nazwa pakietu ROS2: turtle_keyboard
Plik główny programu: new_keys.py

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
  • klasa MyPublisher(Node)

    • 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

Plik turtle_keyboard_launch.py

  • odpowiada za jednoczesne uruchomienie dwóch węzłów : my_publisher_node oraz turtlesim_node

Instrukcja uruchomienia 🚀 :

  1. zbudowanie pakietu w katalogu roboczym: colcon build --packages-select turtle_keyboard
  2. w nowym oknie terminala (będąc w katalogu roboczym) należy wskazać źródło plików . install/setup.bash
  3. uruchomienie roslaunch ros2 launch turtle_keyboard turtle_keyboard_launch.py

Zmiana parametrów możliwa jest na dwa sposoby:

  1. Z linii komendy ros2 param set /my_publisher_node <parametr> <wartość>
    ( Komenda ros2 param describe /my_publisher_node <parametr> wyświetli opis parametru )
  2. Bezpośrednio w pliku roslaunch

Schemat i opis struktury systemu wraz z użytymi mechanizmami komunikacji:

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.