{"id":27062295,"url":"https://github.com/automaticdai/yfips-indoor-positioning-system","last_synced_at":"2025-10-07T17:59:07.868Z","repository":{"id":70795321,"uuid":"306133068","full_name":"automaticdai/yfips-indoor-positioning-system","owner":"automaticdai","description":"(Work-in-progress) YF-IPS: use low-cost sensors for multi-robot indoor positioning, tracking and navigation.","archived":false,"fork":false,"pushed_at":"2020-10-28T22:40:37.000Z","size":618,"stargazers_count":9,"open_issues_count":3,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-05T15:16:15.819Z","etag":null,"topics":["low-cost-sensors","robot","vision"],"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/automaticdai.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":"2020-10-21T19:55:48.000Z","updated_at":"2025-02-08T02:57:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"a81cea47-1e2a-4eec-8260-fdabbdd863ab","html_url":"https://github.com/automaticdai/yfips-indoor-positioning-system","commit_stats":null,"previous_names":["automaticdai/yfips-indoor-positioning-system"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/automaticdai/yfips-indoor-positioning-system","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/automaticdai%2Fyfips-indoor-positioning-system","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/automaticdai%2Fyfips-indoor-positioning-system/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/automaticdai%2Fyfips-indoor-positioning-system/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/automaticdai%2Fyfips-indoor-positioning-system/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/automaticdai","download_url":"https://codeload.github.com/automaticdai/yfips-indoor-positioning-system/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/automaticdai%2Fyfips-indoor-positioning-system/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278820585,"owners_count":26051766,"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","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["low-cost-sensors","robot","vision"],"created_at":"2025-04-05T15:16:20.422Z","updated_at":"2025-10-07T17:59:07.841Z","avatar_url":"https://github.com/automaticdai.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# YF-IPS: Robot Indoor Positioning System\n![](https://img.shields.io/github/stars/yfrobotics/yfips-indoor-positioning-system) ![](https://img.shields.io/github/issues/yfrobotics/yfips-indoor-positioning-system) ![](https://img.shields.io/github/license/yfrobotics/yfips-indoor-positioning-system)\n\n## 1. Introduction\nTraditional localisation system is not friendly to robot researchers and learners, both (a) they are expensive; (b) they need a lot of efforts to setup. In this project, we target to use low cost sensors to achieve an indoor positioning system (IPS) which has relatively good performance and can also be used for tracking and navigation proposes beyond robotic applications.\n\nThe system is designed in mind that it will be used to locate multiple robots (1~100) and at the same time with a high speed (at least 30 fps). After configuration and calibration, the system will return the position of the robot in the form of (id, x, y, yaw), in which id is the robot identification number, (x, y) is the 2D coordination relative to the origin point, yaw is the rotation on the z axis.\n\nThis project has two versions: (1) vision-based; (2) ToF/tag-based, which can be used together or separately. The project is currently in its very early stage. We want to explore which technology / combination of technologies could produce satisfactory precision with affordable cost. We are working on vision-based and tag-based and are evaluating if these are sufficient. \n\n\n## 2. Design specification\nThese are the objectives of this project. \n\n- The system can detect robots in a region of 5 x 5 meters.\n- The precision with the simpliest setup has +-20 cm. Using more sensors could improve the precision up to +-10 cm.\n- The system can simulatenously detect 1-10 robots with at least 10 fps.\n- The system can send the output through UDP/IP or as a ROS topic.\n\n\n## 3. Hardware Requirements\n### 3.1 PC\nA PC (Desktop/Laptop) is needed to run the program.\n\n### 3.2 Camera\nYou need a high-resolution HD (1080p) web camera  in order to use the vision version of this code. I suggest a Logitech C920/C922 as this gives the optimal image quality for localisation propose but still with a affordable price. \n\n### 3.3 Vision Tags\nTBD.\n\n### 3.4 Wireless Anchors\nTBD.\n\n### 3.5 Wireless Tags\nTBD.\n\n\n## 4. How to install and run\n(1) Set a virtual environment: \n\n`virtualenv -p python3 venv/`\n\n`source venv/bin/activate`\n\n(2) Upgrade PIP:\n\n`pip3 install --upgrade pip`\n\n(3) Install the requirements:\n\n`sudo pip3 install requirements.txt`\n\n\n## 5. Calibration\n### 5.1 Camera calibration\nTo estimate tag pose, you need to know the `intrinsic camera parameters`, which can be estimated using the `calibrate_camera.py` script.\nYou also need to know the `tag size` in order to scale the estimated translation vectors correctly.\n\n### 5.2 Environment calibration\nYou need to calibrate the environment by giving the four corner points and their distance. You also need to assign the origin point (0,0).\n\n\n## 6. Credits\n- This project is built using [OpenCV 4](https://opencv.org/opencv-4-0/) and [Qt 5](https://www.qt.io/). \n- The Apriltag detection and pose estimation are based on: https://github.com/swatbotics/apriltag\n\n\n## 7. Contributors\n- [automaticdai](https://github.com/automaticdai)\n- [xinyu-xu-dev](https://github.com/xinyu-xu-dev)\n\n\n## License\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautomaticdai%2Fyfips-indoor-positioning-system","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fautomaticdai%2Fyfips-indoor-positioning-system","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fautomaticdai%2Fyfips-indoor-positioning-system/lists"}