Yuxuan’s Weekly Status Report for 02/25/2023

This week I’m mostly looking into the details of how the program on the PC side can simultaneously handle data from the Pi client via Bluetooth and interact with the game. I’ve thought about using multithreading as I read into the tutorial, but I realized that multithreading is unnecessary since we only have one client and one server, so only a single connection is needed. A feasible way of implementing the program is by binding a socket to a port where the program can read game data. In addition, another socket will be created and bind another port for Bluetooth communication. Then, all the communication and actions can be done in a while loop. The initial file structure is created and some skeleton codes on the PC side are pushed to this repository on GitHub.
One block I realize is that the PYXinput Xbox emulator is used for windows only but I’m using a Mac for development. Also, only a powerful game laptop can power the BeamNG game for further testing. Therefore, I need to look for a way to borrow a game laptop next week.

The progress is mostly on schedule. The priority for next week is obtaining a gaming laptop. Both of my teammates use Windows and are pro gamers so I will ask them about this issue. Meanwhile, I’m planning to implement the program mentioned above on the PC side.

To fill in the gap for team members, I can talk with Xiao about the exact functionalities of the buttons and hardware so we can have a better understanding of what signals will be read and interpreted by the program. I can also talk with Qiaoan and assist him with tuning the gyro sensor by writing program that reads the outputs.

 

Team Status Report for 02/25/2023

This week’s focus has been mainly getting the design review presentation done, and reflect on the feedback from faculty members.

We have made preliminary design choices based on use case requirements, as outlined in our presentation. However, it was after receiving the feedback from faculty members, that we realized we’ve ignored a  very important step in the process. We directly based our design choices on use case requirements, because they were already quantitative metrics we were able to use when designing. However, it is very important to first translate these use case requirements to design requirements. It is a subtle difference, and in our case it probably wouldn’t have made an impact on our design choices, but nonetheless we should have done it as part of the product design process.

Our team is more or less on schedule. We have now passed another major milestone in the course, and with the spring break coming, time really is starting to look scarce. We originally planned to start ordering parts right after our design review presentation, but with the feedback we’ve gotten, we have decided to take some time and re-evaluate our choices. We’d like to document about each component as much as possible before the actual purchases are made, to be absolutely sure of the compatibility between components and the capability of them. Thus, we are going to meet next week, before the spring break, and finalize our component choices. Purchase orders are expected to go our before spring break.

Xiao’s Weekly Status Update 02/25/2023

This week I have been mainly focused on getting our  design choices right, and presenting for our design review.

During the searching for components for our design, I was amazed at the vast selection the Internet has to offer. Following advice from Professor Mukherjee, and after taking a closer look at some of the products, I realized that for a formal project, I cannot just go on Amazon and buy from the cheapest vendor. We need data sheets for the components. That’s what prompted me to eventually find all the electronic components on Adafruit. They have data sheets, and also some tutorials listed under every product we’ve chosen.

Preparing for the presentation was something I should have spent more time on. We kind of rushed through making the slides, leading to a couple of typos which I am not very proud of. The first time I actually went through all the slides and practiced was an hour before the presentation. Gladly, I think it went OK.

It is a fact, however, that we are still not that familiar with some of the quirks of the components we have chosen, but we are making progress. I think from this point on, us three as a team should most importantly be more proactive about deadlines. Sometimes I am busy because I am taking too many classes this semester, and I am glad my team mates could help out. However, in the end we are trying to avoid this sort of rushing before the deadline situation.

Qiaoan’s Status Report for 02/25/2023

