ROS Robot Intelligent Navigation and Control System
Overview
This project was the final deliverable for the Robot Perception and Intelligence course (EE211) at Southern University of Science and Technology, built on the ROS2 platform. The goal was to develop a fully autonomous robot capable of navigating to a target location, recognizing and grasping an object using a robotic arm, and avoiding obstacles — all with custom-implemented planning and control modules.
Results
- Navigation: Successfully navigated to target points using the Nav2 stack with a custom global planner plugin.
- Object Recognition and Grasping: Detected target objects via Aruco markers; the robotic arm computed inverse kinematics and executed reliable grasps within the reachable workspace.
- Path Planning: Implemented a custom A* global planner and a trajectory feedback local controller as Nav2 plugins.
- Extra Challenge: Handled randomly placed objects by dynamically querying IK solvability during slow-approach phases.
Technical Details
- System Architecture:
- Finite State Machine (FSM): Coordinated high-level task sequencing (navigate → approach → grasp → return).
- Navigation: Nav2 stack with tuned parameters for
global_costmap,local_costmap,planner_server, andcontroller_server. - Aruco-based Target Recognition: Used camera-based Aruco detection to estimate target pose; TF tree handled all coordinate transformations automatically.
- Custom A Planner (
MyPlanner)*:- Implemented as a Nav2 global planner plugin in C++.
- Standard A* graph search on the occupancy grid with heuristic tuning for smooth paths.
- Custom Trajectory Feedback Controller (
MyController):- Local controller plugin computing velocity commands to track the reference path.
- Feedback control based on cross-track error and heading error.
- Robotic Arm Controller:
- Queried IK solver (
grasp_query_solved()) in a loop during slow approach to determine when the target entered the reachable envelope. - Designed custom grasp points with direction information from Aruco pose estimates.
- Queried IK solver (
- PTZ (Pan-Tilt) Tracking:
- Drove the camera gimbal to track the target during navigation, preventing loss of visibility.
- Coordinate compensation handled via TF tree rather than manual recalibration.
Challenges
- Odometry Drift: Wheel odometry accumulated error over longer paths, causing the robot to lose accurate positioning relative to the target. Resolved by switching reference to the Aruco marker position during the final approach phase.
- IK Feasibility Window: The robotic arm’s reachable workspace was constrained, requiring continuous IK queries and a slow-approach strategy to enter the feasible zone before executing a grasp.
- Costmap Configuration: Getting Nav2’s costmap inflation and obstacle layers tuned for the specific robot geometry required iterative testing.
Reflection and Insights
This project provided hands-on experience with the full stack of autonomous robotics: perception, planning, and control. Implementing A* and the trajectory controller as actual Nav2 plugin classes — rather than standalone scripts — deepened understanding of how ROS2’s modular architecture enables component reuse and testing. The challenge of handling coordinate frames across navigation, perception, and manipulation highlighted why a well-structured TF tree is foundational to multi-component robotic systems.
Team and Role
- Team: Three-person team, each responsible for different subsystems.
- My Role: Led the development of the custom A* global planner plugin and the trajectory feedback controller; contributed to the FSM design and arm approach strategy.
ROS Robot Intelligent Navigation and Control System