plainmp 0.3.5.dev1__tar.gz → 0.3.6__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 (438) hide show
  1. plainmp-0.3.6/.gitattributes +2 -0
  2. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/.github/workflows/build_and_test.yaml +15 -13
  3. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/.github/workflows/check_format.yaml +13 -5
  4. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/.github/workflows/check_pypi_install.yaml +8 -4
  5. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/.github/workflows/release.yaml +6 -6
  6. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/CMakeLists.txt +21 -3
  7. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/PKG-INFO +3 -1
  8. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/README.md +20 -9
  9. plainmp-0.3.6/cpp/plainmp/bindings/bindings.hpp +50 -0
  10. plainmp-0.3.6/cpp/plainmp/bindings/constraint.cpp +165 -0
  11. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/bindings/kdtree.cpp +3 -3
  12. plainmp-0.3.6/cpp/plainmp/bindings/kinematics.cpp +84 -0
  13. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/bindings/ompl_wrapper.cpp +28 -24
  14. plainmp-0.3.6/cpp/plainmp/bindings/primitive.cpp +114 -0
  15. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/bindings/python.cpp +1 -1
  16. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/composite_constraint.hpp +16 -4
  17. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive.hpp +17 -1
  18. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_com_in_polytope.cpp +3 -7
  19. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_com_in_polytope.hpp +2 -1
  20. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_config_point.cpp +14 -14
  21. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_config_point.hpp +2 -1
  22. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_fixed_zaxis.cpp +3 -5
  23. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_fixed_zaxis.hpp +2 -1
  24. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_link_pose.cpp +2 -4
  25. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_link_pose.hpp +2 -1
  26. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_link_position_bound.cpp +3 -8
  27. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_link_position_bound.hpp +2 -1
  28. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_relative_pose.cpp +2 -4
  29. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_relative_pose.hpp +2 -1
  30. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_sphere_collision.cpp +6 -8
  31. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_sphere_collision.hpp +7 -4
  32. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/kinematics/kinematic_model_wrapper.cpp +10 -1
  33. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/kinematics/kinematic_model_wrapper.hpp +6 -1
  34. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/ompl/ompl_thin_wrap.hpp +4 -2
  35. plainmp-0.3.6/example/openarm_gravity_compensation.py +19 -0
  36. plainmp-0.3.6/format.sh +17 -0
  37. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/pyproject.toml +10 -6
  38. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/constraint.pyi +8 -0
  39. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/ik.py +23 -3
  40. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/kinematics.pyi +7 -0
  41. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/tests/test_constraints.py +51 -0
  42. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/ompl-ertconnect/ertconnect/src/ERTConnect.cpp +3 -3
  43. plainmp-0.3.6/uv.lock +5760 -0
  44. plainmp-0.3.5.dev1/.gitmodules +0 -3
  45. plainmp-0.3.5.dev1/cpp/plainmp/bindings/bindings.hpp +0 -24
  46. plainmp-0.3.5.dev1/cpp/plainmp/bindings/constraint.cpp +0 -128
  47. plainmp-0.3.5.dev1/cpp/plainmp/bindings/kinematics.cpp +0 -55
  48. plainmp-0.3.5.dev1/cpp/plainmp/bindings/primitive.cpp +0 -114
  49. plainmp-0.3.5.dev1/example/openarm_gravity_compensation.py +0 -33
  50. plainmp-0.3.5.dev1/format.sh +0 -12
  51. plainmp-0.3.5.dev1/pybind11/.appveyor.yml +0 -35
  52. plainmp-0.3.5.dev1/pybind11/.clang-format +0 -38
  53. plainmp-0.3.5.dev1/pybind11/.clang-tidy +0 -77
  54. plainmp-0.3.5.dev1/pybind11/.cmake-format.yaml +0 -73
  55. plainmp-0.3.5.dev1/pybind11/.codespell-ignore-lines +0 -24
  56. plainmp-0.3.5.dev1/pybind11/.git +0 -1
  57. plainmp-0.3.5.dev1/pybind11/.gitattributes +0 -1
  58. plainmp-0.3.5.dev1/pybind11/.github/CODEOWNERS +0 -9
  59. plainmp-0.3.5.dev1/pybind11/.github/CONTRIBUTING.md +0 -388
  60. plainmp-0.3.5.dev1/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +0 -61
  61. plainmp-0.3.5.dev1/pybind11/.github/ISSUE_TEMPLATE/config.yml +0 -8
  62. plainmp-0.3.5.dev1/pybind11/.github/dependabot.yml +0 -15
  63. plainmp-0.3.5.dev1/pybind11/.github/labeler.yml +0 -13
  64. plainmp-0.3.5.dev1/pybind11/.github/labeler_merged.yml +0 -8
  65. plainmp-0.3.5.dev1/pybind11/.github/matchers/pylint.json +0 -32
  66. plainmp-0.3.5.dev1/pybind11/.github/pull_request_template.md +0 -19
  67. plainmp-0.3.5.dev1/pybind11/.github/workflows/ci.yml +0 -1235
  68. plainmp-0.3.5.dev1/pybind11/.github/workflows/configure.yml +0 -92
  69. plainmp-0.3.5.dev1/pybind11/.github/workflows/emscripten.yaml +0 -30
  70. plainmp-0.3.5.dev1/pybind11/.github/workflows/format.yml +0 -60
  71. plainmp-0.3.5.dev1/pybind11/.github/workflows/labeler.yml +0 -25
  72. plainmp-0.3.5.dev1/pybind11/.github/workflows/pip.yml +0 -117
  73. plainmp-0.3.5.dev1/pybind11/.github/workflows/upstream.yml +0 -116
  74. plainmp-0.3.5.dev1/pybind11/.gitignore +0 -46
  75. plainmp-0.3.5.dev1/pybind11/.pre-commit-config.yaml +0 -156
  76. plainmp-0.3.5.dev1/pybind11/.readthedocs.yml +0 -20
  77. plainmp-0.3.5.dev1/pybind11/CMakeLists.txt +0 -376
  78. plainmp-0.3.5.dev1/pybind11/LICENSE +0 -29
  79. plainmp-0.3.5.dev1/pybind11/MANIFEST.in +0 -6
  80. plainmp-0.3.5.dev1/pybind11/README.rst +0 -181
  81. plainmp-0.3.5.dev1/pybind11/SECURITY.md +0 -13
  82. plainmp-0.3.5.dev1/pybind11/docs/Doxyfile +0 -21
  83. plainmp-0.3.5.dev1/pybind11/docs/Makefile +0 -192
  84. plainmp-0.3.5.dev1/pybind11/docs/_static/css/custom.css +0 -3
  85. plainmp-0.3.5.dev1/pybind11/docs/advanced/cast/chrono.rst +0 -81
  86. plainmp-0.3.5.dev1/pybind11/docs/advanced/cast/custom.rst +0 -93
  87. plainmp-0.3.5.dev1/pybind11/docs/advanced/cast/eigen.rst +0 -310
  88. plainmp-0.3.5.dev1/pybind11/docs/advanced/cast/functional.rst +0 -109
  89. plainmp-0.3.5.dev1/pybind11/docs/advanced/cast/index.rst +0 -43
  90. plainmp-0.3.5.dev1/pybind11/docs/advanced/cast/overview.rst +0 -170
  91. plainmp-0.3.5.dev1/pybind11/docs/advanced/cast/stl.rst +0 -249
  92. plainmp-0.3.5.dev1/pybind11/docs/advanced/cast/strings.rst +0 -296
  93. plainmp-0.3.5.dev1/pybind11/docs/advanced/classes.rst +0 -1335
  94. plainmp-0.3.5.dev1/pybind11/docs/advanced/embedding.rst +0 -262
  95. plainmp-0.3.5.dev1/pybind11/docs/advanced/exceptions.rst +0 -401
  96. plainmp-0.3.5.dev1/pybind11/docs/advanced/functions.rst +0 -614
  97. plainmp-0.3.5.dev1/pybind11/docs/advanced/misc.rst +0 -429
  98. plainmp-0.3.5.dev1/pybind11/docs/advanced/pycpp/index.rst +0 -13
  99. plainmp-0.3.5.dev1/pybind11/docs/advanced/pycpp/numpy.rst +0 -453
  100. plainmp-0.3.5.dev1/pybind11/docs/advanced/pycpp/object.rst +0 -286
  101. plainmp-0.3.5.dev1/pybind11/docs/advanced/pycpp/utilities.rst +0 -155
  102. plainmp-0.3.5.dev1/pybind11/docs/advanced/smart_ptrs.rst +0 -174
  103. plainmp-0.3.5.dev1/pybind11/docs/basics.rst +0 -307
  104. plainmp-0.3.5.dev1/pybind11/docs/benchmark.py +0 -89
  105. plainmp-0.3.5.dev1/pybind11/docs/benchmark.rst +0 -95
  106. plainmp-0.3.5.dev1/pybind11/docs/changelog.rst +0 -3121
  107. plainmp-0.3.5.dev1/pybind11/docs/classes.rst +0 -555
  108. plainmp-0.3.5.dev1/pybind11/docs/cmake/index.rst +0 -8
  109. plainmp-0.3.5.dev1/pybind11/docs/compiling.rst +0 -726
  110. plainmp-0.3.5.dev1/pybind11/docs/conf.py +0 -369
  111. plainmp-0.3.5.dev1/pybind11/docs/faq.rst +0 -308
  112. plainmp-0.3.5.dev1/pybind11/docs/index.rst +0 -48
  113. plainmp-0.3.5.dev1/pybind11/docs/installing.rst +0 -105
  114. plainmp-0.3.5.dev1/pybind11/docs/limitations.rst +0 -68
  115. plainmp-0.3.5.dev1/pybind11/docs/pybind11-logo.png +0 -0
  116. plainmp-0.3.5.dev1/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
  117. plainmp-0.3.5.dev1/pybind11/docs/pybind11_vs_boost_python1.svg +0 -427
  118. plainmp-0.3.5.dev1/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
  119. plainmp-0.3.5.dev1/pybind11/docs/pybind11_vs_boost_python2.svg +0 -427
  120. plainmp-0.3.5.dev1/pybind11/docs/reference.rst +0 -130
  121. plainmp-0.3.5.dev1/pybind11/docs/release.rst +0 -143
  122. plainmp-0.3.5.dev1/pybind11/docs/requirements.in +0 -6
  123. plainmp-0.3.5.dev1/pybind11/docs/requirements.txt +0 -275
  124. plainmp-0.3.5.dev1/pybind11/docs/upgrade.rst +0 -594
  125. plainmp-0.3.5.dev1/pybind11/include/pybind11/attr.h +0 -690
  126. plainmp-0.3.5.dev1/pybind11/include/pybind11/buffer_info.h +0 -208
  127. plainmp-0.3.5.dev1/pybind11/include/pybind11/cast.h +0 -1855
  128. plainmp-0.3.5.dev1/pybind11/include/pybind11/chrono.h +0 -225
  129. plainmp-0.3.5.dev1/pybind11/include/pybind11/common.h +0 -2
  130. plainmp-0.3.5.dev1/pybind11/include/pybind11/complex.h +0 -74
  131. plainmp-0.3.5.dev1/pybind11/include/pybind11/detail/class.h +0 -754
  132. plainmp-0.3.5.dev1/pybind11/include/pybind11/detail/common.h +0 -1284
  133. plainmp-0.3.5.dev1/pybind11/include/pybind11/detail/descr.h +0 -172
  134. plainmp-0.3.5.dev1/pybind11/include/pybind11/detail/init.h +0 -436
  135. plainmp-0.3.5.dev1/pybind11/include/pybind11/detail/internals.h +0 -764
  136. plainmp-0.3.5.dev1/pybind11/include/pybind11/detail/type_caster_base.h +0 -1154
  137. plainmp-0.3.5.dev1/pybind11/include/pybind11/detail/typeid.h +0 -65
  138. plainmp-0.3.5.dev1/pybind11/include/pybind11/detail/value_and_holder.h +0 -77
  139. plainmp-0.3.5.dev1/pybind11/include/pybind11/eigen/common.h +0 -9
  140. plainmp-0.3.5.dev1/pybind11/include/pybind11/eigen/matrix.h +0 -714
  141. plainmp-0.3.5.dev1/pybind11/include/pybind11/eigen/tensor.h +0 -517
  142. plainmp-0.3.5.dev1/pybind11/include/pybind11/eigen.h +0 -12
  143. plainmp-0.3.5.dev1/pybind11/include/pybind11/embed.h +0 -313
  144. plainmp-0.3.5.dev1/pybind11/include/pybind11/eval.h +0 -156
  145. plainmp-0.3.5.dev1/pybind11/include/pybind11/functional.h +0 -138
  146. plainmp-0.3.5.dev1/pybind11/include/pybind11/gil.h +0 -219
  147. plainmp-0.3.5.dev1/pybind11/include/pybind11/gil_safe_call_once.h +0 -100
  148. plainmp-0.3.5.dev1/pybind11/include/pybind11/iostream.h +0 -265
  149. plainmp-0.3.5.dev1/pybind11/include/pybind11/numpy.h +0 -2135
  150. plainmp-0.3.5.dev1/pybind11/include/pybind11/operators.h +0 -202
  151. plainmp-0.3.5.dev1/pybind11/include/pybind11/options.h +0 -92
  152. plainmp-0.3.5.dev1/pybind11/include/pybind11/pybind11.h +0 -3026
  153. plainmp-0.3.5.dev1/pybind11/include/pybind11/pytypes.h +0 -2604
  154. plainmp-0.3.5.dev1/pybind11/include/pybind11/stl/filesystem.h +0 -115
  155. plainmp-0.3.5.dev1/pybind11/include/pybind11/stl.h +0 -448
  156. plainmp-0.3.5.dev1/pybind11/include/pybind11/stl_bind.h +0 -822
  157. plainmp-0.3.5.dev1/pybind11/include/pybind11/type_caster_pyobject_ptr.h +0 -61
  158. plainmp-0.3.5.dev1/pybind11/include/pybind11/typing.h +0 -244
  159. plainmp-0.3.5.dev1/pybind11/noxfile.py +0 -107
  160. plainmp-0.3.5.dev1/pybind11/pybind11/__init__.py +0 -19
  161. plainmp-0.3.5.dev1/pybind11/pybind11/__main__.py +0 -63
  162. plainmp-0.3.5.dev1/pybind11/pybind11/_version.py +0 -12
  163. plainmp-0.3.5.dev1/pybind11/pybind11/commands.py +0 -39
  164. plainmp-0.3.5.dev1/pybind11/pybind11/py.typed +0 -0
  165. plainmp-0.3.5.dev1/pybind11/pybind11/setup_helpers.py +0 -500
  166. plainmp-0.3.5.dev1/pybind11/pyproject.toml +0 -87
  167. plainmp-0.3.5.dev1/pybind11/setup.cfg +0 -43
  168. plainmp-0.3.5.dev1/pybind11/setup.py +0 -149
  169. plainmp-0.3.5.dev1/pybind11/tests/CMakeLists.txt +0 -597
  170. plainmp-0.3.5.dev1/pybind11/tests/conftest.py +0 -224
  171. plainmp-0.3.5.dev1/pybind11/tests/constructor_stats.h +0 -322
  172. plainmp-0.3.5.dev1/pybind11/tests/cross_module_gil_utils.cpp +0 -111
  173. plainmp-0.3.5.dev1/pybind11/tests/cross_module_interleaved_error_already_set.cpp +0 -54
  174. plainmp-0.3.5.dev1/pybind11/tests/eigen_tensor_avoid_stl_array.cpp +0 -16
  175. plainmp-0.3.5.dev1/pybind11/tests/env.py +0 -31
  176. plainmp-0.3.5.dev1/pybind11/tests/extra_python_package/pytest.ini +0 -0
  177. plainmp-0.3.5.dev1/pybind11/tests/extra_python_package/test_files.py +0 -297
  178. plainmp-0.3.5.dev1/pybind11/tests/extra_setuptools/pytest.ini +0 -0
  179. plainmp-0.3.5.dev1/pybind11/tests/extra_setuptools/test_setuphelper.py +0 -153
  180. plainmp-0.3.5.dev1/pybind11/tests/local_bindings.h +0 -92
  181. plainmp-0.3.5.dev1/pybind11/tests/object.h +0 -205
  182. plainmp-0.3.5.dev1/pybind11/tests/pybind11_cross_module_tests.cpp +0 -149
  183. plainmp-0.3.5.dev1/pybind11/tests/pybind11_tests.cpp +0 -131
  184. plainmp-0.3.5.dev1/pybind11/tests/pybind11_tests.h +0 -98
  185. plainmp-0.3.5.dev1/pybind11/tests/pyproject.toml +0 -17
  186. plainmp-0.3.5.dev1/pybind11/tests/pytest.ini +0 -23
  187. plainmp-0.3.5.dev1/pybind11/tests/requirements.txt +0 -13
  188. plainmp-0.3.5.dev1/pybind11/tests/test_async.cpp +0 -25
  189. plainmp-0.3.5.dev1/pybind11/tests/test_async.py +0 -31
  190. plainmp-0.3.5.dev1/pybind11/tests/test_buffers.cpp +0 -259
  191. plainmp-0.3.5.dev1/pybind11/tests/test_buffers.py +0 -230
  192. plainmp-0.3.5.dev1/pybind11/tests/test_builtin_casters.cpp +0 -387
  193. plainmp-0.3.5.dev1/pybind11/tests/test_builtin_casters.py +0 -532
  194. plainmp-0.3.5.dev1/pybind11/tests/test_call_policies.cpp +0 -113
  195. plainmp-0.3.5.dev1/pybind11/tests/test_call_policies.py +0 -249
  196. plainmp-0.3.5.dev1/pybind11/tests/test_callbacks.cpp +0 -280
  197. plainmp-0.3.5.dev1/pybind11/tests/test_callbacks.py +0 -230
  198. plainmp-0.3.5.dev1/pybind11/tests/test_chrono.cpp +0 -81
  199. plainmp-0.3.5.dev1/pybind11/tests/test_chrono.py +0 -207
  200. plainmp-0.3.5.dev1/pybind11/tests/test_class.cpp +0 -656
  201. plainmp-0.3.5.dev1/pybind11/tests/test_class.py +0 -503
  202. plainmp-0.3.5.dev1/pybind11/tests/test_cmake_build/CMakeLists.txt +0 -80
  203. plainmp-0.3.5.dev1/pybind11/tests/test_cmake_build/embed.cpp +0 -23
  204. plainmp-0.3.5.dev1/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +0 -28
  205. plainmp-0.3.5.dev1/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +0 -39
  206. plainmp-0.3.5.dev1/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +0 -46
  207. plainmp-0.3.5.dev1/pybind11/tests/test_cmake_build/main.cpp +0 -6
  208. plainmp-0.3.5.dev1/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +0 -47
  209. plainmp-0.3.5.dev1/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +0 -41
  210. plainmp-0.3.5.dev1/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +0 -47
  211. plainmp-0.3.5.dev1/pybind11/tests/test_cmake_build/test.py +0 -10
  212. plainmp-0.3.5.dev1/pybind11/tests/test_const_name.cpp +0 -55
  213. plainmp-0.3.5.dev1/pybind11/tests/test_const_name.py +0 -31
  214. plainmp-0.3.5.dev1/pybind11/tests/test_constants_and_functions.cpp +0 -158
  215. plainmp-0.3.5.dev1/pybind11/tests/test_constants_and_functions.py +0 -58
  216. plainmp-0.3.5.dev1/pybind11/tests/test_copy_move.cpp +0 -544
  217. plainmp-0.3.5.dev1/pybind11/tests/test_copy_move.py +0 -140
  218. plainmp-0.3.5.dev1/pybind11/tests/test_custom_type_casters.cpp +0 -217
  219. plainmp-0.3.5.dev1/pybind11/tests/test_custom_type_casters.py +0 -124
  220. plainmp-0.3.5.dev1/pybind11/tests/test_custom_type_setup.cpp +0 -41
  221. plainmp-0.3.5.dev1/pybind11/tests/test_custom_type_setup.py +0 -50
  222. plainmp-0.3.5.dev1/pybind11/tests/test_docstring_options.cpp +0 -129
  223. plainmp-0.3.5.dev1/pybind11/tests/test_docstring_options.py +0 -66
  224. plainmp-0.3.5.dev1/pybind11/tests/test_eigen_matrix.cpp +0 -443
  225. plainmp-0.3.5.dev1/pybind11/tests/test_eigen_matrix.py +0 -816
  226. plainmp-0.3.5.dev1/pybind11/tests/test_eigen_tensor.cpp +0 -18
  227. plainmp-0.3.5.dev1/pybind11/tests/test_eigen_tensor.inl +0 -332
  228. plainmp-0.3.5.dev1/pybind11/tests/test_eigen_tensor.py +0 -290
  229. plainmp-0.3.5.dev1/pybind11/tests/test_embed/CMakeLists.txt +0 -54
  230. plainmp-0.3.5.dev1/pybind11/tests/test_embed/catch.cpp +0 -43
  231. plainmp-0.3.5.dev1/pybind11/tests/test_embed/external_module.cpp +0 -20
  232. plainmp-0.3.5.dev1/pybind11/tests/test_embed/test_interpreter.cpp +0 -488
  233. plainmp-0.3.5.dev1/pybind11/tests/test_embed/test_interpreter.py +0 -16
  234. plainmp-0.3.5.dev1/pybind11/tests/test_embed/test_trampoline.py +0 -18
  235. plainmp-0.3.5.dev1/pybind11/tests/test_enum.cpp +0 -133
  236. plainmp-0.3.5.dev1/pybind11/tests/test_enum.py +0 -270
  237. plainmp-0.3.5.dev1/pybind11/tests/test_eval.cpp +0 -118
  238. plainmp-0.3.5.dev1/pybind11/tests/test_eval.py +0 -52
  239. plainmp-0.3.5.dev1/pybind11/tests/test_eval_call.py +0 -5
  240. plainmp-0.3.5.dev1/pybind11/tests/test_exceptions.cpp +0 -388
  241. plainmp-0.3.5.dev1/pybind11/tests/test_exceptions.h +0 -13
  242. plainmp-0.3.5.dev1/pybind11/tests/test_exceptions.py +0 -434
  243. plainmp-0.3.5.dev1/pybind11/tests/test_factory_constructors.cpp +0 -430
  244. plainmp-0.3.5.dev1/pybind11/tests/test_factory_constructors.py +0 -518
  245. plainmp-0.3.5.dev1/pybind11/tests/test_gil_scoped.cpp +0 -144
  246. plainmp-0.3.5.dev1/pybind11/tests/test_gil_scoped.py +0 -249
  247. plainmp-0.3.5.dev1/pybind11/tests/test_iostream.cpp +0 -126
  248. plainmp-0.3.5.dev1/pybind11/tests/test_iostream.py +0 -297
  249. plainmp-0.3.5.dev1/pybind11/tests/test_kwargs_and_defaults.cpp +0 -325
  250. plainmp-0.3.5.dev1/pybind11/tests/test_kwargs_and_defaults.py +0 -428
  251. plainmp-0.3.5.dev1/pybind11/tests/test_local_bindings.cpp +0 -106
  252. plainmp-0.3.5.dev1/pybind11/tests/test_local_bindings.py +0 -259
  253. plainmp-0.3.5.dev1/pybind11/tests/test_methods_and_attributes.cpp +0 -492
  254. plainmp-0.3.5.dev1/pybind11/tests/test_methods_and_attributes.py +0 -539
  255. plainmp-0.3.5.dev1/pybind11/tests/test_modules.cpp +0 -125
  256. plainmp-0.3.5.dev1/pybind11/tests/test_modules.py +0 -118
  257. plainmp-0.3.5.dev1/pybind11/tests/test_multiple_inheritance.cpp +0 -341
  258. plainmp-0.3.5.dev1/pybind11/tests/test_multiple_inheritance.py +0 -495
  259. plainmp-0.3.5.dev1/pybind11/tests/test_numpy_array.cpp +0 -547
  260. plainmp-0.3.5.dev1/pybind11/tests/test_numpy_array.py +0 -672
  261. plainmp-0.3.5.dev1/pybind11/tests/test_numpy_dtypes.cpp +0 -639
  262. plainmp-0.3.5.dev1/pybind11/tests/test_numpy_dtypes.py +0 -448
  263. plainmp-0.3.5.dev1/pybind11/tests/test_numpy_vectorize.cpp +0 -107
  264. plainmp-0.3.5.dev1/pybind11/tests/test_numpy_vectorize.py +0 -268
  265. plainmp-0.3.5.dev1/pybind11/tests/test_opaque_types.cpp +0 -77
  266. plainmp-0.3.5.dev1/pybind11/tests/test_opaque_types.py +0 -60
  267. plainmp-0.3.5.dev1/pybind11/tests/test_operator_overloading.cpp +0 -281
  268. plainmp-0.3.5.dev1/pybind11/tests/test_operator_overloading.py +0 -153
  269. plainmp-0.3.5.dev1/pybind11/tests/test_pickling.cpp +0 -194
  270. plainmp-0.3.5.dev1/pybind11/tests/test_pickling.py +0 -95
  271. plainmp-0.3.5.dev1/pybind11/tests/test_python_multiple_inheritance.cpp +0 -45
  272. plainmp-0.3.5.dev1/pybind11/tests/test_python_multiple_inheritance.py +0 -36
  273. plainmp-0.3.5.dev1/pybind11/tests/test_pytypes.cpp +0 -926
  274. plainmp-0.3.5.dev1/pybind11/tests/test_pytypes.py +0 -1050
  275. plainmp-0.3.5.dev1/pybind11/tests/test_sequences_and_iterators.cpp +0 -600
  276. plainmp-0.3.5.dev1/pybind11/tests/test_sequences_and_iterators.py +0 -267
  277. plainmp-0.3.5.dev1/pybind11/tests/test_smart_ptr.cpp +0 -473
  278. plainmp-0.3.5.dev1/pybind11/tests/test_smart_ptr.py +0 -317
  279. plainmp-0.3.5.dev1/pybind11/tests/test_stl.cpp +0 -549
  280. plainmp-0.3.5.dev1/pybind11/tests/test_stl.py +0 -383
  281. plainmp-0.3.5.dev1/pybind11/tests/test_stl_binders.cpp +0 -275
  282. plainmp-0.3.5.dev1/pybind11/tests/test_stl_binders.py +0 -395
  283. plainmp-0.3.5.dev1/pybind11/tests/test_tagbased_polymorphic.cpp +0 -147
  284. plainmp-0.3.5.dev1/pybind11/tests/test_tagbased_polymorphic.py +0 -30
  285. plainmp-0.3.5.dev1/pybind11/tests/test_thread.cpp +0 -66
  286. plainmp-0.3.5.dev1/pybind11/tests/test_thread.py +0 -49
  287. plainmp-0.3.5.dev1/pybind11/tests/test_type_caster_pyobject_ptr.cpp +0 -167
  288. plainmp-0.3.5.dev1/pybind11/tests/test_type_caster_pyobject_ptr.py +0 -122
  289. plainmp-0.3.5.dev1/pybind11/tests/test_union.cpp +0 -22
  290. plainmp-0.3.5.dev1/pybind11/tests/test_union.py +0 -10
  291. plainmp-0.3.5.dev1/pybind11/tests/test_unnamed_namespace_a.cpp +0 -38
  292. plainmp-0.3.5.dev1/pybind11/tests/test_unnamed_namespace_a.py +0 -36
  293. plainmp-0.3.5.dev1/pybind11/tests/test_unnamed_namespace_b.cpp +0 -13
  294. plainmp-0.3.5.dev1/pybind11/tests/test_unnamed_namespace_b.py +0 -7
  295. plainmp-0.3.5.dev1/pybind11/tests/test_vector_unique_ptr_member.cpp +0 -54
  296. plainmp-0.3.5.dev1/pybind11/tests/test_vector_unique_ptr_member.py +0 -16
  297. plainmp-0.3.5.dev1/pybind11/tests/test_virtual_functions.cpp +0 -592
  298. plainmp-0.3.5.dev1/pybind11/tests/test_virtual_functions.py +0 -463
  299. plainmp-0.3.5.dev1/pybind11/tests/valgrind-numpy-scipy.supp +0 -140
  300. plainmp-0.3.5.dev1/pybind11/tests/valgrind-python.supp +0 -117
  301. plainmp-0.3.5.dev1/pybind11/tools/FindCatch.cmake +0 -76
  302. plainmp-0.3.5.dev1/pybind11/tools/FindEigen3.cmake +0 -86
  303. plainmp-0.3.5.dev1/pybind11/tools/FindPythonLibsNew.cmake +0 -310
  304. plainmp-0.3.5.dev1/pybind11/tools/JoinPaths.cmake +0 -23
  305. plainmp-0.3.5.dev1/pybind11/tools/check-style.sh +0 -44
  306. plainmp-0.3.5.dev1/pybind11/tools/cmake_uninstall.cmake.in +0 -23
  307. plainmp-0.3.5.dev1/pybind11/tools/codespell_ignore_lines_from_errors.py +0 -40
  308. plainmp-0.3.5.dev1/pybind11/tools/libsize.py +0 -38
  309. plainmp-0.3.5.dev1/pybind11/tools/make_changelog.py +0 -92
  310. plainmp-0.3.5.dev1/pybind11/tools/pybind11.pc.in +0 -7
  311. plainmp-0.3.5.dev1/pybind11/tools/pybind11Common.cmake +0 -429
  312. plainmp-0.3.5.dev1/pybind11/tools/pybind11Config.cmake.in +0 -233
  313. plainmp-0.3.5.dev1/pybind11/tools/pybind11GuessPythonExtSuffix.cmake +0 -86
  314. plainmp-0.3.5.dev1/pybind11/tools/pybind11NewTools.cmake +0 -341
  315. plainmp-0.3.5.dev1/pybind11/tools/pybind11Tools.cmake +0 -239
  316. plainmp-0.3.5.dev1/pybind11/tools/pyproject.toml +0 -3
  317. plainmp-0.3.5.dev1/pybind11/tools/setup_global.py.in +0 -63
  318. plainmp-0.3.5.dev1/pybind11/tools/setup_main.py.in +0 -44
  319. plainmp-0.3.5.dev1/pybind11/tools/test-pybind11GuessPythonExtSuffix.cmake +0 -161
  320. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/.flake8 +0 -0
  321. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/.github/workflows/check_mpl_requirement.yaml +0 -0
  322. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/.gitignore +0 -0
  323. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/LICENSE-BSD3 +0 -0
  324. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/.gitignore +0 -0
  325. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/LICENSE-MPL2 +0 -0
  326. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/add_header.sh +0 -0
  327. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/collision/kdtree.cpp +0 -0
  328. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/collision/kdtree.hpp +0 -0
  329. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/collision/primitive_sdf.hpp +0 -0
  330. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/sequential_constraint.cpp +0 -0
  331. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/constraints/sequential_constraint.hpp +0 -0
  332. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/kinematics/algorithm.cpp +0 -0
  333. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/kinematics/data_structure.hpp +0 -0
  334. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/kinematics/kinematics.cpp +0 -0
  335. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/kinematics/kinematics.hpp +0 -0
  336. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/kinematics/transform.hpp +0 -0
  337. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/ompl/.gitignore +0 -0
  338. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/ompl/algorithm_selector.cpp +0 -0
  339. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/ompl/algorithm_selector.hpp +0 -0
  340. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/ompl/custom_goal_samplable_region.cpp +0 -0
  341. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/ompl/custom_goal_samplable_region.hpp +0 -0
  342. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/ompl/generate_sequence.py +0 -0
  343. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/ompl/motion_validator.cpp +0 -0
  344. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/ompl/motion_validator.hpp +0 -0
  345. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/ompl/unidirectional_modified.cpp +0 -0
  346. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/cpp/plainmp/ompl/unidirectional_modified.hpp +0 -0
  347. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/attach_box_ik_and_plan.py +0 -0
  348. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/bench/.gitignore +0 -0
  349. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/bench/fetch_plan.py +0 -0
  350. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/bench/panda_plan.py +0 -0
  351. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/beta/humanoid_lift_and_place_box.py +0 -0
  352. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/beta/humanoid_planning.py +0 -0
  353. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/fetch_ik.py +0 -0
  354. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/fetch_plan.py +0 -0
  355. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/misc/fetch_visualize_coll_spheres.py +0 -0
  356. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/misc/panda_visualize_coll_spheres.py +0 -0
  357. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/misc/pr2_visualize_coll_spheres.py +0 -0
  358. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/openarm/openarm_dualarm.py +0 -0
  359. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/openarm/openarm_larm.py +0 -0
  360. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/openarm/openarm_rarm.py +0 -0
  361. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/panda_plan.py +0 -0
  362. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/pr2_dualarm_ik_and_plan.py +0 -0
  363. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/pr2_rarm_ik_and_plan.py +0 -0
  364. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/example/pr2_with_mobile_base.py +0 -0
  365. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/__init__.py +0 -0
  366. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/assets/openarm_v10.urdf +0 -0
  367. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/conf/fetch.yaml +0 -0
  368. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/conf/jaxon.yaml +0 -0
  369. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/conf/openarm_v10/collision_spheres.yaml +0 -0
  370. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/conf/openarm_v10/openarm_v10_dual.yaml +0 -0
  371. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/conf/openarm_v10/openarm_v10_larm.yaml +0 -0
  372. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/conf/openarm_v10/openarm_v10_rarm.yaml +0 -0
  373. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/conf/panda.yaml +0 -0
  374. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/conf/pr2_base_only.yaml +0 -0
  375. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/conf/pr2_common/aux.yaml +0 -0
  376. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/conf/pr2_common/collision_spheres.yaml +0 -0
  377. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/conf/pr2_common/end_effectors.yaml +0 -0
  378. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/conf/pr2_dualarm.yaml +0 -0
  379. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/conf/pr2_larm.yaml +0 -0
  380. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/conf/pr2_rarm.yaml +0 -0
  381. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/constraint.py +0 -0
  382. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/kdtree.py +0 -0
  383. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/kdtree.pyi +0 -0
  384. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/kinematics.py +0 -0
  385. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/manifold_rrt/__init__.py +0 -0
  386. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/manifold_rrt/_manifold_rrt_algorithms.py +0 -0
  387. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/manifold_rrt/manifold_rrt_solver.py +0 -0
  388. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/nlp_solver/__init__.py +0 -0
  389. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/nlp_solver/osqp_sqp.py +0 -0
  390. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/nlp_solver/sqp_based_solver.py +0 -0
  391. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/ompl_solver.py +0 -0
  392. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/parallel.py +0 -0
  393. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/problem.py +0 -0
  394. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/psdf.py +0 -0
  395. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/psdf.pyi +0 -0
  396. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/robot_spec.py +0 -0
  397. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/script/bubblify_to_plainmp.py +0 -0
  398. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/trajectory.py +0 -0
  399. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/src/plainmp/utils.py +0 -0
  400. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/tests/test_ik.py +0 -0
  401. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/tests/test_kdtree.py +0 -0
  402. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/tests/test_kinematics.py +0 -0
  403. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/tests/test_manifold_rrt.py +0 -0
  404. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/tests/test_ompl_solver.py +0 -0
  405. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/tests/test_psdf.py +0 -0
  406. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/tests/test_robot_spec.py +0 -0
  407. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/ompl-ertconnect/CMakeLists.txt +0 -0
  408. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/ompl-ertconnect/README.md +0 -0
  409. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/ompl-ertconnect/ertconnect/ERT.h +0 -0
  410. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/ompl-ertconnect/ertconnect/ERTConnect.h +0 -0
  411. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/ompl-ertconnect/ertconnect/ert/PlannerData.h +0 -0
  412. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/ompl-ertconnect/ertconnect/src/ERT.cpp +0 -0
  413. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/.gitignore +0 -0
  414. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/CMakeLists.txt +0 -0
  415. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/README.md +0 -0
  416. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/include/LICENSE +0 -0
  417. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/include/urdf_exception/exception.h +0 -0
  418. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/include/urdf_model/color.h +0 -0
  419. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/include/urdf_model/joint.h +0 -0
  420. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/include/urdf_model/link.h +0 -0
  421. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/include/urdf_model/model.h +0 -0
  422. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/include/urdf_model/pose.h +0 -0
  423. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/include/urdf_model/types.h +0 -0
  424. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/include/urdf_model/utils.h +0 -0
  425. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/include/urdf_parser/exportdecl.h +0 -0
  426. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/include/urdf_parser/urdf_parser.h +0 -0
  427. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/include/urdf_world/types.h +0 -0
  428. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/src/joint.cpp +0 -0
  429. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/src/link.cpp +0 -0
  430. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/src/model.cpp +0 -0
  431. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/src/pose.cpp +0 -0
  432. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/tinyxml/CMakeLists.txt +0 -0
  433. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/tinyxml/tinystr.cpp +0 -0
  434. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/tinyxml/tinystr.h +0 -0
  435. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/tinyxml/tinyxml.cpp +0 -0
  436. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/tinyxml/tinyxml.h +0 -0
  437. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/tinyxml/tinyxmlerror.cpp +0 -0
  438. {plainmp-0.3.5.dev1 → plainmp-0.3.6}/third/urdf_parser/tinyxml/tinyxmlparser.cpp +0 -0
