Skip to content

roboime/Phoenixpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Phoenixpp

Phoenixpp is the RoboIME's SSL Robot soccer software. It is a multithreading application built in C++ and developed with CLion IDE.

The application provides a protobuf client for SSL_Vision and SSL_Referee applications and implements the RoboIME's AI software with the goal of competing on Robocup's Small Size League robot soccer. It also provides support for grSim simulator.

Description

The project is divided into the following modules:

  • Core: Implements an Agent base class that is inherited by the other modules. Each agent is responsible for performing some specific task and then share their updated data with other agents. The AgentController class is responsible for managing the agents execution in concurrent threads. It will also choose each Agent implementation dynamically based on the strategy pattern.
  • Qt: Implements a Qt GUI for the project.
  • Factories: Implement factories that will instantiate the agents based on the strategy pattern. See factory pattern.
  • Messaging: Is responsible for the communication between the agents. It is based on the observer pattern. Each Agent will have a Publisher instance that will distribute the Message with the update. As the Listener have to deal with different kind of Messages, it will accept the visitor implementation of the corresponding Message. See visitor pattern. This way, every Agent will have a Listener for each Message it wants to have updates from.
  • IO: Implements classes for receiving and sending Serial and Udp data.
  • Vision: The vision is responsible for decoding the protobuf messages from camera and filtering the data with Kalman.
  • Referee: Similarly to the vision, it will decode protobuf messages from the referee or produce manual commands.
  • Feedback: Decode information sent by the robots such as battery level, wheel velocity, spinner sensor, etc.
  • AI: Responsible for the decision-making of the robots. It will receive the filtered data from the Vision, commands Referee and Feedback from robots, send commands to the robots.
  • PathPlanning:
  • Navigation:
  • Communicator:

Install dependencies

We are using QT installed from the official website, install the latest 6.x version with the QT installer along with the recommended dependencies in the default path. If you are using Windows QT will be installed on "C:/Qt/...", you'll need to write these lines to the CMakeLists.txt file or change if they are already in there:

set(QT6_DIR "C:/Qt/6.7.2/mingw_64/lib/cmake/Qt6")
set(CMAKE_PREFIX_PATH "C:/Qt/6.7.2/mingw_64" ${CMAKE_PREFIX_PATH})

These two lines are set in my computer for the version 6.7.2, if you installed other version change it accordingly.

If you are using CLion on windows, you can easily install the dependencies with Vcpkg. If you are having problems instaling packages via the vcpkg plugin on Clion try installing them directly via terminal, for that you'll need to find where your vcpkg is installed, open a terminal in that folder and run the command to install the package. Example: .\vcpkg.exe install qtbase.

Before installing each dependency make sure to select the triplet x64-mingw-dynamic, here are the dependencies that'll need to install:

You'll need to configure CMake to run using the x64-mingw-dynamic, to do that go to the cmake tab, click in settings, change the VCPKG_TARGET_TRIPLET to x64-mingw-dynamic.

Also install the plantUml plugin on CLion to visualize the UML diagrams.

To use Clion you need a student license as well.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •