1. GameRules
2. Program structure and goals
3. Features and Progress
- Game analyze: More on engineering notebook
- Official site: *https://www.vexrobotics.com/vexedr/competition/vrc-current-game*
- Language: C++
- Develop Platform: PROS
- Version Control: git
- Install visual studio code
- Install C/C++ Support
- Install PROS CLI (PROS command-line-interface)
- Robot
- RobotAuto
- MoveDistance(): call the robot to move a specific distance
- Turn(): call the robot to turn a specific angle
- vector2d
- AutonPos_t
PROS develop steps:
The project structure is like the following:
|-> include
|-> Config.h: Containing constants used throughout the whole program
|-> Robot.h : Containing instance for sensors, motors, etc.
|-> RobotAuto.h : Containing the RobotAuto class, which is a class that provide more features using the foundation of Robot.h
|-> vector2d.h : Containing the class of vector2d
|-> typedefs.h : All typedefs that will be used throughout the program (including vector2d)
|-> Debug.h : Header that provide extensive feature for debugging output (output can be viewed using the terminal)
|-> gui.h : Containing function headers that do stuff related to the gui on V5 (using LVGL)
|-> Robot.h : Containing instance for sensors, motors, etc.
|-> RobotAuto.h : Containing the RobotAuto class, which is a class that provide more features using the foundation of Robot.h
|-> vector2d.h : Containing the class of vector2d
|-> typedefs.h : All typedefs that will be used throughout the program (including vector2d)
|-> Debug.h : Header that provide extensive feature for debugging output (output can be viewed using the terminal)
|-> gui.h : Containing function headers that do stuff related to the gui on V5 (using LVGL)
|-> src
|-> initilize.cpp : Containing code that would be executed before Autonomous
|-> autonomous.cpp : Containing code for Autonomous
|-> opcontrol.cpp : Containing code for Driver-Control Period
|-> RobotAuto.cpp : Containing function implementations of class RobotAuto
|-> Debug.cpp : Containing function implementations for Debug.h
|-> gui.cpp : Containing code that will produce the gui on V5
|-> autonomous.cpp : Containing code for Autonomous
|-> opcontrol.cpp : Containing code for Driver-Control Period
|-> RobotAuto.cpp : Containing function implementations of class RobotAuto
|-> Debug.cpp : Containing function implementations for Debug.h
|-> gui.cpp : Containing code that will produce the gui on V5
Use Object-Oriented-Programming
Here are the classes we plan to use:
Some structures and objects are used in the program:
containing all motors and sensors on the robot (excluding the instance of the joystick)
Might contain some function for specific job like moving claws
Might contain some function for specific job like moving claws
inherit from the Robot class
More functions for autonomous movement like:
More functions for autonomous movement like:
Some structures and objects are used in the program:
A class that can store a 2D Vector, it stores the x, y value of that vector.
A enum type that stores the desire autonomous starting position of the robot.
Operator Control's code is now fully operating, with all desire features enabled. The following features are included:
- Free Movement
- Side Sliding Movement
- Intake Control
- Intake-Lifter Control
- Lifter Control
Hot/Cold Linking, a feature provided by PROS, is enabled, so library code is compiled into cold code, user code is compiled into hot code.
Each time, the robot will detect the library's status on the robot, and if the library is fine, it will only upload hot code.
Thus, upload time(especially wireless), will be shorten significantly. For more info, go to https://pros.cs.purdue.edu/v5/tutorials/topical/wireless-upload.html