{"id":29883924,"url":"https://github.com/junhyeokahn/pypnc","last_synced_at":"2025-07-31T14:23:28.929Z","repository":{"id":62291124,"uuid":"296159604","full_name":"junhyeokahn/PyPnC","owner":"junhyeokahn","description":"Python Implementation of Planning and Control","archived":false,"fork":false,"pushed_at":"2024-02-27T19:52:41.000Z","size":53572,"stargazers_count":41,"open_issues_count":0,"forks_count":14,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-02-27T20:49:13.797Z","etag":null,"topics":["control","locomotion","machine-learning","optimization","planning","robotics","simulation","walking-pattern-generation","whole-body-control"],"latest_commit_sha":null,"homepage":"","language":"C++","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/junhyeokahn.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}},"created_at":"2020-09-16T22:18:44.000Z","updated_at":"2023-11-26T03:10:00.000Z","dependencies_parsed_at":"2024-02-14T02:48:00.014Z","dependency_job_id":null,"html_url":"https://github.com/junhyeokahn/PyPnC","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/junhyeokahn/PyPnC","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junhyeokahn%2FPyPnC","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junhyeokahn%2FPyPnC/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junhyeokahn%2FPyPnC/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junhyeokahn%2FPyPnC/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/junhyeokahn","download_url":"https://codeload.github.com/junhyeokahn/PyPnC/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/junhyeokahn%2FPyPnC/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268055769,"owners_count":24188500,"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-07-31T02:00:08.723Z","response_time":66,"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":["control","locomotion","machine-learning","optimization","planning","robotics","simulation","walking-pattern-generation","whole-body-control"],"created_at":"2025-07-31T14:23:27.791Z","updated_at":"2025-07-31T14:23:28.912Z","avatar_url":"https://github.com/junhyeokahn.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PyPnC\nPyPnC is a python library designed for generating trajectories for a robot\nsystem and stabilizing the system over the trajectories.\n\n## Installation\n- Install [anaconda](https://docs.anaconda.com/anaconda/install/)\n- Clone the repository:\u003cbr/\u003e\n```$ git clone https://github.com/junhyeokahn/PyPnC.git```\n- Create a virtual environment and install dependancies:\u003cbr/\u003e\n```$ conda env create -f pypnc.yml```\n- Activate the environment:\u003cbr/\u003e\n```$ conda activate pypnc```\n\n## Running Examples\n### Three Link Manipulator Control with Operational Space Control\n- Run the code:\u003cbr/\u003e\n```$ python simulator/pybullet/manipulator_main.py```\n### Atlas Walking Control with DCM planning and IHWBC\n- Run the code:\u003cbr/\u003e\n```$ python simulator/pybullet/atlas_dynamics_main.py```\n- Send walking commands through keystroke interface. For example, press ```8``` for forward walking, press ```5``` for in-place walking, press ```4``` for leftward walking, press ```6``` for rightward walking, press ```2``` for backward walking, press ```7``` for ccw turning, and press ```9``` for cw turning.\n- Plot the results:\u003cbr/\u003e\n```$ python plot/atlas/plot_task.py --file=data/history.pkl```\n### Atlas Locomotion Planning with TOWR+\n- For TOWR+, install additional dependancy [ifopt](https://github.com/ethz-adrl/ifopt)\n- Train a Composite Rigid Body Inertia network and generate files for optimization:\u003cbr/\u003e\n```$ python simulator/pybullet/atlas_crbi_trainer.py``` and press ```5``` for training\n- Run ```TOWR+```:\u003cbr/\u003e\n```$ mkdir build \u0026\u0026 cd build \u0026\u0026 cmake .. \u0026\u0026 make -j6 \u0026\u0026 ./atlas_forward_walk```\n- Plot the optimized trajectory:\u003cbr/\u003e\n```$ python plot/plot_towr_plus_trajectory.py --file=data/atlas_forward_walk.yaml --crbi_model_path=data/tf_model/atlas_crbi```\n- Replay the optimized trajectory with the robot:\u003cbr/\u003e\n```$ python simulator/pybullet/atlas_kinematics_main.py --file=data/atlas_forward_walk.yaml```\n\n## Citation\n```\n@article{10.3389/frobt.2021.712239,\n\tauthor = {Ahn, Junhyeok and Jorgensen, Steven Jens and Bang, Seung Hyeon and Sentis, Luis},\n\tjournal = {Frontiers in Robotics and AI},\n\tpages = {257},\n\ttitle = {Versatile Locomotion Planning and Control for Humanoid Robots},\n\tvolume = {8},\n\tyear = {2021}}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunhyeokahn%2Fpypnc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjunhyeokahn%2Fpypnc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjunhyeokahn%2Fpypnc/lists"}