@@ -0,0 +1,2 @@
1
+ # Keep the lockfile in Git without expanding thousands of lines in diffs.
2
+ uv.lock -diff
@@ -17,6 +17,8 @@ on:
17
17
  jobs:
18
18
  build:
19
19
  runs-on: ${{ matrix.os }}
20
+ env:
21
+ UV_PYTHON: ${{ matrix.python-version }}
20
22
  strategy:
21
23
  matrix:
22
24
  os: [ubuntu-latest, macos-latest]
@@ -30,6 +32,11 @@ jobs:
30
32
  with:
31
33
  python-version: ${{ matrix.python-version }}
32
34
 
35
+ - name: Install the latest version of uv
36
+ uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
37
+ with:
38
+ enable-cache: true
39
+
33
40
  - name: Update Submodules
34
41
  run: git submodule update --init --recursive
35
42
 
@@ -38,37 +45,32 @@ jobs:
38
45
  run: |
39
46
  sudo apt-get update
40
47
  sudo apt-get install libspatialindex-dev freeglut3-dev libsuitesparse-dev libblas-dev liblapack-dev
41
- pip install scikit-robot
42
48
 
43
49
  - name: Install scikit-robot (macOS)
44
50
  if: matrix.os == 'macos-latest'
45
51
  run: |
