pyroboplan 1.1.0__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.
Files changed (179) hide show
  1. pyroboplan-1.1.0/.github/workflows/format.yml +15 -0
  2. pyroboplan-1.1.0/.github/workflows/tests.yml +68 -0
  3. pyroboplan-1.1.0/.gitignore +7 -0
  4. pyroboplan-1.1.0/.pre-commit-config.yaml +68 -0
  5. pyroboplan-1.1.0/.readthedocs.yaml +36 -0
  6. pyroboplan-1.1.0/LICENSE +21 -0
  7. pyroboplan-1.1.0/PKG-INFO +84 -0
  8. pyroboplan-1.1.0/README.md +47 -0
  9. pyroboplan-1.1.0/docs/.gitignore +1 -0
  10. pyroboplan-1.1.0/docs/Makefile +20 -0
  11. pyroboplan-1.1.0/docs/generate_docs.bash +22 -0
  12. pyroboplan-1.1.0/docs/requirements.txt +2 -0
  13. pyroboplan-1.1.0/docs/source/_static/gifs/pyroboplan_cartesian_path.gif +0 -0
  14. pyroboplan-1.1.0/docs/source/_static/gifs/pyroboplan_rrt_traj.gif +0 -0
  15. pyroboplan-1.1.0/docs/source/_static/images/bidirectional_rrt_star.png +0 -0
  16. pyroboplan-1.1.0/docs/source/_static/images/cartesian_planning.png +0 -0
  17. pyroboplan-1.1.0/docs/source/_static/images/collision_checking.png +0 -0
  18. pyroboplan-1.1.0/docs/source/_static/images/inverse_kinematics.png +0 -0
  19. pyroboplan-1.1.0/docs/source/_static/images/meshcat_visualization.png +0 -0
  20. pyroboplan-1.1.0/docs/source/_static/images/prm_graph.png +0 -0
  21. pyroboplan-1.1.0/docs/source/_static/images/trajectory_generation.png +0 -0
  22. pyroboplan-1.1.0/docs/source/api/modules.rst +7 -0
  23. pyroboplan-1.1.0/docs/source/api/pyroboplan.core.rst +26 -0
  24. pyroboplan-1.1.0/docs/source/api/pyroboplan.ik.rst +26 -0
  25. pyroboplan-1.1.0/docs/source/api/pyroboplan.models.rst +34 -0
  26. pyroboplan-1.1.0/docs/source/api/pyroboplan.planning.rst +58 -0
  27. pyroboplan-1.1.0/docs/source/api/pyroboplan.rst +20 -0
  28. pyroboplan-1.1.0/docs/source/api/pyroboplan.trajectory.rst +26 -0
  29. pyroboplan-1.1.0/docs/source/api/pyroboplan.visualization.rst +18 -0
  30. pyroboplan-1.1.0/docs/source/conf.py +49 -0
  31. pyroboplan-1.1.0/docs/source/design.rst +57 -0
  32. pyroboplan-1.1.0/docs/source/index.rst +32 -0
  33. pyroboplan-1.1.0/docs/source/motion_planning.rst +155 -0
  34. pyroboplan-1.1.0/examples/cartesian_path.py +100 -0
  35. pyroboplan-1.1.0/examples/collision_along_path.py +127 -0
  36. pyroboplan-1.1.0/examples/differential_ik.py +90 -0
  37. pyroboplan-1.1.0/examples/intro_pinocchio/intro_pinocchio_manual.py +437 -0
  38. pyroboplan-1.1.0/examples/intro_pinocchio/intro_pinocchio_ur5_sim.py +160 -0
  39. pyroboplan-1.1.0/examples/optimize_rrt_path.py +145 -0
  40. pyroboplan-1.1.0/examples/prm_2dof.py +137 -0
  41. pyroboplan-1.1.0/examples/prm_panda.py +128 -0
  42. pyroboplan-1.1.0/examples/rrt_2dof.py +67 -0
  43. pyroboplan-1.1.0/examples/rrt_panda.py +94 -0
  44. pyroboplan-1.1.0/examples/trajectory_generation.py +79 -0
  45. pyroboplan-1.1.0/examples/trajectory_optimization.py +138 -0
  46. pyroboplan-1.1.0/models/custom_description/meshes/collision/link.dae +130 -0
  47. pyroboplan-1.1.0/models/custom_description/meshes/visual/link.dae +130 -0
  48. pyroboplan-1.1.0/models/custom_description/urdf/custom.urdf +245 -0
  49. pyroboplan-1.1.0/models/ur_description/README.md +4 -0
  50. pyroboplan-1.1.0/models/ur_description/launch/ur10_upload.launch +8 -0
  51. pyroboplan-1.1.0/models/ur_description/launch/ur3_upload.launch +8 -0
  52. pyroboplan-1.1.0/models/ur_description/launch/ur5_upload.launch +8 -0
  53. pyroboplan-1.1.0/models/ur_description/launch/view_ur10.launch +10 -0
  54. pyroboplan-1.1.0/models/ur_description/launch/view_ur3.launch +10 -0
  55. pyroboplan-1.1.0/models/ur_description/launch/view_ur5.launch +10 -0
  56. pyroboplan-1.1.0/models/ur_description/meshes/ur10/collision/base.stl +0 -0
  57. pyroboplan-1.1.0/models/ur_description/meshes/ur10/collision/forearm.stl +0 -0
  58. pyroboplan-1.1.0/models/ur_description/meshes/ur10/collision/shoulder.stl +0 -0
  59. pyroboplan-1.1.0/models/ur_description/meshes/ur10/collision/upperarm.stl +0 -0
  60. pyroboplan-1.1.0/models/ur_description/meshes/ur10/collision/wrist1.stl +0 -0
  61. pyroboplan-1.1.0/models/ur_description/meshes/ur10/collision/wrist2.stl +0 -0
  62. pyroboplan-1.1.0/models/ur_description/meshes/ur10/collision/wrist3.stl +0 -0
  63. pyroboplan-1.1.0/models/ur_description/meshes/ur10/visual/base.dae +160 -0
  64. pyroboplan-1.1.0/models/ur_description/meshes/ur10/visual/forearm.dae +459 -0
  65. pyroboplan-1.1.0/models/ur_description/meshes/ur10/visual/shoulder.dae +307 -0
  66. pyroboplan-1.1.0/models/ur_description/meshes/ur10/visual/upperarm.dae +544 -0
  67. pyroboplan-1.1.0/models/ur_description/meshes/ur10/visual/wrist1.dae +357 -0
  68. pyroboplan-1.1.0/models/ur_description/meshes/ur10/visual/wrist2.dae +276 -0
  69. pyroboplan-1.1.0/models/ur_description/meshes/ur10/visual/wrist3.dae +248 -0
  70. pyroboplan-1.1.0/models/ur_description/meshes/ur3/collision/base.stl +0 -0
  71. pyroboplan-1.1.0/models/ur_description/meshes/ur3/collision/forearm.stl +0 -0
  72. pyroboplan-1.1.0/models/ur_description/meshes/ur3/collision/shoulder.stl +0 -0
  73. pyroboplan-1.1.0/models/ur_description/meshes/ur3/collision/upperarm.stl +0 -0
  74. pyroboplan-1.1.0/models/ur_description/meshes/ur3/collision/wrist1.stl +0 -0
  75. pyroboplan-1.1.0/models/ur_description/meshes/ur3/collision/wrist2.stl +0 -0
  76. pyroboplan-1.1.0/models/ur_description/meshes/ur3/collision/wrist3.stl +0 -0
  77. pyroboplan-1.1.0/models/ur_description/meshes/ur3/visual/base.dae +163 -0
  78. pyroboplan-1.1.0/models/ur_description/meshes/ur3/visual/forearm.dae +396 -0
  79. pyroboplan-1.1.0/models/ur_description/meshes/ur3/visual/shoulder.dae +400 -0
  80. pyroboplan-1.1.0/models/ur_description/meshes/ur3/visual/upperarm.dae +637 -0
  81. pyroboplan-1.1.0/models/ur_description/meshes/ur3/visual/wrist1.dae +241 -0
  82. pyroboplan-1.1.0/models/ur_description/meshes/ur3/visual/wrist2.dae +241 -0
  83. pyroboplan-1.1.0/models/ur_description/meshes/ur3/visual/wrist3.dae +172 -0
  84. pyroboplan-1.1.0/models/ur_description/meshes/ur5/collision/base.stl +0 -0
  85. pyroboplan-1.1.0/models/ur_description/meshes/ur5/collision/forearm.stl +0 -0
  86. pyroboplan-1.1.0/models/ur_description/meshes/ur5/collision/shoulder.stl +0 -0
  87. pyroboplan-1.1.0/models/ur_description/meshes/ur5/collision/upperarm.stl +0 -0
  88. pyroboplan-1.1.0/models/ur_description/meshes/ur5/collision/wrist1.stl +0 -0
  89. pyroboplan-1.1.0/models/ur_description/meshes/ur5/collision/wrist2.stl +0 -0
  90. pyroboplan-1.1.0/models/ur_description/meshes/ur5/collision/wrist3.stl +0 -0
  91. pyroboplan-1.1.0/models/ur_description/meshes/ur5/visual/base.dae +163 -0
  92. pyroboplan-1.1.0/models/ur_description/meshes/ur5/visual/forearm.dae +312 -0
  93. pyroboplan-1.1.0/models/ur_description/meshes/ur5/visual/shoulder.dae +234 -0
  94. pyroboplan-1.1.0/models/ur_description/meshes/ur5/visual/upperarm.dae +395 -0
  95. pyroboplan-1.1.0/models/ur_description/meshes/ur5/visual/wrist1.dae +234 -0
  96. pyroboplan-1.1.0/models/ur_description/meshes/ur5/visual/wrist2.dae +234 -0
  97. pyroboplan-1.1.0/models/ur_description/meshes/ur5/visual/wrist3.dae +163 -0
  98. pyroboplan-1.1.0/models/ur_description/srdf/ur3_gripper.srdf +36 -0
  99. pyroboplan-1.1.0/models/ur_description/srdf/ur5.srdf +24 -0
  100. pyroboplan-1.1.0/models/ur_description/srdf/ur5_gripper.srdf +36 -0
  101. pyroboplan-1.1.0/models/ur_description/srdf/ur5_joint_limited_robot.srdf +27 -0
  102. pyroboplan-1.1.0/models/ur_description/urdf/ur10_joint_limited_robot.urdf +349 -0
  103. pyroboplan-1.1.0/models/ur_description/urdf/ur10_robot.urdf +352 -0
  104. pyroboplan-1.1.0/models/ur_description/urdf/ur3.urdf +10 -0
  105. pyroboplan-1.1.0/models/ur_description/urdf/ur3_gripper.urdf +388 -0
  106. pyroboplan-1.1.0/models/ur_description/urdf/ur3_joint_limited_robot.urdf +349 -0
  107. pyroboplan-1.1.0/models/ur_description/urdf/ur3_robot.urdf +350 -0
  108. pyroboplan-1.1.0/models/ur_description/urdf/ur5_gripper.urdf +408 -0
  109. pyroboplan-1.1.0/models/ur_description/urdf/ur5_joint_limited_robot.urdf +358 -0
  110. pyroboplan-1.1.0/models/ur_description/urdf/ur5_robot.urdf +358 -0
  111. pyroboplan-1.1.0/pyproject.toml +25 -0
  112. pyroboplan-1.1.0/scripts/setup_virtual_env.bash +14 -0
  113. pyroboplan-1.1.0/scripts/setup_virtual_env.fish +17 -0
  114. pyroboplan-1.1.0/src/pyroboplan/__init__.py +1 -0
  115. pyroboplan-1.1.0/src/pyroboplan/core/__init__.py +5 -0
  116. pyroboplan-1.1.0/src/pyroboplan/core/planning_context.py +18 -0
  117. pyroboplan-1.1.0/src/pyroboplan/core/utils.py +551 -0
  118. pyroboplan-1.1.0/src/pyroboplan/ik/__init__.py +4 -0
  119. pyroboplan-1.1.0/src/pyroboplan/ik/differential_ik.py +285 -0
  120. pyroboplan-1.1.0/src/pyroboplan/ik/nullspace_components.py +152 -0
  121. pyroboplan-1.1.0/src/pyroboplan/models/__init__.py +1 -0
  122. pyroboplan-1.1.0/src/pyroboplan/models/panda.py +143 -0
  123. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/LICENSE +176 -0
  124. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/README.md +4 -0
  125. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/collision/finger.stl +0 -0
  126. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/collision/hand.stl +0 -0
  127. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/collision/link0.stl +0 -0
  128. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/collision/link1.stl +0 -0
  129. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/collision/link2.stl +0 -0
  130. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/collision/link3.stl +0 -0
  131. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/collision/link4.stl +0 -0
  132. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/collision/link5.stl +0 -0
  133. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/collision/link6.stl +0 -0
  134. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/collision/link7.stl +0 -0
  135. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/visual/finger.dae +63 -0
  136. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/visual/hand.dae +63 -0
  137. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/visual/link0.dae +63 -0
  138. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/visual/link1.dae +63 -0
  139. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/visual/link2.dae +63 -0
  140. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/visual/link3.dae +63 -0
  141. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/visual/link4.dae +63 -0
  142. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/visual/link5.dae +63 -0
  143. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/visual/link6.dae +63 -0
  144. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/meshes/visual/link7.dae +63 -0
  145. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/srdf/panda.srdf +70 -0
  146. pyroboplan-1.1.0/src/pyroboplan/models/panda_description/urdf/panda.urdf +280 -0
  147. pyroboplan-1.1.0/src/pyroboplan/models/two_dof.py +22 -0
  148. pyroboplan-1.1.0/src/pyroboplan/models/two_dof_description/two_dof.urdf +50 -0
  149. pyroboplan-1.1.0/src/pyroboplan/models/utils.py +17 -0
  150. pyroboplan-1.1.0/src/pyroboplan/planning/__init__.py +4 -0
  151. pyroboplan-1.1.0/src/pyroboplan/planning/cartesian_planner.py +231 -0
  152. pyroboplan-1.1.0/src/pyroboplan/planning/graph.py +342 -0
  153. pyroboplan-1.1.0/src/pyroboplan/planning/graph_search.py +135 -0
  154. pyroboplan-1.1.0/src/pyroboplan/planning/path_shortcutting.py +149 -0
  155. pyroboplan-1.1.0/src/pyroboplan/planning/prm.py +357 -0
  156. pyroboplan-1.1.0/src/pyroboplan/planning/rrt.py +459 -0
  157. pyroboplan-1.1.0/src/pyroboplan/planning/utils.py +205 -0
  158. pyroboplan-1.1.0/src/pyroboplan/trajectory/__init__.py +5 -0
  159. pyroboplan-1.1.0/src/pyroboplan/trajectory/polynomial.py +346 -0
  160. pyroboplan-1.1.0/src/pyroboplan/trajectory/trajectory_optimization.py +661 -0
  161. pyroboplan-1.1.0/src/pyroboplan/trajectory/trapezoidal_velocity.py +373 -0
  162. pyroboplan-1.1.0/src/pyroboplan/visualization/__init__.py +4 -0
  163. pyroboplan-1.1.0/src/pyroboplan/visualization/meshcat_utils.py +147 -0
  164. pyroboplan-1.1.0/test/.gitignore +1 -0
  165. pyroboplan-1.1.0/test/core/test_utils.py +247 -0
  166. pyroboplan-1.1.0/test/ik/test_differential_ik.py +182 -0
  167. pyroboplan-1.1.0/test/ik/test_nullspace_components.py +111 -0
  168. pyroboplan-1.1.0/test/planning/test_cartesian_planner.py +98 -0
  169. pyroboplan-1.1.0/test/planning/test_graph.py +231 -0
  170. pyroboplan-1.1.0/test/planning/test_graph_search.py +64 -0
  171. pyroboplan-1.1.0/test/planning/test_path_shortcutting.py +95 -0
  172. pyroboplan-1.1.0/test/planning/test_planning_utils.py +95 -0
  173. pyroboplan-1.1.0/test/planning/test_prm.py +75 -0
  174. pyroboplan-1.1.0/test/planning/test_rrt.py +110 -0
  175. pyroboplan-1.1.0/test/run_tests.bash +16 -0
  176. pyroboplan-1.1.0/test/test_requirements.txt +4 -0
  177. pyroboplan-1.1.0/test/trajectory/test_polynomial_trajectory.py +309 -0
  178. pyroboplan-1.1.0/test/trajectory/test_trajectory_optimization.py +245 -0
  179. pyroboplan-1.1.0/test/trajectory/test_trapezoidal_trajectory.py +155 -0
