{"id":17623759,"url":"https://github.com/wiseaidev/openpilot","last_synced_at":"2025-05-01T09:16:46.682Z","repository":{"id":223637865,"uuid":"761124859","full_name":"wiseaidev/openpilot","owner":"wiseaidev","description":"Towards fully autonomous driving (WIP)","archived":false,"fork":false,"pushed_at":"2024-10-14T22:23:39.000Z","size":92,"stargazers_count":13,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-01T09:16:41.039Z","etag":null,"topics":["autonomous","autonomous-vehicles","driving","gps","kalman-filter","lidar","ndarray","openpilot","radar","rust"],"latest_commit_sha":null,"homepage":"https://docs.rs/openpilot","language":"Rust","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/wiseaidev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-02-21T09:35:31.000Z","updated_at":"2025-03-27T22:20:37.000Z","dependencies_parsed_at":"2024-10-23T04:20:27.465Z","dependency_job_id":"d23f5965-e905-43d9-874f-84c31a053d3a","html_url":"https://github.com/wiseaidev/openpilot","commit_stats":null,"previous_names":["wiseaidev/openpilot"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wiseaidev%2Fopenpilot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wiseaidev%2Fopenpilot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wiseaidev%2Fopenpilot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wiseaidev%2Fopenpilot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wiseaidev","download_url":"https://codeload.github.com/wiseaidev/openpilot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251850182,"owners_count":21653978,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["autonomous","autonomous-vehicles","driving","gps","kalman-filter","lidar","ndarray","openpilot","radar","rust"],"created_at":"2024-10-22T21:42:46.011Z","updated_at":"2025-05-01T09:16:46.653Z","avatar_url":"https://github.com/wiseaidev.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚗 openpilot\n\n[![Crates.io](https://img.shields.io/crates/v/openpilot.svg)](https://crates.io/crates/openpilot)\n[![docs](https://docs.rs/openpilot/badge.svg)](https://docs.rs/openpilot/)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\n`openpilot` is a comprehensive Rust crate designed to assist in building fully autonomous vehicles. The primary focus of this crate is to provide tools for constructing and simulating sensor models, and GPS sensors, and implementing Extended Kalman Filters (EKF). The library includes modules tailored for managing sensor readings, simple sensors, GPS sensors, and features a high-performance 1D Extended Kalman Filter (EKF) implementation.\n\nIn addition to these foundational functionalities, `openpilot` introduces the `selfdrive` package. This package is specifically designed for autonomous vehicle control, providing modules and structs that facilitate object tracking, cluster management, and detailed lead vehicle analysis.\n\n## 🦀 Why Rust?\n\n![I Like Yo Cut G!](https://github.com/wiseaidev/openpilot/assets/62179149/cc8c8ff4-94cb-4fa5-aab1-8cd43c3f1791)\n\n\u003e Python is mostly Kids Oriented Programming (KOP)!\n\nChoosing Rust for `openpilot` is like strapping a jet engine to your autonomous vehicle's code. Rust brings a level of memory safety and concurrency control that turns potential coding nightmares into a serene drive through bug-free landscapes. With its high-performance 1D Extended Kalman Filter and modules tailored for sensor management and autonomous control, `openpilot` in Rust isn't just a toolbox; it's the James Bond of autonomous vehicle development. So, why Rust? Because when your code is navigating the streets, you want a language that won't just drive, it'll drive with the precision of a surgical robot and the reliability of a Swiss watch. Welcome to the fast lane of autonomy, where Rust is the steering wheel that ensures you reach your destination, bug-free and in style.\n\n## ✨ Features\n\n- **Autonomous Vehicle:** The `selfdrive` package introduces modules and structs designed for autonomous vehicle control. This includes functionalities for object tracking, cluster management, and detailed lead vehicle analysis. These tools are crucial components for building a fully autonomous system.\n\n![Peak Auto Pilot Momentum](https://github.com/wiseaidev/openpilot/assets/62179149/26b04782-ea3d-4bd6-981e-642818810cc9)\n\n\u003e Look! My Honda is driving by itself!\n\n- **Sensor Models:** Easily construct and simulate sensor models with the flexibility to customize observation models and covariance matrices.\n\n- **Simple Sensors:** Create and utilize simple sensors for efficient data processing, allowing seamless integration into your autonomous system.\n\n- **GPS Sensors:** Implement GPS sensors with accurate readings, supporting latitude and longitude coordinates for precise location tracking.\n\n- **1D Extended Kalman Filter (EKF):** Leverage the fast and efficient 1D EKF implementation for robust state estimation and tracking applications.\n\n## 🚀 Quick Start\n\nGet started with the `openpilot` library by following these simple steps:\n\n1. Install the `openpilot` crate by adding the following line to your `Cargo.toml` file:\n\n```toml\n[dependencies]\nopenpilot = \"0.0.4\"\n```\n\n1. Import the necessary modules and use the provided functionality in your Rust project:\n\n```rust\nuse ndarray::arr2;\nuse openpilot::common::ext_kal_fltr::{SensorReading, SimpleSensor, GPS, EKF, FastEKF1D};\nuse openpilot::selfdrive::controls::radar_helpers::{Track, Cluster, Lead};\n\nfn main() {\n    // Example usage\n    let data = arr2(\u0026[[1.0, 2.0], [3.0, 4.0]]);\n    let obs_model = arr2(\u0026[[1.0, 0.0], [0.0, 1.0]]);\n    let covar = arr2(\u0026[[0.1, 0.0], [0.0, 0.1]]);\n    let sensor_reading = SensorReading::new(data.clone(), obs_model.clone(), covar.clone());\n\n    // Create a simple sensor\n    let simple_sensor = SimpleSensor::new(obs_model.clone(), covar.clone(), 2);\n    let reading = simple_sensor.read(data.clone(), None);\n    println!(\"Simple Sensor Reading: {:?}\", reading);\n\n    // Create a GPS sensor\n    let gps_sensor = GPS::new((0, 1), 2, 0.01);\n    let latlon = \u0026[37.7749, -122.4194];\n    let reading = gps_sensor.read(latlon, None);\n    println!(\"GPS Sensor Reading: {:?}\", reading);\n\n    // Create and use a fast 1D Extended Kalman Filter\n    let mut fast_ekf_1d = FastEKF1D::new(0.1, 0.01, 0.001);\n    fast_ekf_1d.update_scalar(\u0026sensor_reading);\n    fast_ekf_1d.predict(0.1);\n    let (tf, tfj) = fast_ekf_1d.calc_transfer_fun(0.1);\n    println!(\"EKF Transfer Function: {:?}, Jacobian: {:?}\", tf, tfj);\n\n    // Use Track, Cluster, and Lead structs and functions\n    let mut track = Track::new();\n    track.update(10.0, -5.0, 20.0, 15.0, 30.0, 0.1, 0.5, 0.5, 15.0, 20.0, 10.0);\n    let key = track.get_key_for_cluster();\n    println!(\"Track Key for Cluster: {:?}\", key);\n\n    let mut cluster = Cluster::new();\n    let track1 = Track::new();\n    let track2 = Track::new();\n    cluster.add(track1);\n    cluster.add(track2);\n    let d_rel = cluster.d_rel();\n    println!(\"Cluster Relative Distance: {:?}\", d_rel);\n\n    let mut lead = Lead {\n        d_rel: 0.0,\n        y_rel: 0.0,\n        v_rel: 0.0,\n        a_rel: 0.0,\n        v_lead: 0.0,\n        a_lead: 0.0,\n        d_path: 0.0,\n        v_lat: 0.0,\n        v_lead_k: 0.0,\n        a_lead_k: 0.0,\n        status: false,\n        fcw: true,\n    };\n    cluster.to_live20(\u0026mut lead);\n    println!(\"Lead Vehicle Information: {:?}\", lead);\n}\n```\n\n## 🧪 Testing\n\nRun tests for the `openpilot` crate using:\n\n```bash\ncargo test\n```\n\n## 🌐 GitHub Repository\n\nYou can access the source code for `openpilot` on [GitHub](https://github.com/wiseaidev/openpilot).\n\n## 🤝 Contributing\n\nContributions and feedback are welcome! If you'd like to contribute, report an issue, or suggest an enhancement, please engage with the project on [GitHub](https://github.com/wiseaidev/openpilot). Your contributions help improve this crate for the community.\n\n## 💰 Support \n\n![My Meet Ain't Meeting](https://github.com/wiseaidev/openpilot/assets/62179149/ddb4966a-3449-4266-8e4a-7bb6914fbe4b)\n\nIf you like this project, consider tossing a coin into the virtual tip jar. Your donations help keep the coffee flowing and the code cracking. So, if you want to be the hero this project deserves, why not sprinkle some gold coins in the developer's virtual hat?\n\n# 📘 Documentation\n\nFull documentation for `openpilot` is available on [docs.rs](https://docs.rs/openpilot/).\n\n# 📄 License\n\nThis project is licensed under the [MIT License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwiseaidev%2Fopenpilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwiseaidev%2Fopenpilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwiseaidev%2Fopenpilot/lists"}