Enrique’s Status Report for 11/15

Accomplishments

This week I primarily worked on fine tuning the speed control on the Kontroller and getting the Kar IMU (BNO005) to work for haptic motor data on the glove. Caitlyn and I completed a logarithmic mapping between the finger angle and PWM value. Fine tuning the parameters for this logarithmic relationship helped us eliminate the range of the speed “deadzone” (where the Kar is in the resting/brake position) and increase the range corresponding to PWM values that will result in significant acceleration of the Kar. Additionally, we were able to configure a new IMU for the Kar that communicates with the STM32 via I2C. This will be crucial for crash detection and sending haptic feedback to the Kontroller. Currently we are simply redirecting the gyro/acceleration values to UART. However, the next step would be to send a haptic vibration flag over BLE when high jerk (high change in acceleration over time) and gyro spikes are detected (which could likely indicate a crash).

Progress / Schedule

We’re on track for the most part. I was hoping to test the total latency of sending Kar motion commands over BLE this week but I was not able to. Early this week, I will be doing that using my camera’s slow motion feature and blinking an LED.

Next Steps / Deliverables

Besides measuring latency of commands, I will work with Caitlyn to wrap up the haptic feedback integration. I will also continue fine tuning angle to PWM conversion by experimenting with different parameters, and hopefully conduct some user tests to gauge the opinion of others’ on the user inferface.

Nick’s Status Report for 11/15

Accomplishments

This week I supported the interim demo by maintaining the Kar’s electronic systems and ensured that the Kar was properly setup for demo. This involved ensuring that the batteries were properly charged between demo sessions, and that the PCB was properly mounted to the Kar chassis. Additionally, after our demos I added an IMU to our Kar so that we can complete our haptic feedback loop between the Kar and the Kontroller.

Progress/Schedule

We are on schedule for the most part. I was hoping to attach the finger IMU sensor to the Kontroller this week, but was not able to. However, the lack of progress on this goal was cancelled out by successfully adding the Kar IMU.

Next Steps

Next week I will be attaching the finger IMU sensor to the glove PCB so that we can begin the transition from our breadboard control system to our final control system.

Enrique’s Status Report for 11/08

Accomplishments

This week, I worked on flashing and testing code on the Kontroller PCB to control the Kar with BLE. Additionally, I’ve been doing some fine tuning with the IMU code that Caitlyn wrote, and smoothing out transitions to/from dead zones. This is important to refine, given that we don’t expect full 360º rotations, but rather 90º-120º rotations for both the ICM and MPU located on different parts of the wearable device. Other than that, we were able to finally test driving the Kar on the ground, and evade obstacles by steering and varying acceleration.

Progress / Schedule

We are on track, and we have a working Kar PCB to demo for our interim demo. There’s also progress with the haptic motor, and we’ve been experimenting with different vibration modes. My biggest concern now is getting the backwards PWM motion working for the Kar. Because the servo steering provides a limited range of motion, backwards movement on the Kar would be necessary to have the user complete tracks or get past obstacles without external help. The Kar’s WP1625 ESC uses a FBR (Forwards/Brake/Reverse) mode, where 1000 µs – 1450 µs corresponds to backwards, roughly 1450 µs – 1550 µs corresponds to braking, and 1550 µs – 2000 µs corresponds to forwards, assuming a 50 Hz PWM signal. I’ll measure the PWM signal for backwards using an oscilloscope to make sure I’m generating the correct signal, and follow the troubleshooting steps for the WP1625 datasheet if I encounter further issues.

Next Steps / Deliverables

Next week, I will work on adding backwards motion to the Kar, and continue fine-tuning the roll, yaw, and pitch conversion to angles. If I have extra time, I’ll help with the haptic motor integration.

Caitlyn’s Status Report for 11/08

Accomplished

