Team status report for 3/28/26

Risk Assessment & Management

The most significant risk currently facing the project is system integration complexity. The robot now combines several independent subsystems: the KR260 vision pipeline, ROS 2 communication bridge, Nav2 navigation stack, Google Cartographer SLAM, and the VNH5019 motor driver, all of which must operate reliably together in real time. A failure or timing issue at any interface point can break the full navigation and detection loop. This risk is being managed through incremental integration testing: each subsystem was validated in isolation through unit testing  before being connected to the stack, and the team is actively debugging edge cases such as the RPLiDAR initialization timing issue that was identified this week. 

A second significant risk is hardware reliability. The RPLiDAR serial timeout failure demonstrated that a single faulty component can halt progress across multiple dependent subsystems. We fixed this by replacing it with a new unit, which restored LiDAR, SLAM, Nav2, and motor control functionality, but a single fragile moving component completely crippling our implementation is a concern. Going forward, the contingency plan is to maintain awareness of which components are single points of failure and, where feasible, have spare units or fallback sensor configurations available before the final demonstration. Looking back, we could have treated the sensor with a bit more care…

A third risk is schedule pressure ahead of the interim demo. The pan-tilt camera integration and full end-to-end validation between the vision and navigation systems are still outstanding. If camera tracking integration takes longer than expected, the contingency is to demonstrate autonomous navigation and human detection independently. The core navigation stack is already functional, and our bluetooth speaker plays the correct audio, so we feel that we will have a strong interim demo even if certain parts are not ready for the final demo.

Design Changes & Their Implications

One notable change to the system design was the addition of bounding box aspect ratio analysis to the pose detection pipeline on the KR260. The original detection approach relied primarily on pose keypoints, but this proved insufficient for reliably identifying persons in a lying-down orientation without generating false positives from partial body detections. The heuristic was refined to combine bounding box size, position within the frame, and aspect ratio to improve classification accuracy. This change was necessary to make the laying-down detection practically usable rather than noisy. The cost is added complexity in the detection pipeline and additional tuning effort, but this is mitigated by the fact that the change is contained entirely within the vision subsystem and does not affect the ROS 2 interface or downstream navigation behavior.

No changes to the high-level requirements or system block diagram have been made. The overall architecture KR260 for vision, Raspberry Pi 5 for compute and motor control, RPLiDAR for mapping, and Nav2 for navigation remains as originally specified.

One minor additional change that will be made is the addition of fillets and thicker joints for our bucket due to how it is mounted. 3D printed structures have vastly different strength depending on which way you stress them.

Paul Wright Status Report 3/28/26

What I Personally Accomplished This Week

This week I focused with Sean on the physical assembly of the chassis.  printed basic mounting components

This week I focused on physical system assembly and integration testing with Sean After he drastically cleaned up the wiring and mounting for the motor drivers, we decided on a new organization of our chassis that would reduce its overall profile, which I then designed and printed. We then worked on the interim demo presentation.

Progress Status

We are on track for a sucessful interim demo and meet our basic needs outside of the actual storage attachment for the vehicle. Our first designed had some points that were too thin with our given filament and lacked fillets.

Deliverables for Next Week

Make a new proper storage attachment for the vehicle

Work with the rest of the group on continual improvement of our overall system between the interim and final demos.

 

Justin Bell Status Report 2/28/2026

Progress Report

The Kria KR260 was pose detection was made and tested .The detection pipeline was extended to include bounding box aspect ratio analysis for laying down detection, with a refined heuristic combining bbox size, position in frame, and aspect ratio to filter out false positives from partial body detections. On the Pi side, a ROS 2 detection bridge node receives these detections and triggers an espeak voice alarm over a Bluetooth JBL Go 4 speaker when a person is detected on the ground, with a cooldown to prevent alarm spamming.

