{"id":24373768,"url":"https://github.com/jbschwartz/robotpy","last_synced_at":"2025-04-10T18:42:00.999Z","repository":{"id":37683348,"uuid":"170039567","full_name":"jbschwartz/robotpy","owner":"jbschwartz","description":"Robot Kinematics in Python","archived":false,"fork":false,"pushed_at":"2024-03-20T16:04:53.000Z","size":3527,"stargazers_count":9,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-24T16:21:53.320Z","etag":null,"topics":["dynamics","kinematics","opengl","python","robotics"],"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/jbschwartz.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":"2019-02-10T23:27:45.000Z","updated_at":"2024-11-14T09:48:59.000Z","dependencies_parsed_at":"2023-02-09T20:00:56.106Z","dependency_job_id":null,"html_url":"https://github.com/jbschwartz/robotpy","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/jbschwartz%2Frobotpy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbschwartz%2Frobotpy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbschwartz%2Frobotpy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbschwartz%2Frobotpy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jbschwartz","download_url":"https://codeload.github.com/jbschwartz/robotpy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248271909,"owners_count":21075800,"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":["dynamics","kinematics","opengl","python","robotics"],"created_at":"2025-01-19T05:12:35.109Z","updated_at":"2025-04-10T18:42:00.983Z","avatar_url":"https://github.com/jbschwartz.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Robotpy\n\n![Robotpy](http://schwartz.engineer/images/robotpy-2.gif)\n\nRobot kinematics (and eventually dynamics) written in Python 3.\n\n## Running\n\nInstall dependencies through `poetry`.\n\n```\npoetry install\npython -m robot\n```\n\n## Testing\n\n`python -m unittest`\n\n### Running a Single Test File\n\nFor example, to run only the TestIntersection test class:\n\n`python -m unittest -v test.spatial.test_intersection.TestIntersection`\n\n## Controls\n\nThe visualization contains a relatively feature-full, CAD style camera.\n\n### Shortcuts\n\nSee `robot/common/bindings.py` for all keyboard and mouse bindings.\n\n#### Mouse\n- Middle Mouse Drag: Orbit\n- \u003ckbd\u003eCtrl\u003c/kbd\u003e + Middle Mouse Drag: Track\n- \u003ckbd\u003eAlt\u003c/kbd\u003e + Middle Mouse Drag: Roll\n- \u003ckbd\u003eShift\u003c/kbd\u003e + Middle Mouse Drag: Scale\n#### Camera Movement\n- \u003ckbd\u003e←\u003c/kbd\u003e: Orbit Left\n- \u003ckbd\u003e→\u003c/kbd\u003e: Orbit Right\n- \u003ckbd\u003e↑\u003c/kbd\u003e: Orbit Up\n- \u003ckbd\u003e↓\u003c/kbd\u003e: Orbit Down\n- \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003e←\u003c/kbd\u003e: Track Right\n- \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003e→\u003c/kbd\u003e: Track Left\n- \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003e↑\u003c/kbd\u003e: Track Down\n- \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003e↓\u003c/kbd\u003e: Track Up\n- \u003ckbd\u003eAlt\u003c/kbd\u003e + \u003ckbd\u003e←\u003c/kbd\u003e: Roll Counter Clockwise\n- \u003ckbd\u003eAlt\u003c/kbd\u003e + \u003ckbd\u003e→\u003c/kbd\u003e: Roll Clockwise\n- \u003ckbd\u003eZ\u003c/kbd\u003e: Scale In\n- \u003ckbd\u003eShift\u003c/kbd\u003e + \u003ckbd\u003eZ\u003c/kbd\u003e: Scale Out\n#### Saved Views\n- \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003e1\u003c/kbd\u003e: Front View\n- \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003e2\u003c/kbd\u003e: Back View\n- \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003e3\u003c/kbd\u003e: Left View\n- \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003e4\u003c/kbd\u003e: Right View\n- \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003e5\u003c/kbd\u003e: Top View\n- \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003e6\u003c/kbd\u003e: Bottom View\n- \u003ckbd\u003eCtrl\u003c/kbd\u003e + \u003ckbd\u003e7\u003c/kbd\u003e: Isometric View\n#### Other\n- \u003ckbd\u003eSpace\u003c/kbd\u003e: Pause Animation\n- \u003ckbd\u003eF\u003c/kbd\u003e: Fit Scene\n- \u003ckbd\u003eO\u003c/kbd\u003e: Orbit Toggle (Free, Constrained)\n- \u003ckbd\u003eP\u003c/kbd\u003e: Projection Toggle (Orthographic, Perspective)\n\n### License\n\nThis project is licensed under the MIT License. Please see `LICENSE` for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbschwartz%2Frobotpy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjbschwartz%2Frobotpy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbschwartz%2Frobotpy/lists"}