This week, I worked on prototyping the MPU6050 to ensure that we can still get yaw, pitch, and roll values for it over I2C. After prototyping this, Enrique integrated the MPU6050 with the current Glove Kontroller that already has the ESP32 communicating over SPI with the ICM20498.

I also worked on generating different types of feedback on the haptic motor controller over I2C. I experimented with different waveforms that were already implemented on the controller, and manually tried to generate my own waveforms. Some important waveforms we may look into for the mapping between Kar motion and haptic feedback include ramp up/down and strong buzz feedback.

Progress / Schedule

I am on track as I have finished prototyping my subsystems (IMU + haptic motor controller), and will be working with Enrique to integrate the haptic feedback and fine-tune Kar control.

Deliverables / Next Steps

Next week, I will:

  • implement the MPU6050 on the Kar and come up with a good mapping between the Kar IMU’s gyroscope values and haptic feedback.
  • fine-tune Kar control.

Team Status Report for 11/08

Progress
  • Kontroller PCB assembly completed
  • Kar PCB assembly completed
  • Kar + Kar PCB integration completed and drivable with a prototype Glove Kontroller that can transmit steering and speed.
  • Haptic motor controller prototyped and ready to be integrated with Kar.
Design Changes
  • The Glove Kontroller will have 2 IMUs and the Kar PCB will have 1 IMU. The rotation/steering control on the glove will be done using the MPU6050, since it can measure pretty reliable and non-drifty roll/pitch values. The Kar’s forward/backward speed will be controlled using the ICM20948 breakout since we have a SPI connection for it. The Kar PCB will use the MPU6050 as well, and we might not need absolute yaw as long as we can figure out a good way to map relative yaw or rotational velocity to haptic feedback.
Risks and risk Management
  • Even though stopping the Kar via BLE is very responsive, the Kar can still accelerate quite rapdily. We will consider doing some more testing with the Kar on the ground to clamp the PWM max/min values so users have better control over acceleration.
  • Right now the Kar could continue moving/steering, even if it receives invalid BLE data or no data at all. We will consider adding a watchdog timer to trigger a system reset to decrease amount of undefined behavior.

Nick’s Status Report for 11/08

Accomplishments

This week I completed soldering of the Kar PCB, and the Glove PCB. I also integrated the Kar PCB with the Kar itself, and worked with the team to perform our first test where the Kar moved on the ground under its own power. There were a couple of integration issues to sort out, such as the electronic speed controller for our primary motor backdriving our power system on the Kar, but otherwise integration was a relatively smooth process. An image of the Kar PCB integrated with the Kar can be seen below:

Progress/Schedule

Everything PCB-wise is going to schedule. We have a working Kar PCB prepared for our interim demo, and will be using the time we have from now until the final demo to refine our control systems and product in general.

Next Steps

Next week I will be working on supporting the interim demo, and keeping track of electrical faults as they come up. Additionally, I will need to attach the finger sensor to the glove PCB at some point in the week.

Caitlyn’s Status Report for 11/01

Accomplished

This week, I implemented the firmware for reading data measurements from the ICM20948 IMU sensor over SPI. At first, I measured only the gyroscope values and not the accelerometer and magnetometer. However, after integrating the angular velocity over time to find absolute heading, we noticed significant drift in the gyroscope. After some research, I decided to implement the Madgwick filter for a better estimate of yaw, pitch, and roll, since it does better against drift by combining data from the gyroscope, accelerometer, and magnetometer. However, after some testing, I realized it would be best to leave out the magnetometer, and base the estimate on just gyroscope and accelerometer data instead.

After getting a more consistent reading of yaw, pitch, and roll, Enrique and I worked together to map roll to servo angle PWM, and integrated the IMU firmware with his bluetooth code to send servo PWM high-times to the STM32. The result was being able to control the servo on the Kar by the rolling angle of the IMU.

Progress / Schedule

I am back on track as Enrique and I have started working together to integrate our individual subsystems on the Kar. Our plan is to finish prototyping the MVP so we can migrate the firmware to the final hardware PCBs and begin testing.

