# Title Team Members TA Documents Sponsor
5 Display for ODEs
Kejia Hu
Qianhe Ye
Qirong Xia
Zhuohao Li
Pavel Loskot
- Qirong Xia (qirongx2)
- Kejia Hu (kejiahu2)
- Qianhe Ye (qianhey2)
- Zhuohao Li (zhuohao5)

Many physical systems involve interactions between multiple variables that can be difficult to conceptualize in a 2D space. Visualizing these solutions in 3D allows a more intuitive understanding of the behavior over time or across different conditions. Additionally, for problems involving spatial dimensions, a 3D visualization can illustrate how variables change not just over time but also across different points in space.

Our project aims to create a 3D real-time visualization of a time-varying 2D Ordinary Differential Equation (ODE) function. This visualization platform will dynamically represent the changing behavior of the function over time. Additionally, we will project the color to the surface from either the top or below, adding another dimension of visual interpretation. Our design has three subsystems and one optional subsystem. The **User Interface module** will get the ODE from the user calculate the solution for it and transmit the data to the Dynamic Stick Control module. This subsystem will get the ODE solution from the User Interface Module and then convert the information to languages that the mechanical devices can understand. Our **Mechanical module** adjusts the height of the stick based on the signal transmitted from the Dynamic Stick Control module. Additionally, this module will use a **Lycra fabric** to cover the top of the grid-like sticks to create a smooth visualization surface for displaying the ODE. Finally, if the time is available, we will design a Surface Coloring and Projection Module which will project images to the canvas either from the top or below.


The User Interface (UI) module serves as the interface between the user and the ODE visualization system. It receives input ODE equations from the user, calculates the solution for them, and transmits the data to the Dynamic Stick Control module for visualization. To realize this function, firstly, we need a Graphical User Interface (GUI) which contains components such as text input fields, buttons, sliders, and dropdown menus for user interaction, allowing users to input ODE equations through a graphical interface. Secondly, once the user inputs the ODE equations, the module utilizes an ODE solver algorithm to compute the solution. This may involve numerical integration techniques such as Euler's method, Runge-Kutta method, or other numerical approaches depending on the complexity and accuracy requirements of the ODE. Thirdly, after computing the solution, the UI module transmits the data, including the time-varying solutions of the ODE variables, to the Dynamic Stick Control module for visualization. The transmission occurs through a wired communication interface. Lastly, the UI module will provide feedback to the user regarding the status of the computation, such as progress indicators or error messages in case of invalid input or computation failures.

The control subsystem first interprets the solution of ODE from the User Interface subsystem. Then the system translates the solutions of the ODE into control commands that can be executed by the mechanical subsystem. This involves mapping the mathematical solutions to physical actions, such as the movement of the sticks. Besides this, the control subsystem also gets feedback from the mechanical subsystem, comparing the actual outcomes with the desired outcomes, and tuning the outputs accordingly. To implement the control logic, we plan to use the Arduino development board or an low-power Intel FPGA (DE10-Lite).

The mechanical subsystem is composed of sticks that can dynamically move up and down based on the displayed solution. Lycra fabric is affixed to the top of each stick to make the visualization smooth. The mechanical subsystem gets inputs from the control subsystem, performing the actions as dictated by the control commands, and feedback to the control subsystem for further tuning. The system maintains the precision and accuracy of the motions by following the control commands from the control system as closely as possible. It should also be robust and minimize the small vibrations and noise from the environment.

The coloring and projection subsystem is on the top of the device. It continuously measures the height of each stick in real-time, which can be achieved by incorporating ultrasonic sensors in the subsystem to sense the distance. To achieve accurate and rapid coloring, the subsystem also needs to prevent noise from affecting the sensor's operation. The data collected from the sensors is processed to identify the status of the mechanical system. Given the processed sensing data, the subsystem employs a logic to assign colors based on the height of the sticks. For example, the highest sticks could be assigned to the color red, while the saddle points are assigned to the color blue. As the height of the sticks changes, the subsystem must dynamically adjust the projections in real time to reflect these changes. We plan to implement this feature if time is available since it requires an independent control system to implement the logic.

