{"id":19580779,"url":"https://github.com/mirzaim/path-tracking-pid","last_synced_at":"2026-04-24T23:34:41.452Z","repository":{"id":257347692,"uuid":"857973931","full_name":"mirzaim/Path-Tracking-PID","owner":"mirzaim","description":"ROS-based PI controller for robotic path tracking with Gazebo simulation and path visualization","archived":false,"fork":false,"pushed_at":"2024-09-16T04:25:24.000Z","size":9,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-06T10:08:37.211Z","etag":null,"topics":["gazebo","pid","pid-control","plotjuggler","ros"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mirzaim.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-16T04:15:34.000Z","updated_at":"2024-09-16T04:28:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"575e8e17-28ef-42d5-918c-67bdc206420f","html_url":"https://github.com/mirzaim/Path-Tracking-PID","commit_stats":null,"previous_names":["mirzaim/path-tracking-pid"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mirzaim/Path-Tracking-PID","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirzaim%2FPath-Tracking-PID","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirzaim%2FPath-Tracking-PID/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirzaim%2FPath-Tracking-PID/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirzaim%2FPath-Tracking-PID/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mirzaim","download_url":"https://codeload.github.com/mirzaim/Path-Tracking-PID/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mirzaim%2FPath-Tracking-PID/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32245150,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gazebo","pid","pid-control","plotjuggler","ros"],"created_at":"2024-11-11T07:29:48.514Z","updated_at":"2026-04-24T23:34:41.432Z","avatar_url":"https://github.com/mirzaim.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PI Controller for Robot Path Tracking\n\nThis project provides a ROS-based implementation of a **PI controller** to control the movement of a robot along predefined paths such as elliptical and spiral trajectories. The robot's position and orientation are tracked, and the controller adjusts its movements to follow the desired path accurately.\n\n## Overview\nThe PI controller is designed to ensure the robot can follow various paths using feedback from its current state. The project simulates the robot’s movements in the **Gazebo** simulator, and the results are visualized in **PlotJuggler**.\n\n## Demo\n\nHere is a demonstration of the robot following the path:\n\nhttps://github.com/user-attachments/assets/1d0c0bd5-9ca6-4957-aa0c-44f48a4ae3c4\n\n## File Structure\n- **src/controller.py**: Implements the PI controller, computing velocity commands based on the robot's position and orientation.\n- **src/pose_monitor.py**: Monitors the robot's pose and publishes the robot's path and orientation data. It also retrieves ground truth information from the Gazebo simulation.\n- **CMakeLists.txt**: Configuration file for building the ROS package.\n- **package.xml**: ROS package metadata and dependencies.\n\n## Controller Details\n\nThe PI controller adjusts the robot's velocity and heading to minimize the error between the desired and actual paths. It consists of two main components:\n- **Proportional Term (Kp)**: Corrects the error based on the distance to the target.\n- **Integral Term (Ki)**: Corrects accumulated errors to improve long-term accuracy.\n\n### Controller Parameters:\n- **Elliptical Path:**\n  - `Kp = 0.8`, `Ki = 0.1`, `Tp = 0.4`\n- **Spiral Path:**\n  - `Kp = 0.7`, `Ki = 0.1`, `Tp = 0.3`\n\n## Simulation\nThe robot's movements are simulated in **Gazebo**, with trajectory data visualized using **PlotJuggler**. The blue line represents the robot's actual path, while the red line represents the desired trajectory.\n\n## Dependencies\nThe project relies on the following ROS packages:\n- `rospy`\n- `std_msgs`\n\nAll dependencies are specified in the `package.xml` file.\n\n## Usage\n\n### Build the package:\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/mirzaim/Path-Tracking-PID.git\n   ```\n2. Navigate to the workspace and build the package:\n   ```bash\n   cd ~/catkin_ws\n   catkin_make\n   ```\n\n### Run the package:\n1. Source the workspace:\n   ```bash\n   source devel/setup.bash\n   ```\n2. Launch the controller and monitor:\n   ```bash\n   rosrun path_tracking controller.py\n   rosrun path_tracking pose_monitor.py\n   ```\n\n### Visualize the Results:\nUse **PlotJuggler** to visualize the robot’s path.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmirzaim%2Fpath-tracking-pid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmirzaim%2Fpath-tracking-pid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmirzaim%2Fpath-tracking-pid/lists"}