Skip to content

Commit

Permalink
Initial skeleton (#1)
Browse files Browse the repository at this point in the history
* Updated README.md

* Added initial skeleton.

Inspired from https://github.com/ami-iit/rod

* Changed name and addressed reviews.

* Restore package action in CI/CD.

* Removed unnecessary python versions in CI/CD file.

* Renamed forgotten dir name.

* Update setup.cfg after review

Co-authored-by: Diego Ferigo <[email protected]>

* Added CITATIONS.bib file.

---------

Co-authored-by: Diego Ferigo <[email protected]>
  • Loading branch information
S-Dafarra and diegoferigo authored Mar 6, 2023
1 parent 7f4b4ce commit e34ff71
Show file tree
Hide file tree
Showing 9 changed files with 272 additions and 2 deletions.
81 changes: 81 additions & 0 deletions .github/workflows/ci_cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
name: Python CI/CD

on:
push:
pull_request:
release:
types:
- published

jobs:

package:
name: Package the project
runs-on: ubuntu-22.04

steps:

- uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.10"

- name: Install Python tools
run: pip install build twine

- name: Create distributions
run: python -m build -o dist/

- name: Inspect dist folder
run: ls -lah dist/

- name: Check wheel's abi and platform tags
run: test $(find dist/ -name *-none-any.whl | wc -l) -gt 0

- name: Run twine check
run: twine check dist/*

- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
path: dist/*
name: dist

test:
name: 'Python${{ matrix.python }}@${{ matrix.os }}'
needs: package
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
- macos-latest
- windows-latest
python:
- "3.10"
- "3.11"

steps:

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}

- name: Download Python packages
uses: actions/download-artifact@v3
with:
path: dist
name: dist

- name: Install wheel
shell: bash
run: pip install dist/*.whl

- name: Import the package
run: python -c "import hippopt"
53 changes: 53 additions & 0 deletions .github/workflows/style.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Code Style

on:
push:
branches: [ "**" ]
tags-ignore: [ "**" ]
pull_request:
workflow_dispatch:

jobs:

black:

name: black
runs-on: ubuntu-latest

steps:

- name: "🔀 Checkout repository"
uses: actions/checkout@v2

- name: '🐍 Initialize Python'
uses: actions/setup-python@v2
with:
python-version: "3.10"

- name: "📝 Black Code Formatter"
uses: psf/black@stable
with:
options: --check --diff --color

isort:

name: isort
runs-on: ubuntu-latest

steps:

- name: "🔀 Checkout repository"
uses: actions/checkout@v2

- name: '🐍 Initialize Python'
uses: actions/setup-python@v2
with:
python-version: "3.10"

# Workaround for https://github.com/isort/isort-action/issues/70
- run: pip install colorama

- name: "📝 isort"
uses: isort/isort-action@master
with:
configuration: --check --diff --color
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -127,3 +127,6 @@ dmypy.json

# Pyre type checker
.pyre/

# Pycharm files
.idea/
9 changes: 9 additions & 0 deletions CITATIONS.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
@ARTICLE{dafarra2022dcc,
author={Dafarra, Stefano and Romualdi, Giulio and Pucci, Daniele},
journal={IEEE Transactions on Robotics},
title={Dynamic Complementarity Conditions and Whole-Body Trajectory Optimization for Humanoid Robot Locomotion},
year={2022},
volume={38},
number={6},
pages={3414-3433},
doi={10.1109/TRO.2022.3183785}}
46 changes: 44 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,44 @@
# StepWise
A Python-based Trajectory Optimization Framework
# hippopt
### HIghly Pythonized Planning and OPTimization framework


hippopt is an open-source framework for generating whole-body trajectories for legged robots, with a focus on direct transcription of optimal control problems solved with multiple-shooting methods. The framework takes as input the robot model and generates optimized trajectories that include both kinematic and dynamic quantities.

## Features

- [ ] Direct transcription of optimal control problems with multiple-shooting methods
- [ ] Support for floating-base robots, including humanoids and quadrupeds
- [ ] Integration with CasADi library for efficient numerical optimization
- [ ] Generation of optimized trajectories that include both kinematic and dynamic quantities
- [ ] Extensive documentation and examples to help you get started

## Installation

TODO

## Citing this work

If you find the work useful, please consider citing:

```bib
@ARTICLE{dafarra2022dcc,
author={Dafarra, Stefano and Romualdi, Giulio and Pucci, Daniele},
journal={IEEE Transactions on Robotics},
title={Dynamic Complementarity Conditions and Whole-Body Trajectory Optimization for Humanoid Robot Locomotion},
year={2022},
volume={38},
number={6},
pages={3414-3433},
doi={10.1109/TRO.2022.3183785}}
```



## Maintainer

This repository is maintained by:

| | |
| :----------------------------------------------------------: | :--------------------------------------------------: |
| [<img src="https://github.com/S-Dafarra.png" width="40">](https://github.com/S-Dafarra) | [@S-Dafarra](https://github.com/S-Dafarra) |

17 changes: 17 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
[build-system]
requires = [
"wheel",
"setuptools>=45",
"setuptools_scm[toml]>=6.2",
]
build-backend = "setuptools.build_meta"

[tool.setuptools_scm]
local_scheme = "dirty-tag"

[tool.black]
line-length = 88

[tool.isort]
profile = "black"
multi_line_output = 3
62 changes: 62 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
[metadata]
name = hippopt
description = HIghly Pythonized Planning and OPTimization framework
long_description = file: README.md
long_description_content_type = text/markdown
author = Stefano Dafarra
author_email = [email protected]
license = BSD-2
license_files = LICENSE
platforms = any
url = https://github.com/ami-iit/hippopt

project_urls =
Changelog = https://github.com/ami-iit/hippopt/releases
Source = https://github.com/ami-iit/hippopt
Tracker = https://github.com/ami-iit/hippopt/issues

keywords =
trajectory
optimization
robots
humanoids
quadrupeds
kinematics
dynamics
contacts

classifiers =
Development Status :: 5 - Production/Stable
Framework :: Robot Framework
Intended Audience :: Science/Research
Intended Audience :: Developers
Intended Audience :: Education
License :: OSI Approved :: BSD License
Operating System :: OS Independent
Operating System :: POSIX :: Linux
Operating System :: MacOS
Operating System :: Microsoft :: Windows
Programming Language :: Python :: 3
Programming Language :: Python :: 3.10
Programming Language :: Python :: 3.11
Programming Language :: Python :: 3 :: Only
Programming Language :: Python :: Implementation :: CPython
Topic :: Games/Entertainment :: Simulation

[options]
zip_safe = False
packages = find:
package_dir =
=src
python_requires = >=3.10
install_requires =

[options.extras_require]
style =
black
isort
all =
%(style)s

[options.packages.find]
where = src
3 changes: 3 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import setuptools

setuptools.setup()
Empty file added src/hippopt/__init__.py
Empty file.

0 comments on commit e34ff71

Please sign in to comment.