# Criterion for Success

The success of our project will be determined by the following high-level goals:

1. **Functional User Interface (UI) Subsystem**: The UI should be intuitive and user-friendly, allowing users to input ODE equations easily and see the status of computations. It should effectively communicate with the Dynamic Stick Control subsystem to transmit ODE solutions accurately and efficiently.

2. **Accurate Dynamic-Stick Control Subsystem**: This subsystem needs to accurately interpret and translate ODE solutions into precise mechanical movements. The control system, whether using an Arduino or FPGA, should provide reliable and real-time response to the computations received from the UI.

3. **Robust Mechanical Subsystem**: The mechanical setup, involving the dynamic sticks and Lycra fabric, must respond accurately to the control signals. It should be sturdy, minimize vibrations and noise, and accurately reflect the ODE solutions in a 3D format.

4. **Overall Integration and Performance**: All subsystems must work harmoniously to create a seamless and real-time 3D visualization of the ODE solutions. The system should be stable, efficient, and provide a clear and accurate representation of the ODE dynamics.

# Distribution of Work

The work distribution among team members is planned as follows, considering their majors and skills:

- **Qirong Xia (qirongx2)**:As an electrical engineering student, Qirong will lead the electrical design and, if time allows, lead the development of the Surface Coloring and Projection subsystem, focusing on sensor integration and real-time color projection.
- **Kejia Hu (kejiahu2)**: With expertise in electrical engineering, Kejia will be responsible for the Dynamic-Stick Control subsystem, including programming the Arduino or FPGA for accurate control and feedback mechanisms.
- **Qianhe Ye (qianhey2)**: As a mechanical engineering student, Qianhe will lead the design and construction of the Mechanical subsystem, ensuring the precision and robustness of the stick movements and fabric setup.
- **Zhuohao Li (zhuohao5)**: With a background in computer engineering, Zhuohao will focus on developing the User Interface subsystem, including the GUI design and integration with the ODE solver algorithm.

The project's complexity is justified by the diverse skills of the team members. The combination of expertise in computer, electrical, and mechanical engineering is essential for tackling the various challenges presented by this interdisciplinary project. Each member's skill set is aligned with their respective subsystem, ensuring a well-rounded approach to achieving the project's goals.

Assistive Chessboard

Featured Project

Problem: It can be difficult for a new player to learn chess, especially if they have no one to play with. They would have to resort to online guides which can be distracting when playing with a real board. If they have no one to play with, they would again have to resort to online games which just don't have the same feel as real boards.

Proposal: We plan to create an assistive chess board. The board will have the following features:

-The board will be able to suggest a move by lighting up the square of the move-to space and square under the piece to move.

-The board will light up valid moves when a piece is picked up and flash the placed square if it is invalid.

-We will include a chess clock for timed play with stop buttons for players to signal the end of their turn.

-The player(s) will be able to select different standard time set-ups and preferences for the help displayed by the board.

Implementation Details: The board lights will be an RGB LED under each square of the board. Each chess piece will have a magnetic base which can be detected by a magnetic field sensor under each square. Each piece will have a different strength magnet inside it to ID which piece is what (ie. 6 different magnet sizes for the 6 different types of pieces). Black and white pieces will be distinguished by the polarity of the magnets. The strength and polarity will be read by the same magnetic field sensor under each square. The lights will have different colors for the different piece that it is representing as well as for different signals (ie. An invalid move will flash red).

The chess clock will consist of a 7-segment display in the form of (h:mm:ss) and there will be 2 stop buttons, one for each side, to signal when a player’s turn is over. A third button will be featured near the clock to act as a reset button. The combination of the two stop switches and reset button will be used to select the time mode for the clock. Each side of the board will also have a two toggle-able buttons or switches to control whether move help or suggested moves should be enabled on that side of the board. The state of the decision will be shown by a lit or unlit LED light near the relevant switch.