Motor control was brought online using the Pololu VNH5019 dual motor driver, interfaced directly to the Raspberry Pi 5 GPIO with 8 control pins per the standard INA/INB/PWM/EN configuration. The motor power and logic grounds were verified to be correctly referenced through the shared internal ground plane on the driver board. Nav2 was integrated with the motor control stack, enabling the robot to receive and execute navigation goals. Google Cartographer SLAM was also brought up and is partially functional.

The RPLiDAR serial timeout issue was resolved by replacing the hardware with a new unit, after which the LiDAR, Google Cartographer SLAM, Nav2, and motor control all came together into a functioning navigation stack. The robot is now capable of building a map in real time while navigating autonomously with motor control through the VNH5019 driver. Currently active work is focused on integrating the pan-tilt camera mechanism to enable the robot to track detected persons as it navigates, with the PAA5160E1 optical odometry sensor already running and feeding into Cartographer for improved localization accuracy.

Sean Johnson Status Report for 3/28/26

Sean’s Status Report for March 28, 2026

What I Personally Accomplished This Week

This week I focused on physical system assembly and integration testing. I built and organized the chassis, mounting the motor drivers, Raspberry Pi, KR260, and wiring all electrical connections. I worked with the team on testing the integrated navigation stack with the motor control system and debugging issues with the RPLidar initialization timing. I also contributed to planning our interim demo, where we aim to demonstrate functional autonomous navigation with basic computer vision human detection.

Progress Status

Progress is on track for the interim demonstration. The chassis is assembled and ready for testing, and the navigation stack is operational. Integration work continues as planned.

Deliverables for Next Week

Integrate for human detection data from the KR260 and validate end to end communication between vision and navigation systems. Testing of the complete system on the assembled chassis to ensure reliability. 

Team status report for 3/21/26

 

Our current most significant risk is our physical implementation having a cutoff of our camera’s view. It is non-negotiable that our lidar sensor needs to be on top, as if the vehicle obstructs it, any map will be incorrect. Therefore, we need physical supports to hold it up, which will end up obstructing our camera below. Minor camera obstruction is preferable to lidar obstruction because one leads to small blind spots for object recognition, while the other would affect localization and movement. We are currently researching solutions to this problem, with our best idea being that the camera physically moves in a circle around the support of the lidar sensor rather than spinning in place. 

We have delayed the speaker integration until we finalize our movement.

Below is our current vehicle with our basic mountings rather than 3d printed ones.

Paul Wright status report for 3/21/26

What I personally accomplished this week:

Now that we FINALLY have our new batteries and power distribution system, I assembled a basic version of our vehicle with all  of the parts other than the speakers. The mountings were done with cardboard and tape as a basic test of what our final product should be. I also began investigating alternatives to our current pan tilt implementation to avoid as much of the camera’s view being cut off. This is discussed further in our group report.

Progress status:

We have delayed the speaker additions for now because the assembly and movement is a more pressing issue.  We experienced more difficulties in getting properly working movement than expected, and will fix this by working on 3/22/26.

Deliverables for next week:

Learn 3d printing to make better mounting hardware for vehicle

Continue Work on construction of interim demo tests and setup.

Integrate speakers after movement works.

Justin Bell Status Report 3/21/2026

This week I made significant progress on my capstone project across several fronts.

On the perception side, I developed pan-tilt camera code that reacts to LiDAR detentions within 0.3 meters, orienting the camera toward nearby objects to determine whether they are people. I also set up a GitHub repository for the project to keep everything backed up and version-controlled.

On the navigation and hardware side, I continued testing Nav2 and ran additional experiments to evaluate its behavior in real-world conditions. I also swapped out the previous motors for VNH motor drivers and began testing the robot with them for the first time, verifying that the new hardware performs as expected.

Sean Johnson Status Report for 3/21/26

What I Personally Accomplished This Week

