What I Personally Accomplished This Week
This week I focused on fine tuning navigation system parameters to improve performance and reliability. I adjusted multiple Nav2 configuration values including obstacle inflation radius in the costmap, local and global path planning refresh rates, and motion filter parameters in Cartographer. I also calibrated motor duty cycle trims to compensate for asymmetry at different speeds, ensuring consistent velocity control across the operating range.
I debugged a critical coordinate frame issue in the OTOS odometry publisher where the sensor’s 90-degree mounting orientation caused X and Y position data to be swapped.I identified and corrected the issue by swapping the X/Y assignments in the odometry publisher code. I also adjusted covariance values to balance trust between odometry and LiDAR scan matching.
I conducted navigation testing including timed distance runs to verify velocity accuracy, localization tests to measure position error, and extended SLAM sessions to check map stability. I also created the final presentation PowerPoint.
Progress Status
Progress is on track with the project timeline. The navigation subsystem is functional with ongoing parameter optimization.
Deliverables for Next Week
Next week I will finalize navigation parameter tuning to minimize drift and improve path following accuracy. We will conduct integrated system tests combining computer vision detection outputs with navigation costmap updates to validate human aware path planning. I will also perform the remaining real-world integration tests with team members simulating various scenarios (fallen person obstacle, running detection, multi-person navigation).
New Tools and Knowledge Acquired
Throughout this project, I needed to learn several new tools and frameworks. The most significant was the ROS2 navigation stack, including Cartographer SLAM for mapping and Nav2 for path planning. I had no prior experience with SLAM algorithms or costmap based navigation, so understanding how to configure occupancy grids, inflation layers, and path planners required substantial learning through online guides and youtubes.
I also relied heavily on trial and error testing. For example, tuning the odometry covariance values required running multiple SLAM sessions, observing drift patterns, then systematically adjusting values and re-testing. When debugging, I used a systematic experimental approach: I would make a hypothesis, design a quick test, observe the result, then iterate. This strategy was more effective than randomly trying solutions. I also searched GitHub issues and ROS Answers forums when encountering specific errors, which often provided insights from others who solved similar problems.
This project also required working with the Raspberry Pi 5 beyond what I have done in the past. More significantly, this was my first experience integrating a large multi-subsystem. Issues could stem from hardware connections, software interfaces, or coordinate transformations. I learned to use isolation testing and found importance in clear interface definitions between modules developed by different team members.