This week:

  1. Working on the design of the steering wheel’s shell. I plan to make it in two parts: one is a container that hold all the components inside and has handles to let users use it, the other one is a cover that defines the position of buttons, joysticks and the screen. One small issue is that we still need to create pedals behind the steering wheel. I havn’t figured out how to install them on our product but I think some holes behind it should work. The picture below shows the base I planned to hold every components inside.

    It takes me some time to recap knowledge about Fusion360 to build 3D models. Then I generated the design above with around 280mm width, 200mm height, and 22mm depth. Those numbers can be changed easily in modern CAD software so it won’t take much time to modify them.
    The next step will be 3D printing to test the feasibility of the inital design sketch. It will take some time to print the design during the weekend and I will keep testing and revise the design.
  2. The team has decided to use Adafruit’s TDK InvenSense ICM-20948 9-DoF IMU (link: https://www.adafruit.com/product/4554). Using product from adafruit should be a reliable choice. I read its document and I think it’s feasible to implement our product based on it. If there is no feedback against this I think I will place order on this. While waiting the order to be shipped I will keep working on the 3D modeling.
  3. I reviewed the feedback from the design presentation and I realized some problems we have for the design and test procesures. I would like to answer them and discuss about solutions during meetings next week.
  4. For team work assignments change and team shortfalls, I think my knowledge background can help me deal with some work of two other members. I have CS minor so the software part of Yuxuan should not be a big challenge for me and as an ECE student my hardware knowledge should be enough to do some simple tasks of Xiao like wiring. If they get into problems I can help them with less difficult tasks to give them more time to focus on critical ones. For those critical tasks of my teammates that might go beyond my knowledge, I can discuss with them to see if my suggestion can be a hint to them. We havn’t decided to make big design changes yet so the team work assignments are not changed much, though we need to change something during testing and verification part but I think many of those tasks require us to work together to accodinate different parts.

Team Status Report for 02/18/2023

We focus on preparing for the design presentation this week. We plan to come up with a design draft by Monday’s presentation with the components we want to use and the connection between them. We also want to present a control flow graph to show the stages of our project when it’s running.

One of the risks we might face is that our division of work is highly dependent on each other. The software systems on Pi rely on the specific version of Raspberry Pi we are using. The control systems can only be tested thoroughly only after the PCB board is produced. To handle the risk, we plan to talk more about our design ideas with each other and address how different components interact with each other in the design presentation.

We are still trying to make an initial design for our design presentation, so currently, we haven’t suggested any major changes to our design ideas demonstrated in the proposal.

One engineering principle involved in our design is modularity. As we divide a challenging project into three subsections for three team members, we know which area we should focus on and learn about. For each subsection, we tend to divide that into sub-components so that we can propose a specific solution for this component. The modular design allows us to not worry so much about what others are doing during the initial development and testings.

Yuxuan’s Status Report for 02/18/2023

This week I’ve been designing software systems that allow Raspberry Pi and Windows PC to communicate game data. I’ve created a diagram as shown below showing how and what kind of data is flowed between different hardware and software as well as devices. 

The diagram uses blocks to identify major software components I need to implement in order to achieve communication between two devices. For each component, I identified certain libraries that can be used to accomplish the task in a document called Module Details in our shared folder on Google drive. It contains links to the library repo, discussions, and video demos.

I’m currently mostly on schedule as we are finalizing our designs this week.

Next week I’m planning to try implementing the process of retrieving data from the game using the Outgauge protocol as well as emulating the Xbox controller using the PYXInput library to establish a basic interaction with the game using codes.

The courses covered in this process are 18-213 and 18-349. Both involve creating software systems transmitting data from one device to the other via different protocols.

Qiaoan’s Status Report for 02/18/2023

  1. Prepare for the design presentation. Talk about the presentation detail and the design content we need  to show during the presentation, especially the content about the control flow of our project and how we can connect them together.
  2. Look into the possible ways to make the shell of our product. In last week’s report we have several designs we can download from the internet. Since the 3D printing part is not part of the ECE field, I’m thinking if we still need to create the 3D model on draft. However buttom layout and display screen may need us to come up with a customized frame.
  3. Keep searching gyroscope for design. Based on the previous conversation on Monday’s class, I think we need a better gyroscope for our project. I think https://www.amazon.com/%E3%80%90WT901C-232-Inclinometer%E3%80%91High-Stability-Acceleration-Sensor%E3%80%90Kalman-Filtering%E3%80%91/dp/B07YYTD9GR/ref=sr_1_5?crid=2UVVQ2ZH50JXH&keywords=easy+gyroscope+sensor&qid=1676779998&sprefix=easy+gyroscope+sensor%2Caps%2C72&sr=8-5 may satisfy our design spec. I will discuss this with my team when finishing the design.

Generally speaking, I think I have choices for my design, but I still need to talk with my team.

I think ECE courses that will cover my design is 18-290 Signal & Systems and 18-370 Fundamentals of Control. 18-794 Pattern Recognition may also help me recognize the accurate steering motions.

 

Xiao’s Weekly Status Update 02/18/2023

This week has been mostly focused on researching components we can use in our design. During the conversation with Professor Mukherjee and our TA Alex, it became very clear that we need to lay out every single detail we can think of in our design, and it will make our work much easier down the line.

I made some design choices:

  1. Buttons will be wired into a matrix, with diodes to achieve “N-key rollover”.
  2. Screen will be HDMI to avoid the use of GPIO pins. The smallest size HDMI screen for Pi from a good vendor is 5 inches. https://www.adafruit.com/product/2232
  3. Buttons will be an assortment of these in different colors. https://www.adafruit.com/product/1504
  4. Adafruit’s TDK InvenSense ICM-20948 9-DoF IMU is an ideal candidate for us. https://www.adafruit.com/product/4554
  5. https://www.adafruit.com/product/4133 This potentiometer is a good candidate for our analog inputs

Team Status Report for 02/11/2023

The most important risk now is not certain whether a task can be finished or not by each team member since everything is pretty abstract now. We are actively communicating ideas in our chat group and after each class, following the Gantt chart we created during the proposal.

After the proposal presentation, we realized certain things our team lacked. In our design, we agreed to include more details including diagrams and hardware specifications in our presentations. We also realized that our solution approach section in the presentation should be more related to how the entire system is structured rather than solutions to a few technical challenges. In the use case explanations, we realized that we focused too much on an engineer’s perspective rather than a real user’s perspective. In the next discussion on creating design presentations, we are going to modify our use case requirements.

We also need to figure out how those components we mentioned there will interact with each other, speficially, what kind of data should be transmitted from one part to another part, and what should each part act in different scenarios.  The team is discussing a flow chart to clarify this and we think we will present a flow chart for design presentation.

Since the team is still working on the initial design, we don’t have much update available. We believe our progress are on schedule and no update is needed.