{"id":17485738,"url":"https://github.com/arlk/robot-trajectory-tracking","last_synced_at":"2025-04-22T15:25:37.214Z","repository":{"id":27758953,"uuid":"31247117","full_name":"arlk/robot-trajectory-tracking","owner":"arlk","description":"Path generation with a cleaner and more beautiful interface with Processing \u0026 Python","archived":false,"fork":false,"pushed_at":"2020-01-05T07:49:57.000Z","size":266037,"stargazers_count":11,"open_issues_count":0,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-29T16:23:28.745Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arlk.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}},"created_at":"2015-02-24T06:05:24.000Z","updated_at":"2022-09-13T01:12:52.000Z","dependencies_parsed_at":"2022-09-03T04:21:47.559Z","dependency_job_id":null,"html_url":"https://github.com/arlk/robot-trajectory-tracking","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arlk%2Frobot-trajectory-tracking","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arlk%2Frobot-trajectory-tracking/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arlk%2Frobot-trajectory-tracking/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arlk%2Frobot-trajectory-tracking/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arlk","download_url":"https://codeload.github.com/arlk/robot-trajectory-tracking/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250266018,"owners_count":21402215,"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":[],"created_at":"2024-10-19T02:08:37.958Z","updated_at":"2025-04-22T15:25:37.137Z","avatar_url":"https://github.com/arlk.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Robot trajectory tracking\n\n**User-defined path generation :** *COMPLETED*\n\n**L1 Navigation:** *COMPLETED*\n\n**Obstacle Avoidance:** *PENDING*\n\n### Path Generation:\nThis code provides a cleaner and more beautiful interface to work with than its MATLAB [equivalent](https://github.com/arunlakshmanan/path-generation). It is written in the [Python](http://py.processing.org/) and blended with [Processing](https://processing.org/), a development environment. It can be used in laboratories to define user-generated trajectories for individual robots. Implementation for swarm robots is still a work in progress.\n\nThis is currently on available to *Linux* (Debian) users - I am working on implementing this on other platforms including Windows. Before executing this program, you will need to download the Python module for Processing, which is avaiable in both a [32-bit](http://py.processing.org/processing.py-0202-linux32.tgz) and [64-bit](http://py.processing.org/processing.py-0202-linux64.tgz) versions.\n\nYou need to set the following environment variables before you run the script:\n```\nexport PATH=$PATH:/PATH/TO/REPOSITORY/robot-trajectory-tracking\nexport PATH=$PATH:/PATH/TO/PROCESSING/processing.py-xxxx-linuxvv\n```\n\nWrite these changes directly to `~/.bashrc` and restart the terminal or source bashrc.\n\nYou're all set! Once all your variables have been correctly defined, all you need to do is execute the run script.\n```\n./run.sh\n```\n`run.sh` is a bash script that executes the required files, so the user does not need to run each of the files seperately. But the user-defined variables will need to be changed in each python script.\n\n`udps.py` can simulate data instead of your mocap software, which is extremely useful if you need to debug your code before implementing them with real robots.\n\n`pathgen.py`:\nMuch like it couterpart this code assumes that you are receiving the following motion capture data via [UDP](https://wiki.python.org/moin/UdpCommunication#UDP_Communication):\n\u003e1. `x` coordinate location of the robot in meters.\n1. `y` coordinate location of the robot in meters.\n1. `yaw` or orientation of the robot in radians, using the standard convention.\n1. `robot id` specific for each robot.\n1. `status`: 1 if tracked or 0 if untracked.\n1. `frame` of the mocap data being sent.\n\nOf course, the communication protocol can be changed to allow more variable such as `z`, `pitch`,`roll` to be obtained as well.\n\nSpecifications of the motion capture environment - room sizes, robot dimensions and colors can be specified at the beginning of code. And other UI-related customizations such as grid spacing, font sizes, spline smoothness etc. can also be found in the code.\n\n**Functionality:**\n\n1\\. Real-time reproduction of the scene from the motion capture system:\n\n![Real-time](ReadMeVids/realtime.gif)\n\n2\\. Drawing a trajectory with the cursor with immediate [Catmull-Rom](https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Catmull.E2.80.93Rom_spline) spline interpolation.\n\n![Trajectory-drawing](ReadMeVids/drawtraj.gif)\n\n3\\. Clear trajectories whenever you need to and start again.\n\n**Output**: The trajectories generated are stored as a comma separated values in files, referenced by their `robot id`. \n\n###L1 Navigation:\n\n`multiL1.py` can control multiple robots and make them track their trajectories independently and simultaneously.\n\n**Videos:**\n1\\. Single robot following a user-defined path.\n[![L1-path-follow](http://img.youtube.com/vi/A6yXqAjve4w/0.jpg)](http://www.youtube.com/watch?v=A6yXqAjve4w)\n\n*Future work involves using these files for obstacle avoidance using L1 navigation.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farlk%2Frobot-trajectory-tracking","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farlk%2Frobot-trajectory-tracking","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farlk%2Frobot-trajectory-tracking/lists"}