Deliverables / Next Steps

Next week, I will:

  • currently we plan on doing very simple linear mapping between IMU roll and pitch and Kar steering and drive, however we will need to look into a more optimal and realistic mapping.
  • continue communicating with the haptic controller over I2C and generating different types of feedback.

Team Status Report for 11/01

Progress
  • The Kontroller/Glove PCB is 95% completed.
  • Successfully enabled and set the speed of the motors on the Kar through the STM32, both by hardcoding the speed in the program and through keyboard input over bluetooth from the ESP32.
  • Read ICM20948 IMU gyroscope and accelerometer measurements and converted to yaw, pitch, and roll, which was integrated with bluetooth to send servo PWM signal to the Kar.
  • Successfully controlled the servo on the Kar through the STM32 and by bluetooth, transmitting the IMU roll linearly mapped to PWM.
Risks and Risk Management
  • We can get pretty reliable and consistent roll and pitch values that are not too susceptible to drift on the ICM20948 IMU. However, we noticed that yaw has about a degree of drift every 5 seconds or so. While this does not pose a risk for the Kontroller, it could pose a risk for the IMU on the Kar which may require yaw when determining haptic feedback.

Enrique’s Status Report for 11/01

Accomplishments

This week, I was able to implement and test the majority of the car movements for our final demo (forwards with varying increasing/decreasing speeds via keyboard inputs, and full 180º motion on the IMU for steering). Most of my time was spent understanding PWM signals for standard RC ESCs. Since our STM32 produces a 32 MHz HSE clock signal, I used a prescaler value of 32 and a period of 20,000 to obtain a 50 Hz (20 ms period) PWM rate. Additionally, standard RC ESCs operate with a 1-2 ms HIGH every 20 ms, so we start with 1.5 ms for both the motor and servo control signals to start the car at a neutral position (this is also what our reset state will change to). Additionally, I used Caitlyn’s IMU code and linearly interpolated her IMU roll data between 1-2 ms to create a smooth mapping for the servo steering.

Kar responding to keyboard steering input
Progress / Schedule

I’m on track with the schedule. I’ve been having some difficulty getting the wheels to spin backwards. I believe there’s a sequence of PWM signals that need to be sent to get the Kar moving backwards. However, the WP1625 brushed motor user guide is quite short and I can’t seem to find much information online about the sequence. I will continue working on that this week, and work with Caitlyn to map other IMU motions between the Kontroller and Kar in parallel. Other than that, I’m feeling confident about our upcoming demo, given that we’re already seeing smooth Kar motion in action.

Next Steps / Deliverables
  • Get backwards motions working for the Kar’s wheels.
  • Fine-tune the steering for the Kar and integrate a PID control loop for speed stabilization.
  • Implement haptic motor feedback for the Kontroller.

Nick’s Status Report for 11/1

Accomplishments

This week I practically completely finished assembly of the glove PCB. The only components which are missing are the haptic motor driver, which still needs to be acquired from Ideate; the LDO output capacitor, which ran out of stock on Digikey and will likely be acquired from Roboclub; and the LDO itself, as we identified a manufacturing issue that ensures we need to do extra work in order to attach the LDO to the PCB. A picture of the PCB soldering progress can be seen below. We also realized this week that due to an ordering error, we did not order all of the components needed for our Kar PCB, so these extra components have been ordered.

Progress/Schedule

PCB assembly is going according to schedule. The Kar PCB missing components would have led to a setback if it had been noticed later, but it was noticed promptly at the beginning of last week which means we will be able to smoothly transition between assembly of the glove PCB and assembly of the Kar PCB.

Next Steps

I will finish the assembly of the glove PCB tomorrow (11/1), and assuming the Kar PCB components arrive on Monday I will begin and complete the Kar PCB assembly leading up to the interim demo.