46
52
  brew install spatialindex suite-sparse openblas lapack
47
- pip install scikit-robot
48
53
 
49
54
  - name: Install This Package (Ubuntu)
50
55
  if: matrix.os == 'ubuntu-latest'
51
56
  run: |
52
57
  sudo apt-get install libeigen3-dev libboost-all-dev libompl-dev
53
- python3 -m pip install --upgrade pip
54
- python3 -m pip install build
55
- python3 -m build . --sdist # install sdist version to detect packaging-related issues
56
- MAKEFLAGS="-j$(nproc)" pip install dist/*.tar.gz
57
58
 
58
59
  - name: Install This Package (macOS)
59
60
  if: matrix.os == 'macos-latest'
60
61
  run: |
61
62
  brew install eigen boost ompl
62
- python3 -m pip install --upgrade pip
63
- python3 -m pip install build
64
- python3 -m build . --sdist # install sdist version to detect packaging-related issues
65
- MAKEFLAGS="-j$(sysctl -n hw.ncpu)" pip install dist/*.tar.gz
63
+
64
+ - name: Build and install source distribution
65
+ run: |
66
+ uv build --sdist
67
+ uv sync --locked --no-install-project
68
+ uv pip install --python .venv/bin/python dist/*.tar.gz
66
69
 
67
70
  - name: Test
68
71
  run: |
69
- pip install pytest
70
72
  for i in {1..3}; do
71
- if pytest tests; then
73
+ if uv run --no-sync pytest tests; then
72
74
  exit 0
73
75
  fi
74
76
  echo "Test failed... retrying ($i)"
@@ -81,7 +83,7 @@ jobs:
81
83
  run: |
82
84
  run_example() {
83
85
  for i in {1..3}; do
84
- if python3 "$1" $2; then
86
+ if uv run --no-sync python "$1" $2; then
85
87
  return 0
86
88
  fi
87
89
  echo "$1 failed... retrying ($i)"
@@ -13,6 +13,8 @@ on:
13
13
  jobs:
14
14
  lint:
15
15
  runs-on: ubuntu-latest
16
+ env:
17
+ UV_PYTHON: "3.8"
16
18
  steps:
17
19
  - name: Checkout Code
18
20
  uses: actions/checkout@v2
@@ -20,19 +22,25 @@ jobs:
20
22
  uses: actions/setup-python@v5
21
23
  with:
22
24
  python-version: 3.8
23
- - name: pip install formatters
24
- run: |
25
- pip3 install black==22.6.0 isort flake8 autoflake codespell
25
+ - name: Install the latest version of uv
26
+ uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
27
+ with:
28
+ enable-cache: true
29
+
30
+ - name: Install formatters
31
+ run: uv sync --locked --only-group lint
26
32
 
27
33
  - name: install clang-format
28
34
  run: |
29
35
  sudo apt-get update
30
36
  sudo apt-get install clang-format-14
31
- clang-format --version
37
+ clang-format-14 --version
32
38
 
33
39
  - name: check
40
+ env:
41
+ CLANG_FORMAT: clang-format-14
34
42
  run: |
35
- bash format.sh
43
+ uv run --no-sync bash format.sh
36
44
 
37
45
  - name: Fail if format.sh modified files
38
46
  run: |
@@ -17,6 +17,11 @@ jobs:
17
17
  with:
18
18
  python-version: ${{ matrix.python-version }}
19
19
 
20
+ - name: Install the latest version of uv
21
+ uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
22
+ with:
23
+ enable-cache: true
24
+
20
25
  - name: Install system dependencies
21
26
  run: |
22
27
  sudo apt-get update
@@ -24,17 +29,16 @@ jobs:
24
29
 
25
30
  - name: Install plainmp from PyPI
26
31
  run: |
27
- python3 -m pip install --upgrade pip
28
- pip install plainmp
32
+ uv venv --python "${{ matrix.python-version }}" "$RUNNER_TEMP/plainmp-pypi-venv"
33
+ uv pip install --python "$RUNNER_TEMP/plainmp-pypi-venv/bin/python" plainmp pytest
29
34
 
30
35
  - name: Checkout Code (for examples and tests)
31
36
  uses: actions/checkout@v3
32
37
 
33
38
  - name: Test
34
39
  run: |
35
- pip install pytest
36
40
  for i in {1..3}; do
37
- if pytest tests; then
41
+ if "$RUNNER_TEMP/plainmp-pypi-venv/bin/python" -m pytest tests; then
38
42
  exit 0
39
43
  fi
40
44
  echo "Test failed... retrying ($i)"
@@ -14,13 +14,13 @@ jobs:
14
14
  uses: actions/setup-python@v5
15
15
  with:
16
16
  python-version: '3.x'
17
- - name: Install publishing dependencies
18
- run: |
19
- python -m pip install --upgrade pip
20
- pip install wheel twine scikit-build build
17
+ - name: Install the latest version of uv
18
+ uses: astral-sh/setup-uv@bec219d24cd3e171d82865faccec33120bb574f4 # v10.1.0
21
19
 
22
20
  - name: Build and publish
21
+ env:
22
+ UV_PUBLISH_TOKEN: ${{ secrets.PYPI_TOKEN }}
23
23
  run: |
24
24
  git submodule update --init
25
- python -m build . --sdist
26
- twine upload --skip-existing -u __token__ -p ${{ secrets.PYPI_TOKEN }} dist/*
25
+ uv build --sdist
26
+ uv publish --check-url https://pypi.org/simple dist/*.tar.gz
@@ -1,4 +1,5 @@
1
- cmake_minimum_required(VERSION 3.10)
1
+ cmake_minimum_required(VERSION 3.15)
2
+ project(plainmp LANGUAGES C CXX)
2
3
  set(CMAKE_CXX_STANDARD 17)
3
4
  if(NOT CMAKE_BUILD_TYPE)
4
5
  set(CMAKE_BUILD_TYPE Release)
@@ -45,8 +46,25 @@ add_custom_target(generate_sequence_table
45
46
 
46
47
  file(GLOB_RECURSE SRC_FILES cpp/*.cpp)
47
48
  include_directories(cpp)
48
- add_subdirectory(pybind11)
49
- pybind11_add_module(_plainmp ${SRC_FILES})
49
+ if(CMAKE_VERSION VERSION_LESS 3.18)
50
+ set(DEV_MODULE Development)
51
+ else()
52
+ set(DEV_MODULE Development.Module)
53
+ endif()
54
+ find_package(Python 3.8 COMPONENTS Interpreter ${DEV_MODULE} REQUIRED)
55
+ execute_process(
56
+ COMMAND "${Python_EXECUTABLE}" -m nanobind --cmake_dir
57
+ OUTPUT_STRIP_TRAILING_WHITESPACE
58
+ OUTPUT_VARIABLE nanobind_ROOT
59
+ RESULT_VARIABLE nanobind_result
60
+ )
61
+ if(NOT nanobind_result EQUAL 0)
62
+ message(FATAL_ERROR "Could not locate nanobind for ${Python_EXECUTABLE}")
63
+ endif()
64
+ find_package(nanobind CONFIG REQUIRED)
65
+ # Match the optimization of the former pybind11 target. LTO is also needed by
66
+ # the statically linked ERTConnect planner with OMPL 1.6 and GCC 9.
67
+ nanobind_add_module(_plainmp NOMINSIZE LTO ${SRC_FILES})
50
68
  add_dependencies(_plainmp generate_sequence_table)
51
69
 
52
70
  if (TARGET ompl::ompl)
@@ -1,9 +1,10 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: plainmp
3
- Version: 0.3.5.dev1
3
+ Version: 0.3.6
4
4
  Summary: Very fast motion planning for articulated robot, through a bit of premature-optimization (C++ core with Python bindings) *less than 1ms for moderate problems
5
5
  Author: Hirokazu Ishida
6
6
  License: MPL2.0 for C++ core and BSD3 for Python bindings
7
+ Requires-Python: >=3.8
7
8
  Requires-Dist: rospkg
8
9
  Requires-Dist: numpy
9
10
  Requires-Dist: scipy
@@ -12,4 +13,5 @@ Requires-Dist: pyyaml
12
13
  Requires-Dist: robot_descriptions
13
14
  Requires-Dist: osqp<1.0.0
14
15
  Requires-Dist: tyro
16
+ Requires-Dist: matplotlib>=3.7.5
15
17
 
@@ -41,26 +41,37 @@ panda dual bars: median 0.17 ms | panda ceiled dual bars: median 0.65 ms | fetch
41
41
 
42
42
  The plots are generated by the following commands:
43
43
  ```bash
44
- python3 example/bench/panda_plan.py # panda dual bars
45
- python3 example/bench/panda_plan.py --difficult # panda ceiled dual bars
46
- python3 example/bench/fetch_plan.py # fetch table
44
+ uv run python example/bench/panda_plan.py # panda dual bars
45
+ uv run python example/bench/panda_plan.py --difficult # panda ceiled dual bars
46
+ uv run python example/bench/fetch_plan.py # fetch table
47
47
  ```
48
48
 
49
- ## installation and usage (Ubuntu/macOS)
49
+ ## Installation and development (Ubuntu/macOS)
50
+ Install [uv](https://docs.astral.sh/uv/getting-started/installation/) first. The C++ extension also needs system libraries.
51
+
50
52
  On Ubuntu:
51
53
  ```bash
52
54
  sudo apt install libeigen3-dev libboost-all-dev libompl-dev libspatialindex-dev freeglut3-dev libsuitesparse-dev libblas-dev liblapack-dev
53
- pip install plainmp # or build from source after git submodules update --init
54
55
  ```
55
56
  On macOS:
56
57
  ```bash
57
58
  brew install eigen boost ompl spatialindex suite-sparse openblas lapack
58
- pip install plainmp # or build from source after git submodules update --init
59
59
  ```
60
60
 
61
- Then try examples in [example directory](./example) with `--visualize` option. Note that you may need to install the following for visualization:
61
+ To use the published package in another uv project, run `uv add plainmp`. To work on this repository:
62
+
63
+ ```bash
64
+ git submodule update --init --recursive
65
+ uv sync --locked
66
+ uv run pytest tests
67
+ uv run python example/fetch_ik.py
68
+ ```
69
+
70
+ `uv sync` builds and installs the C++ extension through scikit-build-core. After changing C++ sources, rebuild it with `uv sync --reinstall-package plainmp`. To run the formatter, install its dependency group with `uv sync --locked --group lint`, then run `uv run --no-sync bash format.sh`.
71
+
72
+ Try examples in the [example directory](./example) with `--visualize` if desired. Visualization may need a patched `pyrender`:
62
73
  ```bash
63
- pip uninstall -y pyrender && pip install git+https://github.com/mmatl/pyrender.git --no-cache-dir
74
+ uv pip install --python .venv/bin/python --reinstall git+https://github.com/mmatl/pyrender.git
64
75
  ```
65
76
 
66
77
  ## Troubleshooting
@@ -73,7 +84,7 @@ pip uninstall -y pyrender && pip install git+https://github.com/mmatl/pyrender.g
73
84
  - (step 3) Write yaml file defining urdf location/collision information/control joints/end effector in (see [example yaml files](./src/plainmp/conf/)). For determining the sphere locations, tools like [bheijden/bubblify](https://github.com/bheijden/bubblify) or [CoMMALab/form](https://github.com/CoMMALab/foam) will be useful.
74
85
  Note that we provides convenience script to convert bubblify output yaml file to plainmp format:
75
86
  ```bash
76
- python3 -m plainmp.script.bubblify_to_plainmp --path <path_to_bubblify_output_yaml>
87
+ uv run python -m plainmp.script.bubblify_to_plainmp --path <path_to_bubblify_output_yaml>
77
88
  ```
78
89
 
79
90
  ## Note on motion validator of motion planning
@@ -0,0 +1,50 @@
1
+ /*
2
+ * plainmp - library for fast motion planning
3
+ *
4
+ * Copyright (C) 2024 Hirokazu Ishida
5
+ *
6
+ * This Source Code Form is subject to the terms of the Mozilla Public
7
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
8
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
9
+ */
10
+
11
+ #include <nanobind/eigen/dense.h>
12
+ #include <nanobind/eigen/sparse.h>
13
+ #include <nanobind/nanobind.h>
14
+ #include <nanobind/stl/function.h>
15
+ #include <nanobind/stl/optional.h>
16
+ #include <nanobind/stl/pair.h>
17
+ #include <nanobind/stl/shared_ptr.h>
18
+ #include <nanobind/stl/string.h>
19
+ #include <nanobind/stl/vector.h>
20
+ #include <stdexcept>
21
+
22
+ namespace plainmp::bindings {
23
+
24
+ namespace nb = nanobind;
25
+
26
+ inline Eigen::VectorXd vector_from_sequence(nb::sequence values) {
27
+ Eigen::VectorXd vector(nb::len(values));
28
+ for (size_t i = 0; i < nb::len(values); ++i) {
29
+ vector[i] = nb::cast<double>(values[i]);
30
+ }
31
+ return vector;
32
+ }
33
+
34
+ inline Eigen::Vector3d vector3_from_sequence(nb::sequence values) {
35
+ if (nb::len(values) != 3) {
36
+ throw std::invalid_argument("expected a 3-element vector");
37
+ }
38
+ Eigen::Vector3d vector;
39
+ for (size_t i = 0; i < 3; ++i) {
40
+ vector[i] = nb::cast<double>(values[i]);
41
+ }
42
+ return vector;
43
+ }
44
+ void bind_kdtree_submodule(nb::module_& m);
45
+ void bind_primitive_submodule(nb::module_& m);
46
+ void bind_constraint_submodule(nb::module_& m);
47
+ void bind_kinematics_submodule(nb::module_& m);
48
+ void bind_ompl_wrapper_submodule(nb::module_& m);
49
+
50
+ } // namespace plainmp::bindings
@@ -0,0 +1,165 @@
1
+ /*
2
+ * plainmp - library for fast motion planning
3
+ *
4
+ * Copyright (C) 2024 Hirokazu Ishida
5
+ *
6
+ * This Source Code Form is subject to the terms of the Mozilla Public
7
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
8
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
9
+ */
10
+
11
+ #include "plainmp/bindings/bindings.hpp"
12
+ #include "plainmp/constraints/composite_constraint.hpp"
13
+ #include "plainmp/constraints/primitive.hpp"
14
+ #include "plainmp/constraints/primitive_com_in_polytope.hpp"
15
+ #include "plainmp/constraints/primitive_config_point.hpp"
16
+ #include "plainmp/constraints/primitive_fixed_zaxis.hpp"
17
+ #include "plainmp/constraints/primitive_link_pose.hpp"
18
+ #include "plainmp/constraints/primitive_link_position_bound.hpp"
19
+ #include "plainmp/constraints/primitive_relative_pose.hpp"
20
+ #include "plainmp/constraints/primitive_sphere_collision.hpp"
21
+ #include "plainmp/constraints/sequential_constraint.hpp"
22
+
23
+ using namespace plainmp::constraint;
24
+ using namespace plainmp::collision;
25
+ using namespace plainmp::kinematics;
26
+
27
+ namespace plainmp::bindings {
28
+
29
+ using OutputValues = nb::ndarray<double, nb::numpy, nb::ndim<1>, nb::c_contig>;
30
+ using OutputJacobian =
31
+ nb::ndarray<double, nb::numpy, nb::ndim<2>, nb::f_contig>;
32
+
33
+ template <typename Constraint>
34
+ void evaluate_into(Constraint& self,
35
+ const Eigen::VectorXd& q,
36
+ OutputValues values,
37
+ OutputJacobian jacobian) {
38
+ const size_t rows = self.cst_dim();
39
+ if (values.shape(0) != rows || jacobian.shape(0) != rows ||
40
+ jacobian.shape(1) != static_cast<size_t>(q.size())) {
41
+ throw std::invalid_argument("evaluate_into output shape mismatch");
42
+ }
43
+ Eigen::Map<Eigen::VectorXd> result_values(values.data(), rows);
44
+ Eigen::Map<Eigen::MatrixXd> result_jacobian(jacobian.data(), rows, q.size());
45
+ self.evaluate_into(q, result_values, result_jacobian);
46
+ }
47
+
48
+ void bind_constraint_submodule(nb::module_& m) {
49
+ auto cst_m = m.def_submodule("constraint");
50
+ nb::class_<ConstraintBase>(cst_m, "ConstraintBase")
51
+ .def("update_kintree", &ConstraintBase::update_kintree)
52
+ .def("evaluate", &ConstraintBase::evaluate)
53
+ .def("evaluate_into", &evaluate_into<ConstraintBase>, nb::arg("q"),
54
+ nb::arg("values").noconvert(), nb::arg("jacobian").noconvert())
55
+ .def("cst_dim", &ConstraintBase::cst_dim)
56
+ .def("get_kin", &ConstraintBase::get_kin)
57
+ .def("get_control_joint_names", &ConstraintBase::get_control_joint_names);
58
+ nb::class_<EqConstraintBase, ConstraintBase>(cst_m, "EqConstraintBase");
59
+ nb::class_<IneqConstraintBase, ConstraintBase>(cst_m, "IneqConstraintBase");
60
+ nb::class_<ConfigPointCst, EqConstraintBase>(cst_m, "ConfigPointCst")
61
+ .def(nb::init<std::shared_ptr<kin::KinematicModel<double>>,
62
+ const std::vector<std::string>&, BaseType,
63
+ const Eigen::VectorXd&>())
64
+ .def("cst_dim", &ConfigPointCst::cst_dim);
65
+ nb::class_<LinkPoseCst, EqConstraintBase>(cst_m, "LinkPoseCst")
66
+ .def("__init__",
67
+ [](LinkPoseCst* self,
68
+ std::shared_ptr<kin::KinematicModel<double>> kin,
69
+ const std::vector<std::string>& control_joint_names,
70
+ BaseType base_type, const std::vector<std::string>& link_names,
71
+ nb::sequence poses) {
72
+ std::vector<Eigen::VectorXd> converted;
73
+ converted.reserve(nb::len(poses));
74
+ for (nb::handle pose : poses) {
75
+ nb::sequence values = nb::cast<nb::sequence>(pose);
76
+ converted.push_back(vector_from_sequence(values));
77
+ }
78
+ new (self) LinkPoseCst(std::move(kin), control_joint_names,
79
+ base_type, link_names, converted);
80
+ })
81
+ .def("cst_dim", &LinkPoseCst::cst_dim)
82
+ .def("get_desired_poses", &LinkPoseCst::get_desired_poses);
83
+ nb::class_<RelativePoseCst, EqConstraintBase>(cst_m, "RelativePoseCst")
84
+ .def(nb::init<std::shared_ptr<kin::KinematicModel<double>>,
85
+ const std::vector<std::string>&, BaseType,
86
+ const std::string&, const std::string&,
87
+ const Eigen::Vector3d&>());
88
+ nb::class_<FixedZAxisCst, EqConstraintBase>(cst_m, "FixedZAxisCst")
89
+ .def(nb::init<std::shared_ptr<kin::KinematicModel<double>>,
90
+ const std::vector<std::string>&, BaseType,
91
+ const std::string&>());
92
+ nb::class_<SphereAttachmentSpec>(cst_m, "SphereAttachmentSpec")
93
+ .def(nb::init<const std::string&, const Eigen::Matrix3Xd&,
94
+ Eigen::VectorXd, bool>())
95
+ .def_ro("parent_link_name", &SphereAttachmentSpec::parent_link_name)
96
+ .def_rw("relative_positions", &SphereAttachmentSpec::relative_positions)
97
+ .def_rw("radii", &SphereAttachmentSpec::radii);
98
+
99
+ nb::class_<SphereCollisionCst, IneqConstraintBase>(cst_m,
100
+ "SphereCollisionCst")
101
+ .def(nb::init<std::shared_ptr<kin::KinematicModel<double>>,
102
+ const std::vector<std::string>&, BaseType,
103
+ const std::vector<SphereAttachmentSpec>&,
104
+ const std::vector<std::pair<std::string, std::string>>&,
105
+ std::optional<SDFBase::Ptr>, bool>(),
106
+ nb::arg("kin"), nb::arg("control_joint_names"), nb::arg("base_type"),
107
+ nb::arg("attachments"), nb::arg("self_collision_pairs"),
108
+ nb::arg("sdf").none(), nb::arg("use_mesh"))
109
+ .def("set_sdf", &SphereCollisionCst::set_sdf)
110
+ .def("get_sdf", &SphereCollisionCst::get_sdf)
111
+ .def("is_valid", &SphereCollisionCst::is_valid)
112
+ .def("get_group_spheres", &SphereCollisionCst::get_group_spheres)
113
+ .def("get_all_spheres", &SphereCollisionCst::get_all_spheres);
114
+
115
+ nb::class_<AppliedForceSpec>(cst_m, "AppliedForceSpec")
116
+ .def(nb::init<const std::string&, double>())
117
+ .def_ro("link_name", &AppliedForceSpec::link_name)
118
+ .def_ro("force", &AppliedForceSpec::force);
119
+
120
+ nb::class_<ComInPolytopeCst, IneqConstraintBase>(cst_m, "ComInPolytopeCst")
121
+ .def(nb::init<std::shared_ptr<kin::KinematicModel<double>>,
122
+ const std::vector<std::string>&, BaseType, BoxSDF::Ptr,
123
+ const std::vector<AppliedForceSpec>&>())
124
+ .def("is_valid", &ComInPolytopeCst::is_valid);
125
+ nb::class_<LinkPositionBoundCst, IneqConstraintBase>(cst_m,
126
+ "LinkPositionBoundCst")
127
+ .def(nb::init<std::shared_ptr<kin::KinematicModel<double>>,
128
+ const std::vector<std::string>&, BaseType,
129
+ const std::string&, size_t, const std::optional<double>&,
130
+ const std::optional<double>&>(),
131
+ nb::arg("kin"), nb::arg("control_joint_names"), nb::arg("base_type"),
132
+ nb::arg("link_name"), nb::arg("axis"), nb::arg("lower_bound").none(),
133
+ nb::arg("upper_bound").none())
134
+ .def("is_valid", &LinkPositionBoundCst::is_valid);
135
+ nb::class_<EqCompositeCst>(cst_m, "EqCompositeCst")
136
+ .def(nb::init<std::vector<EqConstraintBase::Ptr>>())
137
+ .def("evaluate", &EqCompositeCst::evaluate)
138
+ .def("evaluate_into", &evaluate_into<EqCompositeCst>, nb::arg("q"),
139
+ nb::arg("values").noconvert(), nb::arg("jacobian").noconvert())
140
+ .def("cst_dim", &EqCompositeCst::cst_dim)
141
+ .def_ro("constraints", &EqCompositeCst::constraints_);
142
+ nb::class_<IneqCompositeCst>(cst_m, "IneqCompositeCst")
143
+ .def(nb::init<std::vector<IneqConstraintBase::Ptr>>())
144
+ .def("evaluate", &IneqCompositeCst::evaluate)
145
+ .def("evaluate_into", &evaluate_into<IneqCompositeCst>, nb::arg("q"),
146
+ nb::arg("values").noconvert(), nb::arg("jacobian").noconvert())
147
+ .def("cst_dim", &IneqCompositeCst::cst_dim)
148
+ .def("is_valid", &IneqCompositeCst::is_valid)
149
+ .def("__str__", &IneqCompositeCst::to_string)
150
+ .def_ro("constraints", &IneqCompositeCst::constraints_);
151
+ nb::class_<SequentialCst>(cst_m, "SequentialCst")
152
+ .def(nb::init<size_t, size_t>())
153
+ .def("add_globally", &SequentialCst::add_globally)
154
+ .def("add_at", &SequentialCst::add_at)
155
+ .def("add_motion_step_box_constraint",
156
+ &SequentialCst::add_motion_step_box_constraint)
157
+ .def("add_fixed_point_at", &SequentialCst::add_fixed_point_at)
158
+ .def("finalize", &SequentialCst::finalize)
159
+ .def("evaluate", &SequentialCst::evaluate)
160
+ .def("__str__", &SequentialCst::to_string)
161
+ .def("x_dim", &SequentialCst::x_dim)
162
+ .def("cst_dim", &SequentialCst::cst_dim);
163
+ }
164
+
165
+ } // namespace plainmp::bindings
@@ -15,10 +15,10 @@
15
15
  using namespace plainmp::collision;
