[{"content":" Hi, I&rsquo;m Rithvik I am currently studying Computer Engineering at the University of Illinois, Urbana-Champaign. My interests include autonomy and embedded software, both of which I have been pursuing since high school.\nIn my free time, I enjoy watching F1 and breaking my configs while installing new libraries.\nI am currently an Avionics Software Intern at Blue Origin, where I am working on the camera software for the New Glenn rocket. I am also a member of The Illinois Space Society, where I am on the GNC and Software teams for our Spaceshot.\nIf you ever want to talk about robotics or hardware security, feel free to contact me at rbhogavilliATgmail.com and check out my resume here.\n","permalink":"https:\/\/rbhog.me\/about-me\/","summary":"About Me","title":""},{"content":"I wrote software for the cameras. (WORK IN PROGRESS)\n","permalink":"https:\/\/rbhog.me\/blue-origin\/","summary":"Developing camera software for the New Glenn rocket.","title":"Blue Origin"},{"content":"I was introduced to CTF through what was at the time called CSAW HSF (High School Forensics). The premise of the competition was a qualifying round which consisted of Jeopardy-style puzzles across categories ranging from cryptography to binary exploitation which led to a finals round consisting of a forensics challenge where teams are given a clue to start with and finally submit a writeup describing vulnerabilities and details they found in the process.\nIn these competitions, I have tended to specialize in forensics and networking, but more recently I have found interest in cryptography and hardware security. In the future, I hope to post some writeups for any noteworthy challenges I solve in future CTFs and feel free to check my CTFtime to see any CTFs that I compete in.\nAs of writing this, some CTF accomplishments I am proud of are:\nNational Cybersecurity Scholar 2 Time Finalist CSAW RED 2 Time Winner Maryland Cyber Challenge 2nd Place UMDCTF 3rd Place JerseyCTF High School Winner RedpwnCTF Top 50 Platinum Division CyberPatriot ","permalink":"https:\/\/rbhog.me\/ctf\/","summary":"My experiences in capture the flag.","title":"Capture the Flag"},{"content":"University of Illinois at Urbana-Champaign Bachelor&rsquo;s in Computer Engineering, 2021-2025\nECE CS Math\/Phyiscs Other Subjects ECE 486 Control Systems CS 498MP Introduction to Machine Perception PHYS 214 University Physics: Quantum Physics ECE 470 Introduction to Robotics CS 424 Real-Time Systems PHYS 213 University Physics: Thermal Phyiscs ECE 391 Computer Systems Engineering CS 374 Algorithms &amp; Models of Computation PHYS 212 University Physics: Electricity &amp; Magnetism ECE 313 Probability with Engineering Applications CS 225 Data Structures MATH 286 Intro to Differential Equations Plus ECE 220 Computer Systems &amp; Programming CS 173 Discrete Structures MATH 257 Linear Algebra with Computational Applications ECE 210 Analog Signal Processing ECE 120 Introduction to Computing ECE 110 Introduction to Electronics ","permalink":"https:\/\/rbhog.me\/education\/","summary":"Education","title":"Education"},{"content":"Summary Optimized the performance of Magic, an Electronic Design Automation tool for VLSI design. Implemented efficient data structures and hashing algorithms and quantified performance with Linux perf. Research Over the summer of 2020, I worked under the guidance of Tim Edwards on optimizing the performance of a VLSI layout tool called Magic. This was my first exerpience in open-source contributions and I learned a lot about how to get up to speed and maintain a large-scale project.\nThe Magic VLSI (Very-Large Scale Integration) Layout Tool is an open-source software that was originally intended for smaller chip designs. However, as chips evolve, the tool must be adapted to meet higher load requirements. Magic currently stores labels for a given chip design in the form of a linked list, meaning that searching for a label is an O(n) operation. To optimize performance, a binned collection and hash table was implemented to replace the linked list storage for labels. Changes to the tools in Magic were tested on the striVe chip and the performance of the given tool was tested using the perf tool in Linux. Using the perf results, a flame graph was generated to then measure the relative number of samples for a given function. The effectiveness of the implemented optimizations was based on the decrease in time spent on functions when using a larger chip design. Replacing the linked list for the binned collection for label storage by location correlated with a general decrease in total time spent on the functions. Although the baseline for label storage by name could not be analyzed, there was still a theoretical increase in efficiency due to the O(1) complexity of the hash table.\nAfter implementing various optimizations and generating the flame graphs to quantify the performance, the results indicated a general decrease in the time spent on the functions tested during the sampling period. After the internship, I created a research paper, poster, and slides in Latex to submit for competitions and present in my school. Although using Latex for all the documents was originally part of a personal competition I had with my friend, I was pleasantly surprised by how professional the documents came out looking.\nLinks Paper Poster Slides ","permalink":"https:\/\/rbhog.me\/efabless\/","summary":"Optimized the Magic VLSI Layout Tool and quantified performance gains.","title":"Efabless.com Internship"},{"content":"Blue Origin Avionics Software Intern (Summer 2023)\nDeveloping camera software for the New Glenn rocket. More Info\nIllinois Space Society Spaceshot Avionics Software and GNC Team Member (2022-Present)\nDeveloping simulations and control aglorithms for the Spaceshot rocket. More Info\nUniversity of Illinois CyberGIS Center Researcher (Fall 2021)\nDeveloped JupyterLab extensions for kernel management and navigation. More Info\nUniversity of Maryland MIND Lab Summer Intern (Summer 2020)\nCreated an interactive map of university buildings and classrooms and filtered phone location data. More Info\nEfabless.com Summer Intern (Summer 2020)\nOptimized the Magic VLSI Layout Tool and quantified performance gains. More Info\nFIRST Robotics Competition Team 4099 Mentor (2022-Present), Controls Lead (2019-2021)\nProgrammed robot subsystems and developed custom path planning for holonomic drivetrain. More Info\nFIRST Tech Challenge Team 13100 Mentor (2021 - Present), Captain (2020-2021)\nImplemented odometry and path planning algorithms and taught strategic design practices. More Info\n","permalink":"https:\/\/rbhog.me\/experience\/","summary":"Experience","title":"Experience"},{"content":"Summary Designed and programmed robot subsystems teleoperation and autonomous movement in Kotlin. Developed custom path following using PID and motion profiling for a swerve drivetrain. Implemented systems for knowledge transfer between members of the team. FIRST Robotics Competition The FIRST Robotics Competition (FRC) is a competition where teams are given around a 6 week timeline to analyze a game and then design and build a robot to compete in the game. I was on my school&rsquo;s team for all four years of high school and was on leadership for two of those years.\nProgramming For my first year on the team, I was responsible for the code framework for most of the subsystems on the robot. This involved making basic state machines for each subsystem and programming motor states to then be enhanced using various feedback loops.\nThe next year I was introduced to feedback loops which we used for our elevator for the game Destination: Deep Space. For this game, since there were predefined positions that we would need to go to score, PID loops in conjunction with vision-assisted alignment would automate scoring for the driver. Although I had little background in tuning control loops, I soon became interested in other methods of control with which I would expand on through my FTC team.\nOne major change that we made in our codebase during my final year on the team was switching to a command-based paradigm. Like the &ldquo;state-machine&rdquo; framework that we used in the past, we could focus on the behavior of the robot, but now, given that WPILib, the library used in the competition, had extensive support for command-based, it meant that members would have less overhead in trying to understand the codebase.\nThis year we also decided to switch to a holonomic drivetrain. Part of the reasoning behind this was since the game had not changed, we felt comfortable pushing our technical boundaries and due to the relatively flat and open nature of the field, there would be minimal damage to swerve modules.\nIn the past, we used a west-coast drivetrain which meant that the heading of the robot affected the direction it was moving. This made path planning convenient since there were more constraints on the robot in terms of its heading. With a swerve drivetrain, since there is no real &ldquo;forward&rdquo; direction, there are many ways to reach a given heading and velocity combination. Because of this, we had to write our own path following algorithm to meet our needs. When designing our controller, we took inspiration from WPILib and a popular path-planning library in FTC called Road Runner. In our controller, we used a PID loop for each axis the robot could move on (forwards, sideways, and rotational) to ensure that the robot would follow the pregenerated trajectory.\nMentoring After taking a break from the team for a year, I came back as a mentor for the controls subteam. Since I was a member of the team, we were lucky enough to have an ex-member mentor who stayed with the team which meant that he was the main point of knowledge transfer between each year. From mentoring my old FTC team I realized the importance of knowledge transfer in ensuring that a team didn&rsquo;t have to start from square one each year. Because of this, I wanted to focus my mentoring to creating ways for new members to easily pick up on whatever would be needed to succeed in the team. This also involves developing systems for the team to remain autonomous, regardless of whether the team does have a mentor or not.\nLooking Ahead My technical experiences in FRC were a significant factor in my decision to pursue robotics and autonomy in college and hopefully as a career. As part of this, I took ECE 486 - Control Systems to gain a better understanding of control systems and how to use them in a real-world application.\n","permalink":"https:\/\/rbhog.me\/frc4099\/","summary":"A FIRST Robotics Competition team that I was on throughout high school and now mentor.","title":"FRC Team 4099 - The Falcons"},{"content":"Summary Mentor students and conduct workshops on effective robot design and strategy. Managed a team of 10, designed and built a robot in OnShape for competitions. Implemented odometry and programmed path planning for autonomous routines in Java. FIRST Tech Challenge The FIRST Tech Challenge is a robotics comepetition where teams of 15 design a robot to compete in a game that changes every year. Games include shooting rings, loading game pieces into a box, and stacking blocks. Another aspect of the competition is outreach where teams raise STEM awareness in their communities and uphold the values of &ldquo;gracious professionalism&rdquo;.\nProgramming Part of my rationale behind joining the team was to recreate what I had taken for granted in FRC. One of these things was the command-based paradigm which is a way of organizing code for the robot into subsystems and their respective commands. This makes it easier for newer studens to understand code since we care more about what needs to be done rather than how.\nOne of my earliest major projects beyond the robot was trying to recreate this paradigm in FTC using the built-in timer and referring to the command scheduler that is used in WPILib. Later I found FTCLib which had already been under development and converted to using this for future robot codebases.\nAnother project our team took on was using dead-wheel odometry for localization. A combination of a relatively long autonomous period with the use of a mecanum drivetrain made it impractical to use the wheel encoders to determine the position of the robot due to slippage. Our system was based on that of Wizards.exe. For path planning, we used a library called Road Runner that utilizes PID and feedforward controllers for each of the drive motors along with PID controllers for overall path following. The dead-wheel subsystem was my first in-depth experience with control systems and is what sparked my interest in control systems.\nOutreach The year I became a captain of the team, we decided to make a nonprofit. At the time, our team would rely on our high school&rsquo;s FRC team to receive any grands we were awarded and then deposit the check with a parent on the team. However, this made it hard to keep track of any funds we got and was not in line with the community-based nature of our team. Creating a nonprofit allowed us to apply for more grants that we were previously ineligible for and streamlined the process of receiving payments for our team&rsquo;s summer camps.\nMentoring Something I struggled with as a captain was transferring knowledge to the other members of the team. Given that the rest of the team was primarily students interested in outreach or with no technical background, this issue was exacerbated the year I left. Because of these circumstances, as a mentor I wanted to make sure I could create a sustainable way to transfer knowledge between the different students on the team. Part of this was creating workshops to teach the students how to program the basic subsystems of the robot and then if time permitted, enhance this with control loops.\nBeyond programming help, I try to reinforce the ideas of strategic design, something that I took to heart after reading JVN&rsquo;s blog and watching Karthik&rsquo;s workshops. What I found is that students tend to complicate solutions to problems that have already been addressed for both FTC and FRC games. I enjoy finding relations between games and seeing the advantages of various designs that proved effective while maintaining simplicity.\n","permalink":"https:\/\/rbhog.me\/ftc13100\/","summary":"A FIRST Tech Challenge team that I now mentor.","title":"FTC Team 13100 - 47 Beavers"},{"content":"Summary Designed real-time interactive map to alert farmers of crop disease outbreaks in field using Mapbox. Trained TensorFlow Lite model to detect diseases in cassava plant for use on Google Edge TPU. Won Best Community &amp; Sustainability Track Project Background I competed in Hack Illinois 2022 with 5 of my friends and this time, we decided to attempt a project that was much larger scale than any I had done before. The hack consisted of a machine learning model that would detect diseases in cassava along with an interactive map that would allow farmers to see where the disease was detected. We were heavily inspired by John Deere&rsquo;s Seek and Spray and wanted to extend its detection capabilities.\nImplementation Our project consists of a machine learning model deployed on the edge along with a web interface that farmers can use to get analytics on their diseased crops. The machine learning model is built using TensorFlow Lite, runs on a Raspberry Pi that is accelerated using a Coral Edge TPU accelerator board, and detects whether a given plant in the frame is healthy or diseased or if it is a weed that needs removal. This application also provides the user with access to an online video stream that displays current predictions for the plants in the frame along with a confidence level for each.\nEach data point from the machine learning model is tagged with a location along with whether it is healthy, diseased, or a weed and an associated GPS coordinate. Using a Flask API to seed the data from the MongoDB database, we developed a Mapbox interface along with an image gallery that provides insights and visuals into detected problematic plants. In the Mapbox map, a farmer can select individual data points representing diseased plants and determine further action. The Mapbox map continuously polls for data every second from the Flask API and updates the map automatically without the user needing to reload the page. When changing dates on the map, the next cluster of data points is zoomed into automatically as well.\nTo filter the data and reduce the plotted points on the graph, we created an algorithm to tell if we were looking at the same plant from a different frame by using historical data and the current inference. When a new plant does get detected, its information is saved to the database and the Waveshare E-Ink display is updated with the name of the disease and the confidence of the prediction.\nFor a demo and more information you can check out our Devpost.\n","permalink":"https:\/\/rbhog.me\/hack-illinois-2022\/","summary":"A machine learning model to detect diseased plants and a real-time web app to find diseased crops.","title":"Hack Illinois 2022 - infected & detected"},{"content":"Summary Designed a web application to display filtered heatmaps using Mapbox to visualize DC traffic accident data. Retrieved data from public databases and formatted it into GeoJSON. Won Best Overall Hack Background HackTJ 8.0 was the first hackathon I had done since my freshman year of high school. Through my internship with the MIND Lab at UMD, I had learned about Mapbox and wanted to implement it for a hackathon project. So, we decided to make an application for users to see accident hotspots and therefore avoid them when planning routes.\nImplementation We acquired data from OpenData DC on all crashes in the past 20 years. We then filtered out and sorted the data for just the last 4 years using JavaScript. We also made a separate file that would hold the clusters for given years so that we could display them separately. Then, a React app was made which would display the Mapbox map along with filter options using Chakra UI. Once we finalized the UI and backend, we used AWS to host our website on the domain we got from Domain.com.\nFor a demo and more information you can check out our Devpost.\n","permalink":"https:\/\/rbhog.me\/hacktj-8\/","summary":"An interactive web app to display dangerous accident hotspots from crash data.","title":"HackTJ 8.0 - Crash Central"},{"content":"Summary Implemented custom 3 DOF Kalman Filter on Teensy 4.1 in C++ for state estimation during flight to control airbrake mechanism. Designed 3 DOF Kalman Filters fusing barometer, accelerometer, and gyroscope data to estimate displacement and orientation. Created 6 DOF rocket physics simulation and emulated flight sensor suite in Python for testing control algorithms. Designed and implemented scheduler for experimental finite state machines on rocket in ChibiOS to compare effectiveness in flight. Spaceport America Cup The Spaceport America Cup is the world&rsquo;s largest intercollegiate rocketry competition where teams design and build a rocket to launch and get as close to a target apogee as possible. Our team competed in the 30,000 ft. COTS Solid Rocket Motor category, where we designed a rocket to launch to 30,000 ft. using a commercial solid rocket motor and an active drag mechanism to control the rocket&rsquo;s apogee. Our rocket had a successful launch, reaching an apogee of 27,309 feet and leading us to win runner&rsquo;s up at the event for our category.\nGNC and Software Joining the team, I had some background to control systems through mentoring my high school robotics teams along with taking a control systems course at my school. Despite this, joining the GNC team was a big leap for me since in those previous environments, I had never dealt with the process of designing control algorithms from scratch. My first tasks on the team involved changing our current Kalman Filter for estimating apogee to not be affected by sensor drift. Our original approach to this was to have a rolling window of barometer data and set our original state to the average of this window. With this and other changes in hand, we were prepared for our October test flight to 15,000 feet.\nOur October launch was mostly a success with a successful recovery, however we had overshot our target apogee of 15,000 feet, leading us to believe that our active control mechanism was not working as intended. Looking at the data, we realized that the airbrake actuation data was not being logged, leading us to find other ways to validate our control mechanism. As a part of this, I worked towards developing a system that would allow us to replay previous flight data on our flight hardware. This system later evolved into our current hardware-in-loop simulation where we stream sensor data to our flight hardware over serial and observe the response of our control algorithms and telemetry systems.\nMy next major project was expanding our 1DOF Kalman Filter to a 3DOF Kalman Filter to estimate the rocket&rsquo;s displacement and later another to estimate the rocket&rsquo;s orientation. To develop these systems, we would need to develop a new simulation that enabled rapid prototyping for our control systems. As a result, we developed a 6DOF simulation in Python that emulated the rocket&rsquo;s physics and sensor suite. In this, I was responsible for simulating the rocket&rsquo;s motor, moment of inertia, and eventually writing the actual Kalman Filters.\nMy future plans for GNC are to focus on onboarding. The way we introduced Kalman Filters seemed arbitrary and by focusing on smaller projects such as an alpha-beta-gamma filter or figuring out why a Madgewick filter might not suit our needs would pose a Kalman Filter as a natural progression of development rather than an arbitrary solution to a problem.\nYou can check out the flight code I worked on here and the simulations here.\n","permalink":"https:\/\/rbhog.me\/iss\/","summary":"Developing simulations and control aglorithms for the Spaceshot rocket.","title":"Illinois Space Society Spaceshot Avionics"},{"content":"Summary Designed 3D web application to correlate COVID statistics with demographics data in Mapbox and Turf.js. Parsed public data from Washington DC and calculated Pearson\u2019s r for correlation strength. Won 1st Place Overall Background I competed in Los Altos Hacks V with three of my friends and we decided to make a web app that would correlate COVID statistics with demographic data that we found for DC. Our goal was to have this serve as a tool for local governments to help with vaccination resource allocation.\nImplementation Our site was made using React and the sliders and drawers were made using Chakra UI. Mapbox was used to display the map on the site, using the data that we calculated from Open Data DC. We used datasets on the demographics of DC, regions that the city was divided into, along with data on the spread of COVID in DC. We used the data for each neighborhood in a ward to calculate Pearson&rsquo;s r, or correlation between COVID case rate and income. With this data, we could format indicators on the map to help others visualize the data.\nFor a demo and more information you can check out our Devpost.\n","permalink":"https:\/\/rbhog.me\/los-altos-v\/","summary":"A tool for local governments to correlate demographics with COVID case rate for vaccine allocation.","title":"Los Altos Hacks V - from city import pandemic"},{"content":"Summary Correlated DC Census GeoJSON data with parking violations. Designed algorithm to display parking spots within range of specified location, avoiding high ticket areas. Background I competed in MasseyHacks VII with 3 of my friends and this time, we were inspired by an article I found on The Pudding, which used a concept called &ldquo;scrollytelling&rdquo; to convey information. As part of this, a map moves as you scroll, which gives a sense of interaction when reading blurbs. With this in mind, our project was a scrollytelling app to correlate demographics with parking data along with a tool to find parking in areas with lower ticket rates.\nImplementation We got the datasets for parking meters, parking violations, and demographics using Open Data DC, which is publicly available data from DC. We then generated GeoJSON files that were used with Mapbox in our React frontend. We also used Chakra UI for the components besides the map on the frontend. In order to get the location given the address, we used Google Maps geocoding which returned us a latitude and longitude to then use in our algorithm.\nFor a demo and more information you can check out our Devpost.\n","permalink":"https:\/\/rbhog.me\/masseyhacks-vii\/","summary":"A web app to find parking spots while avoiding parking fines.","title":"MasseyHacks VII - Park Alert"},{"content":"Here&rsquo;s some of the projects I&rsquo;ve worked on through hackathons and clubs since high school. (Full descriptions are a WIP)\nHackTJ 8.0 - Crash Central An interactive web app to display dangerous accident hotspots from crash data. More info Los Altos V - from city import pandemic A tool for local governments to correlate demographics with COVID case rate for vaccine allocation. More info MasseyHacks VII - Park Alert A web app to find parking spots while avoiding parking fines. More info HackIllinois 2022 - infected &amp; detected A machine learning model to detect diseased plants and a real-time web app to find diseased crops. More info Various Capture the Flags (CTF) Cybersecurity related &ldquo;puzzle&rdquo; events including CSAW RED, picoCTF, UMDCTF, and Maryland Cyber Challenge. More info ","permalink":"https:\/\/rbhog.me\/projects\/","summary":"Projects","title":"Projects"},{"content":"$$a+b=c$$\n","permalink":"https:\/\/rbhog.me\/test\/","summary":"test","title":"Test"},{"content":"Summary Developed user interface in JavaScript for tracing spread of COVID-19 using Mapbox and ArcGIS. Experimented with algorithms for removing noise from GPS data using Turf.js and road fitting APIs. Research During the summer of 2020, I interned with the MIND Lab at the University of Maryland. Our project was to develop a COVID contact tracing app that would allow users to share their cellphone location data, and then use this data to find what individuals they could have come in contact with based on what rooms they had been in. Because of this, my work fell into two parts: a web app that would allow researchers to see information about each room on campus and another web app that would allow researchers to see where users had been in the course of the day.\nGiven that this was my first time using JavaScript, the internship served as a learning experience for how to make efficient applications.\nUMD has a map server that is available to researchers which provides access to the location data for every room in every building on campus. So, using Axios and Bluebird, I developed a script that would allow us to download the data from the server and save it as a GeoJSON that would enable us to map it in our own web app.\nWith a way to collect data, using Mapbox, I created a basic map that would plot the GeoJSON file and added dropdown menus to filter the data by building and floor number. The final result was a map that would pan to a specified floor for any building and allow users to get information on rooms on the given floor.\nThe second aspect of the internship was related to a web app that another intern was working on that would show how a user moved through the course of a day. We were given raw location data from a phone, but this data had lots of noise, rendering it impractical to plot the data as is. So, I experimented with various map fitting APIs to remove noise from the data and then plotted the data on a map. Using the distance between points, we estimated the user&rsquo;s speed and chose a profile (walking, driving, etc.) to get the proper road snapping for a given point.\nLessons Learned Over the course of the internship, many of the bottlenecks I ran into were the result of trying to render large amounts of data on the client side. This led to laggy performance and meant that there was lots of overhead before a user could actually interact with the data. My solution at the time was to take snapshots of the map server manually, but this was not scalable. Since, I have learned about databases and used them in our HackIllinois project.\n","permalink":"https:\/\/rbhog.me\/mind-lab\/","summary":"A web app to navigate campus buildings and classrooms and filter phone location data.","title":"UMD MIND Lab Internship"},{"content":"Summary Developed Ansible playbooks for Docker image version control and virtual machine management. Developed JupyterLab extension to manage kernel installation using TypeScript. Research The first part of my job was to write Ansible scripts to automate pulling Docker containers from Docker Hub. At the time, a person would have to manually type in a command on each machine to pull or update containers, making it difficult to manage and update images. The Ansible scripts allowed us to automate this process and only have to run a command on one machine.\nThe second part of my job was to write a JupyterLab extension that would check if a kernel was installed when a user was using a notebook. This took up most of my efforts since it was difficult to find a reasonable way of checking the installed kernels. Some of the solutions I experimented with was running bash commands within JavaScript, but I was unable to find a solution that worked. I can&rsquo;t say much beyond this since most of the work is for proprietary software belonging to the lab.\n","permalink":"https:\/\/rbhog.me\/cybergis\/","summary":"Developed JupyterLab extensions for kernel management and navigation.","title":"University of Illinois CyberGIS Center"}]