Blog

  • Motorcycle Telemetry Unit

    One of the projects I am now working on: a motorcycle telemetry unit

    An example motorcycle telemetry unit, developed by AimTechnologies.

    View Git Repo

    Context

    I ride a 2007 Yamaha YZF-R6, a 599cc supersport motorcycle that is ~20 years old. This motorcycle was designed and produced before Anti-Brakelock System (ABS), Traction Control (TC), and Lean Angle sensors. For track usage, which I intend on using this bike for, it is helpful (mostly fun, but also helpful…) to have recorded information about the lean angle and G-forces of the motorcycle throughout the course. For example, a modern superbike like the Honda CBR1000RR-R Fireblade has this system built into its onboard computer. My 20 year old sportbike does not. To remedy this, I am making my own.

    All information about this project, including software, 3D models, and circuit diagrams, will be open-sourced for people to build their own!

    Problem Statement

    I want to be able to track and monitor my motorcycle’s lean angle and experienced G-forces, both live and through my computer after the ride.

    Project System Specifications

    A motorcycle telemetry unit that:

    • Shows the data live through a screen
    • Does not rely on battery life
    • Accurately measures G-force and lean angle
    • Saves the data in a way that a computer can process and visualize

    Hardware to Accomplish This

    Inertial Measurement Unit (IMU): The IMU measures the G-force and lean angle via an accelerometer and a G-force sensor, and produces a digital output. The product I chose for this project is the Arduino Nano 33 BLE v2. This nano microcontroller has a 9-axis IMU built in, and can do basic mathematical calculations to convert the digital output of the sensors into human-readable/relevant data (such as a lean angle from a digital sensor range of 0-255). The main reason I chose this microcontroller is because I already had one laying around for another project, and wanted to conserve my budget for this project. A more robust approach would use a standalone IMU sensor that is lightweight, and do all the math on the main microcontroller.

    Display: The display is an LCD screen that displays the live data from the IMU/Arduino Nano, and produces a visualization that can be easily/quickly interpreted by the rider. The screen I chose for this is the Waveshare ESP32-S3 2.8inch touch-screen. The ESP32-S3 is a System-on-Chip (SoC, basically a micro-computer) that is (hopefully) capable of producing the visualization/animation I want to create with the data, such as a G-force “circle” (G-G diagram). I chose this because:

    1. The LCD should perform well under direct-sunlight conditions
    2. The ESP32-S3 should be powerful enough to handle basic animations
    3. It is easily connectable to the Arduino Nano

    An example G-G diagram. A dot would appear in a cartesian format, based on the forward/backward acceleration and left/right acceleration. Source


    Other Relevant Hardware:

    1. 9-36v to 5v buck converter: Needed to turn the 12ish volts coming from the battery/bike charging system into a stable 5v to safely power the Arduino and ESP32 modules
    2. 1A fuses: To safely power the electronics in case of a current surge

    My Progress

    So far, I have tested the IMU on the Arduino Nano and am in the process of turning it into more human-readable information. In the coming week, I will receive and test the ESP32 screen module and start testing visualization strategies.

    View Git Repo

    The Future of this Project

    In the future, I want to incorporate a GPS module in order to:

    • Track 1/4 mile, 1/2 mile, etc times
    • 0-60mph times
    • Associate a GPS location to lean angle and G-force for track day analysis

    I also want to be able to use a centralized clock system of sorts in order to sync GoPro footage to the telemetry data. I want to make this an All-In-One open-source telemetry system.

  • LiDAR Robot – Introduction

    Introduction

    I’m Satvik, Software Engineer and studying Mechanical Engineering at RPI (graduating May 2028). Strong background in Java and TypeScript, and building proficiency in C++. Development environment is Windows 11 with WSL2 (Ubuntu 22.04). No prior ROS2 experience.

    Introducing my LiDAR Robot project. This robot is a differential drive robot built on the Raspberry Pi 4 and an STM32 microcontroller that uses a 360 degree LiDAR sensor to avoid obstacles, programmed in C++.

    How does it work?

    The robot uses a LiDAR sensor (RPLIDAR C1) to detect obstacles and uses an algorithm to change course to avoid it. It has a goal location set, and will do its best to navigate to that goal. The software is built on ROS2, an open-source popular robotics operating system. ROS2 uses a pub-sub architecture, using “nodes” that accomplish specific, individual tasks. Nodes communicate by publishing messages to named topics. Any node can subscribe to any topic.

    More details can be viewed on the Git README

    Progress

    So far, I have created the workspace for the system in WSL using Ubuntu 22.04, and created a simulation for the robot using ROS2, Gazebo, Nav2, and RViz. This has allowed me to simulate and execute software-in-loop (SIL) testing before HIL testing. The simulation demonstrates the robot’s ability to identify the goal, create a navigation path to it, and avoid obstacles along the way.

    The control-loop for the avoider algorithm.

    Next Steps

    The next steps are to migrate this code from simulations onto hardware, and execute hardware-in-loop testing to ensure the code works, while installing mechanical parts together and building a prototype.


    A screenshot of Gazebo running a simulation