{"id":24186552,"url":"https://github.com/kylesayrs/pyslam-d","last_synced_at":"2025-08-08T23:30:29.259Z","repository":{"id":200912885,"uuid":"706513690","full_name":"kylesayrs/pySLAM-D","owner":"kylesayrs","description":"pySLAM-D is a real-time SLAM algorithm for UAV aerial stitching. Includes additional features and refactored code inspired by BU's implementation https://github.com/armandok/pySLAM-D","archived":false,"fork":false,"pushed_at":"2024-05-23T04:33:43.000Z","size":8684,"stargazers_count":5,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-13T12:46:34.970Z","etag":null,"topics":["computer-vision","gtsam","opencv","real-time","slam","stitching","uav","visual-odometry"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kylesayrs.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":"2023-10-18T05:23:08.000Z","updated_at":"2024-11-11T13:23:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"2f694dfa-06f0-4614-935c-40b406b3b308","html_url":"https://github.com/kylesayrs/pySLAM-D","commit_stats":{"total_commits":3,"total_committers":2,"mean_commits":1.5,"dds":"0.33333333333333337","last_synced_commit":"f52b85da7f806bd67cdb28635ff4f1b4f4c49120"},"previous_names":["kylesayrs/pyslam-d"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kylesayrs%2FpySLAM-D","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kylesayrs%2FpySLAM-D/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kylesayrs%2FpySLAM-D/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kylesayrs%2FpySLAM-D/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kylesayrs","download_url":"https://codeload.github.com/kylesayrs/pySLAM-D/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241596242,"owners_count":19988041,"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":["computer-vision","gtsam","opencv","real-time","slam","stitching","uav","visual-odometry"],"created_at":"2025-01-13T12:36:03.387Z","updated_at":"2025-03-03T01:42:18.463Z","avatar_url":"https://github.com/kylesayrs.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PySLAM-D #\nPySLAM-D is a UAV-tailored SLAM stitching inspired by [pySLAM-D](https://github.com/armandok/pySLAM-D) which was developed in partnership with GreenSight Agronomics. This implementation significantly increases the robustness and usability of the initial design, includes functional documentation, and implements additional matching options and parameters.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"assets/small_stitch.png\" alt=\"Example Stitching\" width=75%/\u003e\n\u003c/p\u003e\n\n## Technical explaination ##\nThe Pyslam-D live stitching algorithm works by generating a factor graph whose nodes are each camera’s pose in georeferenced 3D space and whose edges (factors) are the relative pose transformations from one node to another. During the optimization step, the nodes of the factor graph are optimized for spatial consistency, meaning that even noisy sensor measurements can still reinforce one another to produce a consistent estimation of camera poses.\n\nThe first factor type, odometry factors, are determined by performing visual odometry between neighboring images and using point cloud registration to estimate the pose transformation between the two images. These factors can be computationally expensive, but help neighboring images “mesh” with each other independently of instrument noise.\n\nThe second factor type, gps factors, help to determine the camera's absolute position. These factors are often noisy, but are valuable for compensating for bad odometry estimates. The error produced by GPS, unlike relative odometry error, is independent of flight duration, meaning that these factors prevent images from drifting away from their true, georeferenced positions over time.\n\nThe third factor type, attitude factors, incorporate attitude measurements from the drone when the picture was taken. These factors improve estimates of image rotation and can be used as a prior for the odometry area of overlap, making odometry matching faster and increasing robustness to low overlap and high attitude datasets.\n\nOne known bug is that this implementation projects images directly downwards from the camera position. Future work will project the image with respect to the orientation of the camera, therefore better supporting non-gimbaled payloads.\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"assets/full_stitch.png\" alt=\"Example Stitching\"/\u003e\n\u003c/p\u003e\n\n## Installation ##\n1. Install pyslamd\n```bash\ngit clone https://github.com/kylesayrs/pySLAM-D\npython3 -m pip install -e .\n```\n2. Install [GTSAM](https://gtsam.org)\n3. Install [TEASER-plusplus](https://github.com/MIT-SPARK/TEASER-plusplus)\n\nUse cmake .. -DENABLE_DIAGNOSTIC_PRINT=OFF to turn off debug messages for teaser\n\n## Usage ##\nEdit `src/pyslamd/Settings.py` to adjust stitching settings. In the future these\nsettings will be documented as script arguments\n\n```bash\npyslamd.stitch path/to/image/directory\n```\nImages must be geotagged with gps coordinates in order to georeference frame poses within a real world coordinate frame.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkylesayrs%2Fpyslam-d","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkylesayrs%2Fpyslam-d","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkylesayrs%2Fpyslam-d/lists"}