This week I focused on validating the navigation with actual robot motion by acquiring and integrating an Elegoo Smart Robot Car as a testing platform. I purchased and assembled the Elegoo chassis to enable immediate testing without waiting for our final mechanical design. The assembly involved mounting components, connecting the TB6612FNG motor driver, and wiring the Arduino UNO for motor control. 

Worked on connecting Nav2’s velocity commands to the Arduino controlled motors. This required writing a ROS2 node that converts Nav2’s /cmd_vel messages into serial commands sent to the Arduino over USB. Testing revealed an issue where Nav2 publishes only angular velocity commands with no forward linear velocity. I traced this to a coordinate frame mismatch between the odometry data and Nav2’s expectations. I also completed the required ethics module assignment. I also worked with the team on soldering connections for the motor driver power lines and sensor wiring, ensuring reliable electrical connections for sustained testing sessions.

Progress Status

Progress remains on track with the project timeline. The Week 7 deliverable for motor integration has been achieved with the Elegoo test platform responding to Nav2 commands.

Deliverables for Next Week 

I will begin implementing the behavioral finite state machine for operational mode transitions and establish the TCP socket receiver on the Raspberry Pi to accept human detection data from the KR260. These deliverables will complete the navigation subsystem and enable full system integration testing in Week 8.

Paul Status report for 3/14/26

What I personally accomplished this week:

I worked with Sean and Justin on improving mapping for hard obstacles, integrating our navigation stack with SLAM and constructing/testing with a small robot car. To avoid pointless reiteration, you can see more on their posts. I also completed the ethics module.

Progress status:

Due to delivery issues that affected the midwest, our new power system has not arrived, so I could not work on that. We also need it to power our speaker system, so I could not work on that as well, and ended up spending more time working with Justin and Sean. We are behind on movement.

Deliverables for next week:

Integrate speakers, assemble full vehicle, perform movement testing once power finally arrives

Work on construction of interim demo tests and setup.

 

3/14/2026 Justin Status Report

This week the main focus on the robot side was getting the full Nav2-to-motor-control pipeline working on the Elegoo Smart Car V4. The Arduino UNO was reflashed with a custom serial listener that parses L<int>,R<int> commands over USB, replacing the stock Elegoo Bluetooth firmware. The V4-specific TB6612FNG motor driver pin mappings (PWMA=5, PWMB=6, AIN=7, BIN=8, STBY=3) were confirmed and wired up. A Python ROS2 bridge node on the Pi 5 subscribes to Nav2’s /cmd_vel topic, computes differential drive kinematics, and sends the resulting left/right motor values over serial to the Arduino. Debugging covered serial port conflicts between the RPLiDAR (/dev/ttyUSB0) and Arduino (/dev/ttyUSB1), fixing the DTR reset delay caused by the UNO bootloader hanging for about 2 seconds on serial connect, setting up a static IP on the Pi via netplan for reliable SSH, and manually testing motor response with ros2 topic pub. The full Nav2 stack is now confirmed running with Cartographer, RPLiDAR, velocity smoother, controller server, and the OTOS odometry node all active.

On the Kria KR260 FPGA side, the YOLOX-Nano post-processing and NMS pipeline was worked through in detail for the HLS implementation. The post-processing stage decodes raw DPU outputs into pixel-space bounding boxes by applying grid offsets and stride scaling, then computes detection confidence as sigmoid(objectness) multiplied by softmax(class logits). The NMS stage runs class-agnostic greedy non-maximum suppression with an IoU threshold of 0.45, using fixed-point arithmetic for hardware efficiency. An HLS C++ testbench was written with 8 test vectors covering edge cases like empty predictions, threshold saturation, injected person detections, multiple classes, and different image dimensions, with tolerances set at 2 pixels for bounding boxes and 0.05 for scores to account for fixed-point quantization error. The detection output pipeline was also switched from serial to TCP over WiFi, with the Kria sending JSON-formatted person detections to a listener node on the Pi that publishes them to the ROS2 person_detections topic.