16
16
 
17
17
  namespace plainmp::bindings {
18
- void bind_kdtree_submodule(py::module& m) {
18
+ void bind_kdtree_submodule(nb::module_& m) {
19
19
  auto m_kdtree = m.def_submodule("kdtree");
20
- py::class_<KDTree>(m_kdtree, "KDTree")
21
- .def(py::init<const std::vector<Eigen::Vector3d>&>())
20
+ nb::class_<KDTree>(m_kdtree, "KDTree")
21
+ .def(nb::init<const std::vector<Eigen::Vector3d>&>())
22
22
  .def("query", &KDTree::query)
23
23
  .def("sqdist", &KDTree::sqdist);
24
24
  }
@@ -0,0 +1,84 @@
1
+ /*
2
+ * plainmp - library for fast motion planning
3
+ *
4
+ * Copyright (C) 2024 Hirokazu Ishida
5
+ *
6
+ * This Source Code Form is subject to the terms of the Mozilla Public
7
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
8
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
9
+ */
10
+
11
+ #include "plainmp/kinematics/kinematics.hpp"
12
+ #include "plainmp/bindings/bindings.hpp"
13
+ #include "plainmp/kinematics/kinematic_model_wrapper.hpp"
14
+
15
+ using namespace plainmp::kinematics;
16
+
17
+ namespace plainmp::bindings {
18
+
19
+ void bind_kinematics_submodule(nb::module_& m) {
20
+ auto m_kin = m.def_submodule("kinematics");
21
+ nb::class_<urdf::Link>(m_kin, "Link")
22
+ .def_ro("name", &urdf::Link::name)
23
+ .def_ro("id", &urdf::Link::id);
24
+
25
+ nb::enum_<BaseType>(m_kin, "BaseType")
26
+ .value("FIXED", BaseType::FIXED)
27
+ .value("FLOATING", BaseType::FLOATING)
28
+ .value("PLANAR", BaseType::PLANAR);
29
+
30
+ // parent class
31
+ nb::class_<KinematicModel<double>>(m_kin, "KinematicModel_cpp");
32
+
33
+ // child "binding" class
34
+ nb::class_<utils::_KinematicModel, KinematicModel<double>>(m_kin,
35
+ "KinematicModel")
36
+ .def(nb::init<std::string&>())
37
+ .def("add_new_link",
38
+ [](utils::_KinematicModel& self, const std::string& link_name,
39
+ const std::string& parent_name, nb::sequence position,
40
+ nb::sequence rpy, bool consider_rotation) {
41
+ const Eigen::Vector3d position_vec =
42
+ vector3_from_sequence(position);
43
+ const Eigen::Vector3d rpy_vec = vector3_from_sequence(rpy);
44
+ return self.add_new_link_py(
45
+ link_name, parent_name,
46
+ {position_vec.x(), position_vec.y(), position_vec.z()},
47
+ {rpy_vec.x(), rpy_vec.y(), rpy_vec.z()}, consider_rotation);
48
+ })
49
+ .def("debug_get_link_pose", &utils::_KinematicModel::debug_get_link_pose)
50
+ .def("set_joint_positions", &utils::_KinematicModel::set_joint_angles,
51
+ nb::arg("joint_ids"), nb::arg("positions"),
52
+ nb::arg("accurate") = true)
53
+ .def(
54
+ "set_joint_positions",
55
+ [](utils::_KinematicModel& self, const std::vector<size_t>& joint_ids,
56
+ nb::sequence positions, bool accurate) {
57
+ Eigen::VectorXd vector = vector_from_sequence(positions);
58
+ self.set_joint_angles(joint_ids, vector, accurate);
59
+ },
60
+ nb::arg("joint_ids"), nb::arg("positions"),
61
+ nb::arg("accurate") = true)
62
+ .def("get_joint_positions", &utils::_KinematicModel::get_joint_angles)
63
+ .def("set_base_pose", &utils::_KinematicModel::set_base_pose)
64
+ .def("set_base_pose",
65
+ [](utils::_KinematicModel& self, nb::sequence values) {
66
+ if (nb::len(values) != 7) {
67
+ throw std::invalid_argument("expected a 7-element pose");
68
+ }
69
+ const Eigen::VectorXd vector = vector_from_sequence(values);
70
+ self.set_base_pose(vector);
71
+ })
72
+ .def("get_base_pose", &utils::_KinematicModel::get_base_pose)
73
+ .def("get_joint_position_limits",
74
+ &utils::_KinematicModel::get_joint_position_limits)
75
+ .def("get_gravity_term", &utils::_KinematicModel::get_gravity_term,
76
+ nb::arg("joint_ids"), nb::arg("base_type") = BaseType::FIXED)
77
+ .def("get_gravity_term2", &utils::_KinematicModel::get_gravity_term2,
78
+ nb::arg("joint_ids"), nb::arg("positions"),
79
+ nb::arg("base_type") = BaseType::FIXED, nb::arg("accurate") = true)
80
+ .def("get_link_ids", &utils::_KinematicModel::get_link_ids)
81
+ .def("get_joint_ids", &utils::_KinematicModel::get_joint_ids);
82
+ }
83
+
84
+ } // namespace plainmp::bindings