RowTracker

The RowTracker is a device to collect data from the movements of an oar and return it via Bluetooth for stroke analysis on a mobile device. This device is meant to aid rowing coaches in a way that is cheaper and less intrusive than other rowing solutions that work by measuring the forces at the oarlocks. Timing is extremely important in rowing, so we created a device that can help a coach determine if the rowers are in sync.

RowTracker device attached to an oar

Two main subsystems that work together to provider accurate stroke feedback: the inertial measurement system and the iPhone application. The inertial measurement system was written in C, while the iPhone application was written in Swift.

Inertial Measurement System

This subsystem consisted of the Hillcrest BNO080 inertial measurement system (IMU) and the TI CC2640R2F Bluetooth low energy (BLE) microcontroller. The IMU collects accelerometer and gyroscope data in x, y, and z before sending it over I2C to the BLE microcontroller. The microcontroller – which uses a RTOS – operates a state machine based on the data received from the IMU. The state machine determines whether the oars are squared (perpendicular to the water) or feathered (parallel to the water) and whether a catch has occurred.

Graph of accelerometer data from a stroke

If a catch has occurred, the microcontroller will set a binary Bluetooth GATT characteristic that will notify the iPhone app that the state has changed.

This portion of the project went through two separate prototyping phases before the final version of the board was created. In the first stage, a breakout version of the IMU was used with Arduino to collect data to use as a baseline for the state machine. Once we verified that analysis of the data could determine when different parts of the stroke occurred, we moved on to make sure we could communicate with the IMU from the BLE microcontroller. To accomplish this, the second stage of prototyping used the CC2640R2 Launchpad board instead of the Arduino.

After verifying that the two main functions of the board – communication between the IMU and microcontroller and analysis of incoming inertial data – could be accomplished, the two chips were combined into a single board as shown in the schematic below. The schematic also shows other components related to the ability to the ability to charge and program the board (JTAG).

Schematic of board combining IMU and BLE microcontroller

iPhone Application

The application continually looks at the catch characteristic (binary Bluetooth GATT as mentioned above) for multiple paired RowTracker devices using Apple’s Core Bluetooth library. One of the devices is designated as the lead (the “stroke” seat in the boat) and the other devices are flagged as early or late in relation to this device based on a threshold of 50ms.

Diagram of iPhone application

This application serves as the user interface for the system. Once opened, the application begins searching for peripheral devices that are advertising the UUID associated with all RowTracker devices. The first device that the user adds becomes the stroke seat device that will determine the timing for the rest of the devices.

Two modes are provided: single read and continuous read. In single read mode, the user can grab a snapshot of the available data to obtain the latest value of the catch characteristic for each device. This mode is helpful for when the coach clearly sees a rower begin the stroke early. In continuous read mode, the program will cycle through the available devices, beginning with the stroke oar. This allows the coach to monitor the state of all rowers and call out when an individual is early or late.