Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial skeleton #1

Merged
merged 8 commits into from
Mar 6, 2023
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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/
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
64 changes: 64 additions & 0 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
[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
pptree =
pptree
S-Dafarra marked this conversation as resolved.
Show resolved Hide resolved
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.