panda-python 0.5.0__tar.gz → 0.5.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- panda-python-0.5.2/.github/workflows/docs.yml +32 -0
- panda-python-0.5.2/.github/workflows/release.yml +99 -0
- panda-python-0.5.2/.github/workflows/test.yml +15 -0
- panda-python-0.5.2/.github/workflows/test_all.yml +16 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/CMakeLists.txt +3 -3
- {panda-python-0.5.0 → panda-python-0.5.2}/PKG-INFO +47 -6
- panda-python-0.5.2/README.md +52 -0
- panda-python-0.5.2/bin/before_install_ubuntu.sh +20 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/bin/build_all.sh +5 -1
- {panda-python-0.5.0 → panda-python-0.5.2}/docs/conf.py +1 -1
- {panda-python-0.5.0 → panda-python-0.5.2}/pyproject.toml +9 -4
- {panda-python-0.5.0 → panda-python-0.5.2}/src/panda_py/__init__.py +1 -1
- {panda-python-0.5.0 → panda-python-0.5.2}/src/panda_py/_core/__init__.pyi +5 -0
- panda-python-0.5.0/.github/workflows/build.yml +0 -82
- panda-python-0.5.0/README.md +0 -15
- {panda-python-0.5.0 → panda-python-0.5.2}/.gitignore +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/.pylintrc +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/.vscode/c_cpp_properties.json +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/.vscode/generate_docs_api.sh +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/.vscode/settings.json +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/.vscode/tasks.json +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/LICENSE +0 -0
- /panda-python-0.5.0/bin/before_install.sh → /panda-python-0.5.2/bin/before_install_centos.sh +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/docs/Makefile +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/docs/index.rst +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/docs/make.bat +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/docs/panda_py.cli.rst +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/docs/panda_py.constants.rst +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/docs/panda_py.controllers.rst +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/docs/panda_py.libfranka.rst +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/docs/panda_py.motion.rst +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/docs/panda_py.rst +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/examples/cartesian_impedance.py +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/examples/communication_test.py +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/examples/mmc.py +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/examples/notebooks/benchmark.ipynb +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/examples/notebooks/motion.ipynb +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/examples/notebooks/paper.ipynb +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/constants.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/controllers/applied_force.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/controllers/applied_torque.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/controllers/cartesian_impedance.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/controllers/controller.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/controllers/force.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/controllers/integrated_velocity.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/controllers/joint_limits/virtual_wall.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/controllers/joint_limits/virtual_wall_controller.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/controllers/joint_position.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/controllers/trajectory.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/kinematics/fk.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/kinematics/ik.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/motion/generators.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/motion/time_optimal/path.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/motion/time_optimal/trajectory.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/panda.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/include/utils.h +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/logo.jpg +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/_core.cpp +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/controllers/applied_force.cpp +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/controllers/applied_torque.cpp +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/controllers/cartesian_impedance.cpp +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/controllers/force.cpp +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/controllers/integrated_velocity.cpp +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/controllers/joint_limits/virtual_wall.cpp +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/controllers/joint_position.cpp +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/controllers/trajectory.cpp +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/libfranka.cpp +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/motion/generators.cpp +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/motion/time_optimal/path.cpp +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/motion/time_optimal/trajectory.cpp +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/panda.cpp +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/panda_py/__init__.pyi +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/panda_py/cli.py +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/panda_py/constants.py +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/panda_py/controllers.py +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/panda_py/libfranka/__init__.pyi +0 -0
- {panda-python-0.5.0 → panda-python-0.5.2}/src/panda_py/motion.py +0 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
name: Build and deploy documentation
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: write
|
|
9
|
+
id-token: write
|
|
10
|
+
pages: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v3
|
|
17
|
+
- uses: actions/setup-python@v3
|
|
18
|
+
- name: Install prerequisites
|
|
19
|
+
run: ./bin/before_install_ubuntu.sh
|
|
20
|
+
- name: Build wheel
|
|
21
|
+
run: pip install .[docs]
|
|
22
|
+
- name: Build documentation
|
|
23
|
+
run: cd docs && make html
|
|
24
|
+
- name: Setup Pages
|
|
25
|
+
uses: actions/configure-pages@v3
|
|
26
|
+
- name: Upload artifact
|
|
27
|
+
uses: actions/upload-pages-artifact@v2
|
|
28
|
+
with:
|
|
29
|
+
path: ./docs/_build/html
|
|
30
|
+
- name: Deploy to GitHub Pages
|
|
31
|
+
id: deployment
|
|
32
|
+
uses: actions/deploy-pages@v2
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
name: Build and deploy all variants
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
env:
|
|
8
|
+
VERSION: 0.5.2
|
|
9
|
+
|
|
10
|
+
permissions: write-all
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build_wheels:
|
|
14
|
+
name: Build all wheels with cibuildwheel
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v3
|
|
18
|
+
- uses: actions/setup-python@v3
|
|
19
|
+
- name: Install cibuildwheel
|
|
20
|
+
run: python -m pip install cibuildwheel==2.12.0
|
|
21
|
+
- name: Build all wheels
|
|
22
|
+
run: ./bin/build_all.sh
|
|
23
|
+
- uses: actions/upload-artifact@v3
|
|
24
|
+
with:
|
|
25
|
+
path: ./dist/*.whl
|
|
26
|
+
name: dist
|
|
27
|
+
- uses: actions/upload-artifact@v3
|
|
28
|
+
with:
|
|
29
|
+
path: ./archive/*.zip
|
|
30
|
+
name: archive
|
|
31
|
+
|
|
32
|
+
build_sdist:
|
|
33
|
+
name: Build source distribution
|
|
34
|
+
runs-on: ubuntu-latest
|
|
35
|
+
steps:
|
|
36
|
+
- uses: actions/checkout@v3
|
|
37
|
+
- uses: actions/setup-python@v3
|
|
38
|
+
- name: Build sdist
|
|
39
|
+
run: pipx run build --sdist
|
|
40
|
+
- uses: actions/upload-artifact@v3
|
|
41
|
+
with:
|
|
42
|
+
path: dist/*.tar.gz
|
|
43
|
+
name: dist
|
|
44
|
+
|
|
45
|
+
upload_pypi:
|
|
46
|
+
name: "Upload wheels to pypi"
|
|
47
|
+
needs: [build_wheels, build_sdist]
|
|
48
|
+
runs-on: ubuntu-latest
|
|
49
|
+
steps:
|
|
50
|
+
- uses: actions/download-artifact@v3
|
|
51
|
+
with:
|
|
52
|
+
name: dist
|
|
53
|
+
path: dist
|
|
54
|
+
- uses: pypa/gh-action-pypi-publish@v1.5.0
|
|
55
|
+
with:
|
|
56
|
+
user: __token__
|
|
57
|
+
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
58
|
+
|
|
59
|
+
upload_assets:
|
|
60
|
+
name: "Upload release assets"
|
|
61
|
+
needs: [build_wheels, build_sdist]
|
|
62
|
+
runs-on: ubuntu-latest
|
|
63
|
+
steps:
|
|
64
|
+
- uses: actions/download-artifact@v3
|
|
65
|
+
with:
|
|
66
|
+
name: archive
|
|
67
|
+
path: archive
|
|
68
|
+
- uses: actions/upload-release-asset@v1
|
|
69
|
+
with:
|
|
70
|
+
upload_url: ${{ github.event.release.upload_url }}
|
|
71
|
+
asset_path: ./archive/panda_py_${{ env.VERSION }}_libfranka_0.7.1.zip
|
|
72
|
+
asset_name: panda_py_${{ env.VERSION }}_libfranka_0.7.1.zip
|
|
73
|
+
asset_content_type: application/zip
|
|
74
|
+
env:
|
|
75
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
76
|
+
- uses: actions/upload-release-asset@v1
|
|
77
|
+
with:
|
|
78
|
+
upload_url: ${{ github.event.release.upload_url }}
|
|
79
|
+
asset_path: ./archive/panda_py_${{ env.VERSION }}_libfranka_0.8.0.zip
|
|
80
|
+
asset_name: panda_py_${{ env.VERSION }}_libfranka_0.8.0.zip
|
|
81
|
+
asset_content_type: application/zip
|
|
82
|
+
env:
|
|
83
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
84
|
+
- uses: actions/upload-release-asset@v1
|
|
85
|
+
with:
|
|
86
|
+
upload_url: ${{ github.event.release.upload_url }}
|
|
87
|
+
asset_path: ./archive/panda_py_${{ env.VERSION }}_libfranka_0.9.2.zip
|
|
88
|
+
asset_name: panda_py_${{ env.VERSION }}_libfranka_0.9.2.zip
|
|
89
|
+
asset_content_type: application/zip
|
|
90
|
+
env:
|
|
91
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
92
|
+
- uses: actions/upload-release-asset@v1
|
|
93
|
+
with:
|
|
94
|
+
upload_url: ${{ github.event.release.upload_url }}
|
|
95
|
+
asset_path: ./archive/panda_py_${{ env.VERSION }}_libfranka_0.10.0.zip
|
|
96
|
+
asset_name: panda_py_${{ env.VERSION }}_libfranka_0.10.0.zip
|
|
97
|
+
asset_content_type: application/zip
|
|
98
|
+
env:
|
|
99
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
name: Build and test
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
build:
|
|
8
|
+
runs-on: ubuntu-latest
|
|
9
|
+
steps:
|
|
10
|
+
- uses: actions/checkout@v3
|
|
11
|
+
- uses: actions/setup-python@v3
|
|
12
|
+
- name: Install prerequisites
|
|
13
|
+
run: ./bin/before_install_ubuntu.sh
|
|
14
|
+
- name: Build wheel
|
|
15
|
+
run: pip install .
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
name: Build and test all variants
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
|
|
6
|
+
jobs:
|
|
7
|
+
build_wheels:
|
|
8
|
+
name: Build all wheels with cibuildwheel
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
steps:
|
|
11
|
+
- uses: actions/checkout@v3
|
|
12
|
+
- uses: actions/setup-python@v3
|
|
13
|
+
- name: Install cibuildwheel
|
|
14
|
+
run: python -m pip install cibuildwheel==2.12.0
|
|
15
|
+
- name: Build all wheels
|
|
16
|
+
run: ./bin/build_all.sh
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
cmake_minimum_required(VERSION 3.15...3.25)
|
|
2
2
|
project(
|
|
3
|
-
"
|
|
3
|
+
"panda_py"
|
|
4
4
|
LANGUAGES CXX)
|
|
5
5
|
# VERSION "${SKBUILD_PROJECT_VERSION}")
|
|
6
6
|
|
|
@@ -48,7 +48,7 @@ target_include_directories(_core SYSTEM PUBLIC
|
|
|
48
48
|
#target_compile_definitions(_core
|
|
49
49
|
# PRIVATE VERSION_INFO=${PROJECT_VERSION})
|
|
50
50
|
|
|
51
|
-
install(TARGETS _core LIBRARY DESTINATION
|
|
51
|
+
install(TARGETS _core LIBRARY DESTINATION panda_py)
|
|
52
52
|
|
|
53
53
|
## libfranka module
|
|
54
54
|
pybind11_add_module(libfranka
|
|
@@ -65,4 +65,4 @@ target_include_directories(libfranka SYSTEM PUBLIC
|
|
|
65
65
|
#target_compile_definitions(libfranka
|
|
66
66
|
# PRIVATE VERSION_INFO=${PROJECT_VERSION})
|
|
67
67
|
|
|
68
|
-
install(TARGETS libfranka LIBRARY DESTINATION
|
|
68
|
+
install(TARGETS libfranka LIBRARY DESTINATION panda_py)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: panda-python
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.2
|
|
4
4
|
Summary: Python bindings for the Panda
|
|
5
5
|
Keywords: python real-time control robot franka emika
|
|
6
6
|
Author-Email: Jean Elsner <jean.elsner@tum.de>
|
|
@@ -223,21 +223,62 @@ Requires-Dist: matplotlib; extra == "examples"
|
|
|
223
223
|
Requires-Dist: spatialmath; extra == "examples"
|
|
224
224
|
Requires-Dist: ansitable; extra == "examples"
|
|
225
225
|
Requires-Dist: qpsolvers; extra == "examples"
|
|
226
|
+
Requires-Dist: furo; extra == "docs"
|
|
227
|
+
Requires-Dist: sphinx-reredirects; extra == "docs"
|
|
228
|
+
Requires-Dist: sphinx; extra == "docs"
|
|
226
229
|
Provides-Extra: examples
|
|
230
|
+
Provides-Extra: docs
|
|
227
231
|
Description-Content-Type: text/markdown
|
|
228
232
|
|
|
229
233
|
# panda-py
|
|
230
|
-
|
|
234
|
+
|
|
235
|
+
> **Info**
|
|
236
|
+
>
|
|
237
|
+
> Please consider this a work in progress. Documentation, continuous integration pipeline and a companion paper are currently being prepared.
|
|
238
|
+
|
|
239
|
+

|
|
231
240
|
|
|
232
241
|
[](https://github.com/JeanElsner/panda-py/actions/workflows/build.yml)
|
|
233
242
|
[](https://www.apache.org/licenses/LICENSE-2.0)
|
|
234
|
-
[](https://pypi.org/project/panda-python/)
|
|
235
244
|

|
|
245
|
+
[](https://jeanelsner.github.io/panda-py/)
|
|
236
246
|
|
|
237
247
|
Finally, Python bindings for the Panda. These will increase your productivity by 1000%, guaranteed[^1]!
|
|
238
248
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
249
|
+
## Getting started
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
## Install
|
|
254
|
+
|
|
255
|
+
```
|
|
256
|
+
pip install panda-python
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
This will install panda-py and all its requirements. The pip version ships with libfranka 0.9.2, the newest version for the Franka Emika Robot. Please refer to the section below if you use an older system version or the more recent Franka Research 3 robot.
|
|
260
|
+
|
|
261
|
+
## libfranka Version
|
|
262
|
+
|
|
263
|
+
There are currently two robot models available from Franka Emika: the Franka Emika Robot (FER, formerly known as Panda) and the Franka Research 3 (FR3). Depending on the installed firmware, the FER supports version <=0.9 while the FR3 requires version >=0.10. For details, refer to [this](https://frankaemika.github.io/docs/compatibility.html) compatibility matrix. If you need a libfranka version different from the default 0.9.2, download the respective zip archive from the [release page](https://github.com/JeanElsner/panda-py/releases). Extract the archive and install the wheel for your Python version with pip, e.g., run
|
|
264
|
+
```
|
|
265
|
+
pip install panda_python-*libfranka.0.7.1-cp310*.whl
|
|
266
|
+
```
|
|
267
|
+
to install the binary wheel for libfranka 0.7.1 and Python 3.10.
|
|
268
|
+
|
|
269
|
+
# Citation
|
|
270
|
+
|
|
271
|
+
If you use panda-py in published research, please consider citing the [companion paper](https://arxiv.org/abs/2307.07633).
|
|
272
|
+
|
|
273
|
+
```
|
|
274
|
+
@misc{elsner2023taming,
|
|
275
|
+
title={Taming the Panda with Python: A Powerful Duo for Seamless Robotics Programming and Integration},
|
|
276
|
+
author={Jean Elsner},
|
|
277
|
+
year={2023},
|
|
278
|
+
eprint={2307.07633},
|
|
279
|
+
archivePrefix={arXiv},
|
|
280
|
+
primaryClass={cs.RO}
|
|
281
|
+
}
|
|
282
|
+
```
|
|
242
283
|
|
|
243
284
|
[^1]: Not actually guaranteed. Based on a sample size of one.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# panda-py
|
|
2
|
+
|
|
3
|
+
> **Info**
|
|
4
|
+
>
|
|
5
|
+
> Please consider this a work in progress. Documentation, continuous integration pipeline and a companion paper are currently being prepared.
|
|
6
|
+
|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
[](https://github.com/JeanElsner/panda-py/actions/workflows/build.yml)
|
|
10
|
+
[](https://www.apache.org/licenses/LICENSE-2.0)
|
|
11
|
+
[](https://pypi.org/project/panda-python/)
|
|
12
|
+

|
|
13
|
+
[](https://jeanelsner.github.io/panda-py/)
|
|
14
|
+
|
|
15
|
+
Finally, Python bindings for the Panda. These will increase your productivity by 1000%, guaranteed[^1]!
|
|
16
|
+
|
|
17
|
+
## Getting started
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
## Install
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
pip install panda-python
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
This will install panda-py and all its requirements. The pip version ships with libfranka 0.9.2, the newest version for the Franka Emika Robot. Please refer to the section below if you use an older system version or the more recent Franka Research 3 robot.
|
|
28
|
+
|
|
29
|
+
## libfranka Version
|
|
30
|
+
|
|
31
|
+
There are currently two robot models available from Franka Emika: the Franka Emika Robot (FER, formerly known as Panda) and the Franka Research 3 (FR3). Depending on the installed firmware, the FER supports version <=0.9 while the FR3 requires version >=0.10. For details, refer to [this](https://frankaemika.github.io/docs/compatibility.html) compatibility matrix. If you need a libfranka version different from the default 0.9.2, download the respective zip archive from the [release page](https://github.com/JeanElsner/panda-py/releases). Extract the archive and install the wheel for your Python version with pip, e.g., run
|
|
32
|
+
```
|
|
33
|
+
pip install panda_python-*libfranka.0.7.1-cp310*.whl
|
|
34
|
+
```
|
|
35
|
+
to install the binary wheel for libfranka 0.7.1 and Python 3.10.
|
|
36
|
+
|
|
37
|
+
# Citation
|
|
38
|
+
|
|
39
|
+
If you use panda-py in published research, please consider citing the [companion paper](https://arxiv.org/abs/2307.07633).
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
@misc{elsner2023taming,
|
|
43
|
+
title={Taming the Panda with Python: A Powerful Duo for Seamless Robotics Programming and Integration},
|
|
44
|
+
author={Jean Elsner},
|
|
45
|
+
year={2023},
|
|
46
|
+
eprint={2307.07633},
|
|
47
|
+
archivePrefix={arXiv},
|
|
48
|
+
primaryClass={cs.RO}
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
[^1]: Not actually guaranteed. Based on a sample size of one.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
sudo apt install build-essential cmake git libpoco-dev libeigen3-dev
|
|
4
|
+
|
|
5
|
+
# For legacy versions, use my patched repository
|
|
6
|
+
repo="https://github.com/frankaemika/libfranka.git"
|
|
7
|
+
if [[ "$LIBFRANKA_VER" == "0.7.1" || "$LIBFRANKA_VER" == "0.8.0" ]]; then
|
|
8
|
+
repo="https://github.com/JeanElsner/libfranka.git"
|
|
9
|
+
fi
|
|
10
|
+
|
|
11
|
+
sudo apt remove "*libfranka*"
|
|
12
|
+
git clone --recursive $repo
|
|
13
|
+
cd libfranka
|
|
14
|
+
git checkout $LIBFRANKA_VER
|
|
15
|
+
git submodule update
|
|
16
|
+
mkdir build && cd build
|
|
17
|
+
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -DBUILD_EXAMPLES=OFF ..
|
|
18
|
+
cmake --build .
|
|
19
|
+
cpack -G DEB
|
|
20
|
+
sudo dpkg -i libfranka*.deb
|
|
@@ -36,13 +36,17 @@ with open('$toml', 'w') as f:
|
|
|
36
36
|
END
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
+
mkdir $root/archive
|
|
40
|
+
|
|
39
41
|
# Build wheels for common libfranka versions
|
|
40
42
|
libfranka=("0.7.1" "0.8.0" "0.9.2" "0.10.0")
|
|
41
43
|
for value in "${libfranka[@]}"; do
|
|
42
44
|
echo "Changing libfranka version in pyproject.toml to: $value"
|
|
43
45
|
change_version "$version+libfranka-$value" "LIBFRANKA_VER=$value"
|
|
44
46
|
export LIBFRANKA_VER=$value
|
|
45
|
-
|
|
47
|
+
archive=panda_py_${version}_libfranka_${value}
|
|
48
|
+
python -m cibuildwheel --output-dir $root/$archive $root
|
|
49
|
+
zip -j $root/archive/$archive.zip $root/$archive/*.whl
|
|
46
50
|
done
|
|
47
51
|
|
|
48
52
|
# Change back to default version
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
project = 'panda-py'
|
|
10
10
|
copyright = '2023, Jean Elsner'
|
|
11
11
|
author = 'Jean Elsner'
|
|
12
|
-
release = '0.5.
|
|
12
|
+
release = '0.5.2'
|
|
13
13
|
|
|
14
14
|
# -- General configuration ---------------------------------------------------
|
|
15
15
|
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
|
|
@@ -7,7 +7,7 @@ name = "panda-python"
|
|
|
7
7
|
description = "Python bindings for the Panda"
|
|
8
8
|
requires-python = ">=3.7"
|
|
9
9
|
dependencies = ["websockets>=11.0", "requests", "numpy"]
|
|
10
|
-
version = "0.5.
|
|
10
|
+
version = "0.5.2"
|
|
11
11
|
authors = [
|
|
12
12
|
{ name = "Jean Elsner", email = "jean.elsner@tum.de" },
|
|
13
13
|
]
|
|
@@ -34,6 +34,11 @@ examples = [
|
|
|
34
34
|
"ansitable",
|
|
35
35
|
"qpsolvers",
|
|
36
36
|
]
|
|
37
|
+
docs = [
|
|
38
|
+
"furo",
|
|
39
|
+
"sphinx-reredirects",
|
|
40
|
+
"sphinx",
|
|
41
|
+
]
|
|
37
42
|
|
|
38
43
|
[project.scripts]
|
|
39
44
|
panda-lock = "panda_py.cli:lock"
|
|
@@ -47,11 +52,11 @@ skip = [ "pp*", "*musllinux*",]
|
|
|
47
52
|
environment = "LIBFRANKA_VER=0.9.2"
|
|
48
53
|
|
|
49
54
|
[tool.cibuildwheel.linux]
|
|
50
|
-
before-all = [ "./bin/
|
|
55
|
+
before-all = [ "./bin/before_install_centos.sh",]
|
|
51
56
|
archs = [ "x86_64",]
|
|
52
57
|
|
|
53
58
|
[tool.scikit-build.cmake]
|
|
54
59
|
build-type = "Release"
|
|
55
60
|
|
|
56
|
-
[tool.scikit-build.
|
|
57
|
-
|
|
61
|
+
[tool.scikit-build.wheel]
|
|
62
|
+
packages = ["src/panda_py"]
|
|
@@ -193,6 +193,11 @@ class Panda():
|
|
|
193
193
|
"""
|
|
194
194
|
:type: str
|
|
195
195
|
"""
|
|
196
|
+
@property
|
|
197
|
+
def q(self) -> numpy.ndarray[numpy.float64, _Shape[7, 1]]:
|
|
198
|
+
"""
|
|
199
|
+
:type: numpy.ndarray[numpy.float64, _Shape[7, 1]]
|
|
200
|
+
"""
|
|
196
201
|
pass
|
|
197
202
|
class PandaContext():
|
|
198
203
|
def __enter__(self) -> PandaContext: ...
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
name: build
|
|
2
|
-
|
|
3
|
-
permissions:
|
|
4
|
-
contents: read
|
|
5
|
-
|
|
6
|
-
on:
|
|
7
|
-
push:
|
|
8
|
-
branches: [main]
|
|
9
|
-
pull_request:
|
|
10
|
-
branches: [main]
|
|
11
|
-
release:
|
|
12
|
-
types: [published]
|
|
13
|
-
|
|
14
|
-
jobs:
|
|
15
|
-
build_wheels:
|
|
16
|
-
name: Build wheels on ubuntu-latest
|
|
17
|
-
runs-on: ubuntu-latest
|
|
18
|
-
steps:
|
|
19
|
-
- uses: actions/checkout@v3
|
|
20
|
-
- uses: actions/setup-python@v3
|
|
21
|
-
- name: Install cibuildwheel
|
|
22
|
-
run: python -m pip install cibuildwheel==2.12.0
|
|
23
|
-
- name: Build wheels
|
|
24
|
-
run: ./bin/build_all.sh
|
|
25
|
-
- uses: actions/upload-artifact@v3
|
|
26
|
-
with:
|
|
27
|
-
path: ./wheelhouse/*.whl
|
|
28
|
-
name: wheelhouse
|
|
29
|
-
- uses: actions/upload-artifact@v3
|
|
30
|
-
with:
|
|
31
|
-
path: ./dist/*.whl
|
|
32
|
-
name: dist
|
|
33
|
-
|
|
34
|
-
build_sdist:
|
|
35
|
-
name: Build source distribution
|
|
36
|
-
runs-on: ubuntu-latest
|
|
37
|
-
steps:
|
|
38
|
-
- uses: actions/checkout@v3
|
|
39
|
-
- uses: actions/setup-python@v3
|
|
40
|
-
- name: Build sdist
|
|
41
|
-
run: pipx run build --sdist
|
|
42
|
-
- uses: actions/upload-artifact@v3
|
|
43
|
-
with:
|
|
44
|
-
path: dist/*.tar.gz
|
|
45
|
-
name: dist
|
|
46
|
-
|
|
47
|
-
upload_pypi:
|
|
48
|
-
needs: [build_wheels, build_sdist]
|
|
49
|
-
runs-on: ubuntu-latest
|
|
50
|
-
if: github.event_name == 'release' && github.event.action == 'published'
|
|
51
|
-
steps:
|
|
52
|
-
- uses: actions/download-artifact@v3
|
|
53
|
-
with:
|
|
54
|
-
name: dist
|
|
55
|
-
path: dist
|
|
56
|
-
- uses: pypa/gh-action-pypi-publish@v1.5.0
|
|
57
|
-
with:
|
|
58
|
-
user: __token__
|
|
59
|
-
password: ${{ secrets.PYPI_API_TOKEN }}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
- uses: actions/download-artifact@v3
|
|
63
|
-
with:
|
|
64
|
-
name: wheelhouse
|
|
65
|
-
path: wheelhouse
|
|
66
|
-
|
|
67
|
-
- name: Upload assets
|
|
68
|
-
id: upload_assets
|
|
69
|
-
uses: actions/upload-release-asset@v1
|
|
70
|
-
with:
|
|
71
|
-
upload_url: ${{ github.event.release.upload_url }}
|
|
72
|
-
asset_path: ./wheelhouse/*.whl
|
|
73
|
-
asset_name: ${{ env.UPLOAD_FILE_NAME }}
|
|
74
|
-
|
|
75
|
-
- name: Set file name for each asset
|
|
76
|
-
id: set_file_name
|
|
77
|
-
run: |
|
|
78
|
-
echo "::set-env name=UPLOAD_FILE_NAME::$(basename ${{ steps.upload_assets.outputs.asset_path }})"
|
|
79
|
-
|
|
80
|
-
- name: List uploaded assets
|
|
81
|
-
run: |
|
|
82
|
-
echo "Uploaded assets: ${{ steps.upload_assets.outputs.asset_path }}"
|
panda-python-0.5.0/README.md
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# panda-py
|
|
2
|
-

|
|
3
|
-
|
|
4
|
-
[](https://github.com/JeanElsner/panda-py/actions/workflows/build.yml)
|
|
5
|
-
[](https://www.apache.org/licenses/LICENSE-2.0)
|
|
6
|
-
[](https://pypi.org/project/panda-python/)
|
|
7
|
-

|
|
8
|
-
|
|
9
|
-
Finally, Python bindings for the Panda. These will increase your productivity by 1000%, guaranteed[^1]!
|
|
10
|
-
|
|
11
|
-
> **Info**
|
|
12
|
-
>
|
|
13
|
-
> Please consider this a work in progress. Documentation, continuous integration pipeline and a companion paper are currently being prepared.
|
|
14
|
-
|
|
15
|
-
[^1]: Not actually guaranteed. Based on a sample size of one.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/panda-python-0.5.0/bin/before_install.sh → /panda-python-0.5.2/bin/before_install_centos.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{panda-python-0.5.0 → panda-python-0.5.2}/include/controllers/joint_limits/virtual_wall_controller.h
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|