During the implementation of these basic projects, I gained essential experience and good coding practices. In addition to the code itself, I became familiar with numerous useful command-line tools for managing ROS2 projects, as well as for editing, debugging, and controlling running programs (ROS2 tools). I also used these tools to explore existing software, which will undoubtedly be valuable when working on pre-existing code, integration, or adding new functionalities to a smoothly running system.
- Turtle_killer - The most complex completed project in ROS2.
- Roulette_with_parameters
Battery control simulation. One Node ('battery') simulates a physical battery along with basic software. The second Node ('led_panel') serves as an informational panel module displaying the battery status.
Utilized Features:
- Packages,
- Nodes,
- Custom Topics
- Publisher and Subscriber,
- Callbacks,
- Custom Services,
- Custom Interfaces
- Threads,
- Parameters,
"Custom" means personally designed
Node 'battery' simulates the discharging and charging of a battery. When the battery level reaches critical values, requests are sent to the server ('led_panel') to change the status of LED indicators. Requests are only sent when the critical level is crossed, and each request is sent in a separate thread.
Node 'led_panel' changes the state of LED indicators when it receives a request from the client ('battery'). Additionally, 'led_panel' publishes the current state of the LED indicators on the 'led_panel_state' topic. The node also has one parameter available: an array of initial LED states.
- Adding a parameter in 'battery' responsible for the discharge and charge rate of the battery.
Nodes pisane podczas poznawania kolejnych zagadnień z tematyki ROS2. Zarówno w Pythonie jak i Cpp. Większość samodzielnych zagadnień pisałem w Cpp, gdyż jest niżej poziomowym językiem. Dodatkowo, łatwiej jest zrozumieć co się dzieje, w momencie gdy wszystkie bebechy są na wierzchu. W opisie skupie się na Cpp. Jest tutaj kilka mini projektów.
Utilized Features:
- Packages,
- Nodes,
- Custom Topics
- Publisher and Subscriber,
- Callbacks,
- Custom Services,
- Custom Interfaces,
- Threads,
W folderze "cpp" znajduje się zdecydowanie więcej niż w "py". robot_news_station razem z smartphone tworzą miniprojekt opierający się na użyciu Topics w celu przesyłu "podstawowej" wiadomości. Zostały później wykorzystane w "robots_spam". "hw_status_publisher" - posłóżył jako test dla custom Interfaces, publikując informacje na temat symulowanego hardweru. Tutaj stworzyłem własny interfejs razem z wykorzystaniem go w praktyce. "add_two_ints" - Za pośrednictwem tych plików zapoznałem się z zagadnieniem Services w ROS2, za pomocą gotowego interfejsu srv, obsłużyłem server jak i klienta bez OOP jak i z OOP. Zdobyłem wiedzę na temat "obsługi" zapytań jak i zarządzania nimi. Wykorzystałem również "wątki" oraz obiekty "future".
The first project written in Python, familiarizing oneself with basic ROS2 concepts, creating Nodes, topics, turtlesim, and experimenting with basic turtle movement. Nodes were created while watching tutorials, browsing guides, websites, and through independent experimentation. Nothing impressive.
Utilized Features:
- Basic Concepts of ROS2
- Follow
- Rullete