@@ -0,0 +1,15 @@
1
+ name: format
2
+
3
+ on:
4
+ # Run action on certain pull request events
5
+ pull_request:
6
+ types: [opened, synchronize, reopened, ready_for_review]
7
+
8
+ jobs:
9
+ pre-commit:
10
+ name: pre-commit
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ - uses: actions/setup-python@v5
15
+ - uses: pre-commit/action@v3.0.1
@@ -0,0 +1,68 @@
1
+ name: tests
2
+
3
+ on:
4
+ # Run action on certain pull request events
5
+ pull_request:
6
+ types: [opened, synchronize, reopened, ready_for_review]
7
+
8
+ # Nightly job on default (main) branch
9
+ schedule:
10
+ - cron: '0 0 * * *'
11
+
12
+ # Allow tests to be run manually
13
+ workflow_dispatch:
14
+
15
+ # Ensures that only one workflow runs at a time for this branch
16
+ concurrency:
17
+ group: ${{ github.ref }}
18
+ cancel-in-progress: true
19
+
20
+ jobs:
21
+ test:
22
+ runs-on: ubuntu-latest
23
+ permissions:
24
+ pull-requests: write
25
+ steps:
26
+ - name: Check out repository
27
+ uses: actions/checkout@v4
28
+ - name: Set up Python
29
+ uses: actions/setup-python@v5
30
+ with:
31
+ python-version: '3.10'
32
+ - name: Install dependencies
33
+ run: |
34
+ python3 -m pip install --upgrade pip
35
+ pip3 install -e .
36
+ pip3 install -r test/test_requirements.txt
37
+ - name: Run unit tests
38
+ run: test/run_tests.bash
39
+ - name: Pytest coverage comment
40
+ id: coverageComment
41
+ uses: MishaKav/pytest-coverage-comment@main
42
+ with:
43
+ pytest-coverage-path: ./test/results/pytest-coverage.txt
44
+ junitxml-path: ./test/results/test_results.xml
45
+ pytest-xml-coverage-path: ./test/results/test_results_coverage.xml
46
+ coverage-path-prefix: src/
47
+ # This will break on PRs from forks
48
+ if: ${{ !github.event.pull_request.head.repo.fork }}
49
+ - name: Create coverage badge
50
+ uses: schneegans/dynamic-badges-action@v1.7.0
51
+ with:
52
+ auth: ${{ secrets.COVERAGE_GIST_SECRET }}
53
+ # This comes from https://gist.github.com/sea-bass/e5e091166a18c68b26338793917d3bab#file-pyroboplan-test-coverage-json
54
+ gistID: e5e091166a18c68b26338793917d3bab
55
+ filename: pyroboplan-test-coverage.json
56
+ label: coverage
57
+ message: ${{ steps.coverageComment.outputs.coverage }}
58
+ color: ${{ steps.coverageComment.outputs.color }}
59
+ namedLogo: python
60
+ # Only update this badge on main
61
+ if: github.ref == 'refs/heads/main'
62
+ - name: Upload test results
63
+ uses: actions/upload-artifact@v4
64
+ with:
65
+ name: test-results
66
+ path: test/results/
67
+ # Always publish test results even when there are failures.
68
+ if: ${{ always() }}
@@ -0,0 +1,7 @@
1
+ .coverage
2
+
3
+ .virtualenvs/
4
+
5
+ dist/
6
+ **__pycache__/
7
+ **.egg-info/
@@ -0,0 +1,68 @@
1
+ repos:
2
+ # Runs pre-commit hooks and other file format checks.
3
+ - repo: https://github.com/pre-commit/pre-commit-hooks
4
+ rev: v4.6.0
5
+ hooks:
6
+ - id: check-added-large-files
7
+ - id: check-ast
8
+ - id: check-builtin-literals
9
+ - id: check-case-conflict
10
+ - id: check-docstring-first
11
+ - id: check-executables-have-shebangs
12
+ - id: check-json
13
+ - id: check-merge-conflict
14
+ - id: check-symlinks
15
+ - id: check-toml
16
+ - id: check-vcs-permalinks
17
+ - id: check-yaml
18
+ - id: debug-statements
19
+ - id: destroyed-symlinks
20
+ - id: detect-private-key
21
+ - id: end-of-file-fixer
22
+ - id: fix-byte-order-marker
23
+ - id: forbid-new-submodules
24
+ - id: mixed-line-ending
25
+ - id: name-tests-test
26
+ - id: requirements-txt-fixer
27
+ - id: sort-simple-yaml
28
+ - id: trailing-whitespace
29
+
30
+ # Autoformats Python code.
31
+ - repo: https://github.com/psf/black
32
+ rev: 24.4.2
33
+ hooks:
34
+ - id: black
35
+
36
+ # Finds spelling issues in code.
37
+ - repo: https://github.com/codespell-project/codespell
38
+ rev: v2.3.0
39
+ hooks:
40
+ - id: codespell
41
+
42
+ # Finds issues in YAML files.
43
+ - repo: https://github.com/adrienverge/yamllint
44
+ rev: v1.35.1
45
+ hooks:
46
+ - id: yamllint
47
+ args:
48
+ [
49
+ "--no-warnings",
50
+ "--config-data",
51
+ "{extends: default, rules: {line-length: disable, braces: {max-spaces-inside: 1}}}",
52
+ ]
53
+ types: [text]
54
+ files: \.(yml|yaml)$
55
+
56
+ # Regenerates the docs.
57
+ - repo: local
58
+ hooks:
59
+ - name: generate-docs
60
+ id: generate-docs
61
+ entry: bash -c 'docs/generate_docs.bash'
62
+ language: system
63
+
64
+ # Checks links in markdown files.
65
+ - repo: https://github.com/tcort/markdown-link-check
66
+ rev: v3.12.2
67
+ hooks:
68
+ - id: markdown-link-check
@@ -0,0 +1,36 @@
1
+ # .readthedocs.yaml
2
+ version: 2
3
+
4
+ # Set the version of Python and other tools
5
+ build:
6
+ os: ubuntu-22.04
7
+ tools:
8
+ python: "3.10"
9
+ jobs:
10
+ # Sets up Git LFS for large files, as shown in:
11
+ # https://docs.readthedocs.io/en/stable/build-customization.html#support-git-lfs-large-file-storage
12
+ post_checkout:
13
+ # Download Git LFS
14
+ - wget https://github.com/git-lfs/git-lfs/releases/download/v3.1.4/git-lfs-linux-amd64-v3.1.4.tar.gz
15
+ - tar xvfz git-lfs-linux-amd64-v3.1.4.tar.gz
16
+ # Modify LFS config paths to point where git-lfs binary was downloaded
17
+ - git config filter.lfs.process "`pwd`/git-lfs filter-process"
18
+ - git config filter.lfs.smudge "`pwd`/git-lfs smudge -- %f"
19
+ - git config filter.lfs.clean "`pwd`/git-lfs clean -- %f"
20
+ # Make LFS available in current repository
21
+ - ./git-lfs install
22
+ # Download content from remote
23
+ - ./git-lfs fetch
24
+ # Make local files to have the real content on them
25
+ - ./git-lfs checkout
26
+
27
+ python:
28
+ install:
29
+ - requirements: docs/requirements.txt
30
+ - method: pip
31
+ path: .
32
+
33
+
34
+ # Build documentation in the Sphinx source directory
35
+ sphinx:
36
+ configuration: docs/source/conf.py
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Sebastian Castro
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,84 @@
1
+ Metadata-Version: 2.3
2
+ Name: pyroboplan
3
+ Version: 1.1.0
4
+ Summary: Educational Python library for manipulator motion planning.
5
+ Author-email: Sebastian Castro <sebas.a.castro@gmail.com>
6
+ Maintainer-email: Sebastian Castro <sebas.a.castro@gmail.com>
7
+ License: MIT License
8
+
9
+ Copyright (c) 2024 Sebastian Castro
10
+
11
+ Permission is hereby granted, free of charge, to any person obtaining a copy
12
+ of this software and associated documentation files (the "Software"), to deal
13
+ in the Software without restriction, including without limitation the rights
14
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
15
+ copies of the Software, and to permit persons to whom the Software is
16
+ furnished to do so, subject to the following conditions:
17
+
18
+ The above copyright notice and this permission notice shall be included in all
19
+ copies or substantial portions of the Software.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ SOFTWARE.
28
+ License-File: LICENSE
29
+ Keywords: education,manipulators,motion planning
30
+ Requires-Python: >=3.10
31
+ Requires-Dist: drake==1.30.0
32
+ Requires-Dist: matplotlib==3.9.0
33
+ Requires-Dist: meshcat==0.3.2
34
+ Requires-Dist: pin==2.7.0
35
+ Requires-Dist: scipy==1.13.1
36
+ Description-Content-Type: text/markdown
37
+
38
+ # PyRoboPlan
39
+
40
+ [![PyRoboPlan Tests](https://github.com/sea-bass/pyroboplan/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/sea-bass/pyroboplan/actions/workflows/tests.yml)
41
+ [![Documentation Status](https://readthedocs.org/projects/pyroboplan/badge/?version=latest)](https://pyroboplan.readthedocs.io/en/latest/?badge=latest)
42
+ ![Coverage Status](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/sea-bass/e5e091166a18c68b26338793917d3bab/raw/pyroboplan-test-coverage.json)
43
+
44
+ Educational Python library for manipulator motion planning.
45
+
46
+ This library extensively uses the [Pinocchio](https://github.com/stack-of-tasks/pinocchio) Python bindings for modeling robot kinematics and dynamics.
47
+
48
+ For more information, refer to the [full documentation](https://pyroboplan.readthedocs.io/en/latest/).
49
+
50
+ By Sebastian Castro, 2024
51
+
52
+ ![RRT based motion planning and trajectory execution](https://raw.githubusercontent.com/sea-bass/pyroboplan/main/docs/source/_static/gifs/pyroboplan_rrt_traj.gif)
53
+
54
+ ![Cartesian motion planning](https://raw.githubusercontent.com/sea-bass/pyroboplan/main/docs/source/_static/gifs/pyroboplan_cartesian_path.gif)
55
+
56
+ ---
57
+
58
+ ## Setup
59
+
60
+ ### From PyPi
61
+
62
+ ```bash
63
+ pip3 install pyroboplan
64
+ ```
65
+
66
+ ### From Source
67
+
68
+ Clone this repository.
69
+
70
+ ```bash
71
+ git clone https://github.com/sea-bass/pyroboplan.git
72
+ ```
73
+
74
+ (Optional) Set up a virtual environment and install dependencies.
75
+
76
+ ```bash
77
+ source scripts/setup_virtual_env.bash
78
+ ```
79
+
80
+ Install this package and its dependencies.
81
+
82
+ ```bash
83
+ pip3 install -e .
84
+ ```
@@ -0,0 +1,47 @@
1
+ # PyRoboPlan
2
+
3
+ [![PyRoboPlan Tests](https://github.com/sea-bass/pyroboplan/actions/workflows/tests.yml/badge.svg?branch=main)](https://github.com/sea-bass/pyroboplan/actions/workflows/tests.yml)
4
+ [![Documentation Status](https://readthedocs.org/projects/pyroboplan/badge/?version=latest)](https://pyroboplan.readthedocs.io/en/latest/?badge=latest)
5
+ ![Coverage Status](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/sea-bass/e5e091166a18c68b26338793917d3bab/raw/pyroboplan-test-coverage.json)
6
+
7
+ Educational Python library for manipulator motion planning.
8
+
9
+ This library extensively uses the [Pinocchio](https://github.com/stack-of-tasks/pinocchio) Python bindings for modeling robot kinematics and dynamics.
10
+
11
+ For more information, refer to the [full documentation](https://pyroboplan.readthedocs.io/en/latest/).
12
+
13
+ By Sebastian Castro, 2024
14
+
15
+ ![RRT based motion planning and trajectory execution](https://raw.githubusercontent.com/sea-bass/pyroboplan/main/docs/source/_static/gifs/pyroboplan_rrt_traj.gif)
16
+
17
+ ![Cartesian motion planning](https://raw.githubusercontent.com/sea-bass/pyroboplan/main/docs/source/_static/gifs/pyroboplan_cartesian_path.gif)
18
+
19
+ ---
20
+
21
+ ## Setup
22
+
23
+ ### From PyPi
24
+
25
+ ```bash
26
+ pip3 install pyroboplan
27
+ ```
28
+
29
+ ### From Source
30
+
31
+ Clone this repository.
32
+
33
+ ```bash
34
+ git clone https://github.com/sea-bass/pyroboplan.git
35
+ ```
36
+
37
+ (Optional) Set up a virtual environment and install dependencies.
38
+
39
+ ```bash
40
+ source scripts/setup_virtual_env.bash
41
+ ```
42
+
43
+ Install this package and its dependencies.
44
+
45
+ ```bash
46
+ pip3 install -e .
47
+ ```
@@ -0,0 +1 @@
1
+ build/
@@ -0,0 +1,20 @@
1
+ # Minimal makefile for Sphinx documentation
2
+ #
3
+
4
+ # You can set these variables from the command line, and also
5
+ # from the environment for the first two.
6
+ SPHINXOPTS ?=
7
+ SPHINXBUILD ?= sphinx-build
8
+ SOURCEDIR = source
9
+ BUILDDIR = build
10
+
11
+ # Put it first so that "make" without argument is like "make help".
12
+ help:
13
+ @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
14
+
15
+ .PHONY: help Makefile
16
+
17
+ # Catch-all target: route all unknown targets to Sphinx using the new
18
+ # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
19
+ %: Makefile
20
+ @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -0,0 +1,22 @@
1
+ #!/bin/bash
2
+
3
+ # Generates Sphinx documentation.
4
+ #
5
+ # Note that you may need some additional Python packages:
6
+ # pip3 install sphinx sphinx-rtd-theme
7
+
8
+ SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
9
+ pushd "${SCRIPT_DIR}" || exit
10
+
11
+ # Clean up
12
+ rm -rf build/
13
+ rm -rf source/modules.rst
14
+ rm -rf source/pyroboplan*
15
+
16
+ # Regenerate the API docs
17
+ sphinx-apidoc -f --module-first -H "API Documentation" -o source/api/ ../src/pyroboplan/
18
+
19
+ # Build the docs
20
+ make html
21
+
22
+ popd || exit
@@ -0,0 +1,2 @@
1
+ sphinx
2
+ sphinx-rtd-theme
@@ -0,0 +1,7 @@
1
+ API Documentation
2
+ =================
3
+
4
+ .. toctree::
5
+ :maxdepth: 4
6
+
7
+ pyroboplan
@@ -0,0 +1,26 @@
1
+ pyroboplan.core package
2
+ =======================
3
+
4
+ .. automodule:: pyroboplan.core
5
+ :members:
6
+ :undoc-members:
7
+ :show-inheritance:
8
+
9
+ Submodules
10
+ ----------
11
+
12
+ pyroboplan.core.planning\_context module
13
+ ----------------------------------------
14
+
15
+ .. automodule:: pyroboplan.core.planning_context
16
+ :members:
17
+ :undoc-members:
18
+ :show-inheritance:
19
+
20
+ pyroboplan.core.utils module
21
+ ----------------------------
22
+
23
+ .. automodule:: pyroboplan.core.utils
24
+ :members:
25
+ :undoc-members:
26
+ :show-inheritance:
@@ -0,0 +1,26 @@
1
+ pyroboplan.ik package
2
+ =====================
3
+
4
+ .. automodule:: pyroboplan.ik
5
+ :members:
6
+ :undoc-members:
7
+ :show-inheritance:
8
+
9
+ Submodules
10
+ ----------
11
+
12
+ pyroboplan.ik.differential\_ik module
13
+ -------------------------------------
14
+
15
+ .. automodule:: pyroboplan.ik.differential_ik
16
+ :members:
17
+ :undoc-members:
18
+ :show-inheritance:
19
+
20
+ pyroboplan.ik.nullspace\_components module
21
+ ------------------------------------------
22
+
23
+ .. automodule:: pyroboplan.ik.nullspace_components
24
+ :members:
25
+ :undoc-members:
26
+ :show-inheritance:
@@ -0,0 +1,34 @@
1
+ pyroboplan.models package
2
+ =========================
3
+
4
+ .. automodule:: pyroboplan.models
5
+ :members:
6
+ :undoc-members:
7
+ :show-inheritance:
8
+
9
+ Submodules
10
+ ----------
11
+
12
+ pyroboplan.models.panda module
13
+ ------------------------------
14
+
15
+ .. automodule:: pyroboplan.models.panda
16
+ :members:
17
+ :undoc-members:
18
+ :show-inheritance:
19
+
20
+ pyroboplan.models.two\_dof module
21
+ ---------------------------------
22
+
23
+ .. automodule:: pyroboplan.models.two_dof
24
+ :members:
25
+ :undoc-members:
26
+ :show-inheritance:
27
+
28
+ pyroboplan.models.utils module
29
+ ------------------------------
30
+
31
+ .. automodule:: pyroboplan.models.utils
32
+ :members:
33
+ :undoc-members:
34
+ :show-inheritance:
@@ -0,0 +1,58 @@
1
+ pyroboplan.planning package
2
+ ===========================
3
+
4
+ .. automodule:: pyroboplan.planning
5
+ :members:
6
+ :undoc-members:
7
+ :show-inheritance:
8
+
9
+ Submodules
10
+ ----------
11
+
12
+ pyroboplan.planning.cartesian\_planner module
13
+ ---------------------------------------------
14
+
15
+ .. automodule:: pyroboplan.planning.cartesian_planner
16
+ :members:
17
+ :undoc-members:
18
+ :show-inheritance:
19
+
20
+ pyroboplan.planning.graph module
21
+ --------------------------------
22
+
23
+ .. automodule:: pyroboplan.planning.graph
24
+ :members:
25
+ :undoc-members:
26
+ :show-inheritance:
27
+
28
+ pyroboplan.planning.graph\_search module
29
+ ----------------------------------------
30
+
31
+ .. automodule:: pyroboplan.planning.graph_search
32
+ :members:
33
+ :undoc-members:
34
+ :show-inheritance:
35
+
36
+ pyroboplan.planning.prm module
37
+ ------------------------------
38
+
39
+ .. automodule:: pyroboplan.planning.prm
40
+ :members:
41
+ :undoc-members:
42
+ :show-inheritance:
43
+
44
+ pyroboplan.planning.rrt module
45
+ ------------------------------
46
+
47
+ .. automodule:: pyroboplan.planning.rrt
48
+ :members:
49
+ :undoc-members:
50
+ :show-inheritance:
51
+
52
+ pyroboplan.planning.utils module
53
+ --------------------------------
54
+
55
+ .. automodule:: pyroboplan.planning.utils
56
+ :members:
57
+ :undoc-members:
58
+ :show-inheritance:
@@ -0,0 +1,20 @@
1
+ pyroboplan package
2
+ ==================
3
+
4
+ .. automodule:: pyroboplan
5
+ :members:
6
+ :undoc-members:
7
+ :show-inheritance:
8
+
9
+ Subpackages
10
+ -----------
11
+
12
+ .. toctree::
13
+ :maxdepth: 4
14
+
15
+ pyroboplan.core
16
+ pyroboplan.ik
17
+ pyroboplan.models
18
+ pyroboplan.planning
19
+ pyroboplan.trajectory
20
+ pyroboplan.visualization
@@ -0,0 +1,26 @@
1
+ pyroboplan.trajectory package
2
+ =============================
3
+
4
+ .. automodule:: pyroboplan.trajectory
5
+ :members:
6
+ :undoc-members:
7
+ :show-inheritance:
8
+
9
+ Submodules
10
+ ----------
11
+
12
+ pyroboplan.trajectory.polynomial module
13
+ ---------------------------------------
14
+
15
+ .. automodule:: pyroboplan.trajectory.polynomial
16
+ :members:
17
+ :undoc-members:
18
+ :show-inheritance:
19
+
20
+ pyroboplan.trajectory.trapezoidal\_velocity module
21
+ --------------------------------------------------
22
+
23
+ .. automodule:: pyroboplan.trajectory.trapezoidal_velocity
24
+ :members:
25
+ :undoc-members:
26
+ :show-inheritance:
@@ -0,0 +1,18 @@
1
+ pyroboplan.visualization package
2
+ ================================
3
+
4
+ .. automodule:: pyroboplan.visualization
5
+ :members:
6
+ :undoc-members:
7
+ :show-inheritance:
8
+
9
+ Submodules
10
+ ----------
11
+
12
+ pyroboplan.visualization.meshcat\_utils module
13
+ ----------------------------------------------
14
+
15
+ .. automodule:: pyroboplan.visualization.meshcat_utils
16
+ :members:
17
+ :undoc-members:
18
+ :show-inheritance: