Read more

Projects

Gravity Project

The Three-Body Problem project, conducted as part of the Management and Support Tools course, utilizes an Excel document to simulate celestial mechanics involving three interacting bodies. This academic project employs Newtonian physics equations to calculate the trajectories and interactions among these bodies, visually represented through dynamic Excel charts, including an animated sequence. It highlights the application of theoretical physics and the practical use of advanced Excel features, such as graphics and VBA scripting for animation. This project encourages us to develop our skills in solving technical and creative problems, while incorporating a personal and innovative touch through a unique feature designed by each student. For my part, the addition of a direction-changing mechanism constitutes my personal contribution.


Robot

As part of our Connected Devices project in computer science, my teammates, Edouard Blain-Noel, François Maltais, and I developed advanced software to control a GoPiGo3 robot using Python. This project allowed us to implement a modular and flexible software infrastructure while integrating several advanced programming techniques. ► We designed an abstract class for the robot, ensuring its integrity and implementing controls for internal components like servos, the rangefinder, and the LED lights (EyeBlinkers). ► The core of our project is built around a robust Finite State Machine (FSM), which we used to coordinate the robot's different tasks and behaviors. This FSM enabled smooth state transitions and effective management of concurrent actions while maintaining a structured and non-blocking execution flow. ► We also implemented several specific tasks to control the robot, such as: Task 1: Manual Control – Allows the user to directly control the robot's movements using the remote control, with visual indicators blinking to signal actions. Task 2: Sensor-Assisted Control – While the robot is manually controlled by the user, it automatically stops in front of obstacles to prevent collisions, thanks to the rangefinder. Task 3: Calibration – Used to adjust and test the rangefinder servo's position for optimal precision during movement. Design Patterns Used: Finite State Machine (FSM): Utilized throughout the project to structure transitions and states for tasks, C64Projet, and the blinkers. Factory: Handles the creation of open/closed states for the blinkers. Strategy: The ConditionalTransition object manages transitions without needing to know the exact implementation of each condition. Façade: The Robot class encapsulates the robot and its peripherals to simplify interactions. Observer: Manages the dispatch of actions based on events (in_state, entering, exiting...). Bridge: Controls components (like EasyGoPiGo.Servo) through a simplified and abstracted interface.


Contact Me