plainmp 0.3.5.dev2__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 (437) hide show
  1. plainmp-0.3.6/.gitattributes +2 -0
  2. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/.github/workflows/build_and_test.yaml +15 -13
  3. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/.github/workflows/check_format.yaml +13 -5
  4. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/.github/workflows/check_pypi_install.yaml +8 -4
  5. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/.github/workflows/release.yaml +6 -6
  6. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/CMakeLists.txt +21 -3
  7. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/PKG-INFO +3 -1
  8. {plainmp-0.3.5.dev2 → 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.dev2 → 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.dev2 → 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.dev2 → plainmp-0.3.6}/cpp/plainmp/bindings/python.cpp +1 -1
  16. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/composite_constraint.hpp +16 -4
  17. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive.hpp +17 -1
  18. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_com_in_polytope.cpp +3 -7
  19. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_com_in_polytope.hpp +2 -1
  20. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_config_point.cpp +14 -14
  21. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_config_point.hpp +2 -1
  22. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_fixed_zaxis.cpp +3 -5
  23. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_fixed_zaxis.hpp +2 -1
  24. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_link_pose.cpp +2 -4
  25. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_link_pose.hpp +2 -1
  26. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_link_position_bound.cpp +3 -8
  27. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_link_position_bound.hpp +2 -1
  28. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_relative_pose.cpp +2 -4
  29. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_relative_pose.hpp +2 -1
  30. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_sphere_collision.cpp +6 -8
  31. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/primitive_sphere_collision.hpp +7 -4
  32. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/ompl/ompl_thin_wrap.hpp +4 -2
  33. plainmp-0.3.6/format.sh +17 -0
  34. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/pyproject.toml +10 -6
  35. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/constraint.pyi +8 -0
  36. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/ik.py +23 -3
  37. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/tests/test_constraints.py +51 -0
  38. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/ompl-ertconnect/ertconnect/src/ERTConnect.cpp +3 -3
  39. plainmp-0.3.6/uv.lock +5760 -0
  40. plainmp-0.3.5.dev2/.gitmodules +0 -3
  41. plainmp-0.3.5.dev2/cpp/plainmp/bindings/bindings.hpp +0 -24
  42. plainmp-0.3.5.dev2/cpp/plainmp/bindings/constraint.cpp +0 -128
  43. plainmp-0.3.5.dev2/cpp/plainmp/bindings/kinematics.cpp +0 -58
  44. plainmp-0.3.5.dev2/cpp/plainmp/bindings/primitive.cpp +0 -114
  45. plainmp-0.3.5.dev2/format.sh +0 -12
  46. plainmp-0.3.5.dev2/pybind11/.appveyor.yml +0 -35
  47. plainmp-0.3.5.dev2/pybind11/.clang-format +0 -38
  48. plainmp-0.3.5.dev2/pybind11/.clang-tidy +0 -77
  49. plainmp-0.3.5.dev2/pybind11/.cmake-format.yaml +0 -73
  50. plainmp-0.3.5.dev2/pybind11/.codespell-ignore-lines +0 -24
  51. plainmp-0.3.5.dev2/pybind11/.git +0 -1
  52. plainmp-0.3.5.dev2/pybind11/.gitattributes +0 -1
  53. plainmp-0.3.5.dev2/pybind11/.github/CODEOWNERS +0 -9
  54. plainmp-0.3.5.dev2/pybind11/.github/CONTRIBUTING.md +0 -388
  55. plainmp-0.3.5.dev2/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +0 -61
  56. plainmp-0.3.5.dev2/pybind11/.github/ISSUE_TEMPLATE/config.yml +0 -8
  57. plainmp-0.3.5.dev2/pybind11/.github/dependabot.yml +0 -15
  58. plainmp-0.3.5.dev2/pybind11/.github/labeler.yml +0 -13
  59. plainmp-0.3.5.dev2/pybind11/.github/labeler_merged.yml +0 -8
  60. plainmp-0.3.5.dev2/pybind11/.github/matchers/pylint.json +0 -32
  61. plainmp-0.3.5.dev2/pybind11/.github/pull_request_template.md +0 -19
  62. plainmp-0.3.5.dev2/pybind11/.github/workflows/ci.yml +0 -1235
  63. plainmp-0.3.5.dev2/pybind11/.github/workflows/configure.yml +0 -92
  64. plainmp-0.3.5.dev2/pybind11/.github/workflows/emscripten.yaml +0 -30
  65. plainmp-0.3.5.dev2/pybind11/.github/workflows/format.yml +0 -60
  66. plainmp-0.3.5.dev2/pybind11/.github/workflows/labeler.yml +0 -25
  67. plainmp-0.3.5.dev2/pybind11/.github/workflows/pip.yml +0 -117
  68. plainmp-0.3.5.dev2/pybind11/.github/workflows/upstream.yml +0 -116
  69. plainmp-0.3.5.dev2/pybind11/.gitignore +0 -46
  70. plainmp-0.3.5.dev2/pybind11/.pre-commit-config.yaml +0 -156
  71. plainmp-0.3.5.dev2/pybind11/.readthedocs.yml +0 -20
  72. plainmp-0.3.5.dev2/pybind11/CMakeLists.txt +0 -376
  73. plainmp-0.3.5.dev2/pybind11/LICENSE +0 -29
  74. plainmp-0.3.5.dev2/pybind11/MANIFEST.in +0 -6
  75. plainmp-0.3.5.dev2/pybind11/README.rst +0 -181
  76. plainmp-0.3.5.dev2/pybind11/SECURITY.md +0 -13
  77. plainmp-0.3.5.dev2/pybind11/docs/Doxyfile +0 -21
  78. plainmp-0.3.5.dev2/pybind11/docs/Makefile +0 -192
  79. plainmp-0.3.5.dev2/pybind11/docs/_static/css/custom.css +0 -3
  80. plainmp-0.3.5.dev2/pybind11/docs/advanced/cast/chrono.rst +0 -81
  81. plainmp-0.3.5.dev2/pybind11/docs/advanced/cast/custom.rst +0 -93
  82. plainmp-0.3.5.dev2/pybind11/docs/advanced/cast/eigen.rst +0 -310
  83. plainmp-0.3.5.dev2/pybind11/docs/advanced/cast/functional.rst +0 -109
  84. plainmp-0.3.5.dev2/pybind11/docs/advanced/cast/index.rst +0 -43
  85. plainmp-0.3.5.dev2/pybind11/docs/advanced/cast/overview.rst +0 -170
  86. plainmp-0.3.5.dev2/pybind11/docs/advanced/cast/stl.rst +0 -249
  87. plainmp-0.3.5.dev2/pybind11/docs/advanced/cast/strings.rst +0 -296
  88. plainmp-0.3.5.dev2/pybind11/docs/advanced/classes.rst +0 -1335
  89. plainmp-0.3.5.dev2/pybind11/docs/advanced/embedding.rst +0 -262
  90. plainmp-0.3.5.dev2/pybind11/docs/advanced/exceptions.rst +0 -401
  91. plainmp-0.3.5.dev2/pybind11/docs/advanced/functions.rst +0 -614
  92. plainmp-0.3.5.dev2/pybind11/docs/advanced/misc.rst +0 -429
  93. plainmp-0.3.5.dev2/pybind11/docs/advanced/pycpp/index.rst +0 -13
  94. plainmp-0.3.5.dev2/pybind11/docs/advanced/pycpp/numpy.rst +0 -453
  95. plainmp-0.3.5.dev2/pybind11/docs/advanced/pycpp/object.rst +0 -286
  96. plainmp-0.3.5.dev2/pybind11/docs/advanced/pycpp/utilities.rst +0 -155
  97. plainmp-0.3.5.dev2/pybind11/docs/advanced/smart_ptrs.rst +0 -174
  98. plainmp-0.3.5.dev2/pybind11/docs/basics.rst +0 -307
  99. plainmp-0.3.5.dev2/pybind11/docs/benchmark.py +0 -89
  100. plainmp-0.3.5.dev2/pybind11/docs/benchmark.rst +0 -95
  101. plainmp-0.3.5.dev2/pybind11/docs/changelog.rst +0 -3121
  102. plainmp-0.3.5.dev2/pybind11/docs/classes.rst +0 -555
  103. plainmp-0.3.5.dev2/pybind11/docs/cmake/index.rst +0 -8
  104. plainmp-0.3.5.dev2/pybind11/docs/compiling.rst +0 -726
  105. plainmp-0.3.5.dev2/pybind11/docs/conf.py +0 -369
  106. plainmp-0.3.5.dev2/pybind11/docs/faq.rst +0 -308
  107. plainmp-0.3.5.dev2/pybind11/docs/index.rst +0 -48
  108. plainmp-0.3.5.dev2/pybind11/docs/installing.rst +0 -105
  109. plainmp-0.3.5.dev2/pybind11/docs/limitations.rst +0 -68
  110. plainmp-0.3.5.dev2/pybind11/docs/pybind11-logo.png +0 -0
  111. plainmp-0.3.5.dev2/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
  112. plainmp-0.3.5.dev2/pybind11/docs/pybind11_vs_boost_python1.svg +0 -427
  113. plainmp-0.3.5.dev2/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
  114. plainmp-0.3.5.dev2/pybind11/docs/pybind11_vs_boost_python2.svg +0 -427
  115. plainmp-0.3.5.dev2/pybind11/docs/reference.rst +0 -130
  116. plainmp-0.3.5.dev2/pybind11/docs/release.rst +0 -143
  117. plainmp-0.3.5.dev2/pybind11/docs/requirements.in +0 -6
  118. plainmp-0.3.5.dev2/pybind11/docs/requirements.txt +0 -275
  119. plainmp-0.3.5.dev2/pybind11/docs/upgrade.rst +0 -594
  120. plainmp-0.3.5.dev2/pybind11/include/pybind11/attr.h +0 -690
  121. plainmp-0.3.5.dev2/pybind11/include/pybind11/buffer_info.h +0 -208
  122. plainmp-0.3.5.dev2/pybind11/include/pybind11/cast.h +0 -1855
  123. plainmp-0.3.5.dev2/pybind11/include/pybind11/chrono.h +0 -225
  124. plainmp-0.3.5.dev2/pybind11/include/pybind11/common.h +0 -2
  125. plainmp-0.3.5.dev2/pybind11/include/pybind11/complex.h +0 -74
  126. plainmp-0.3.5.dev2/pybind11/include/pybind11/detail/class.h +0 -754
  127. plainmp-0.3.5.dev2/pybind11/include/pybind11/detail/common.h +0 -1284
  128. plainmp-0.3.5.dev2/pybind11/include/pybind11/detail/descr.h +0 -172
  129. plainmp-0.3.5.dev2/pybind11/include/pybind11/detail/init.h +0 -436
  130. plainmp-0.3.5.dev2/pybind11/include/pybind11/detail/internals.h +0 -764
  131. plainmp-0.3.5.dev2/pybind11/include/pybind11/detail/type_caster_base.h +0 -1154
  132. plainmp-0.3.5.dev2/pybind11/include/pybind11/detail/typeid.h +0 -65
  133. plainmp-0.3.5.dev2/pybind11/include/pybind11/detail/value_and_holder.h +0 -77
  134. plainmp-0.3.5.dev2/pybind11/include/pybind11/eigen/common.h +0 -9
  135. plainmp-0.3.5.dev2/pybind11/include/pybind11/eigen/matrix.h +0 -714
  136. plainmp-0.3.5.dev2/pybind11/include/pybind11/eigen/tensor.h +0 -517
  137. plainmp-0.3.5.dev2/pybind11/include/pybind11/eigen.h +0 -12
  138. plainmp-0.3.5.dev2/pybind11/include/pybind11/embed.h +0 -313
  139. plainmp-0.3.5.dev2/pybind11/include/pybind11/eval.h +0 -156
  140. plainmp-0.3.5.dev2/pybind11/include/pybind11/functional.h +0 -138
  141. plainmp-0.3.5.dev2/pybind11/include/pybind11/gil.h +0 -219
  142. plainmp-0.3.5.dev2/pybind11/include/pybind11/gil_safe_call_once.h +0 -100
  143. plainmp-0.3.5.dev2/pybind11/include/pybind11/iostream.h +0 -265
  144. plainmp-0.3.5.dev2/pybind11/include/pybind11/numpy.h +0 -2135
  145. plainmp-0.3.5.dev2/pybind11/include/pybind11/operators.h +0 -202
  146. plainmp-0.3.5.dev2/pybind11/include/pybind11/options.h +0 -92
  147. plainmp-0.3.5.dev2/pybind11/include/pybind11/pybind11.h +0 -3026
  148. plainmp-0.3.5.dev2/pybind11/include/pybind11/pytypes.h +0 -2604
  149. plainmp-0.3.5.dev2/pybind11/include/pybind11/stl/filesystem.h +0 -115
  150. plainmp-0.3.5.dev2/pybind11/include/pybind11/stl.h +0 -448
  151. plainmp-0.3.5.dev2/pybind11/include/pybind11/stl_bind.h +0 -822
  152. plainmp-0.3.5.dev2/pybind11/include/pybind11/type_caster_pyobject_ptr.h +0 -61
  153. plainmp-0.3.5.dev2/pybind11/include/pybind11/typing.h +0 -244
  154. plainmp-0.3.5.dev2/pybind11/noxfile.py +0 -107
  155. plainmp-0.3.5.dev2/pybind11/pybind11/__init__.py +0 -19
  156. plainmp-0.3.5.dev2/pybind11/pybind11/__main__.py +0 -63
  157. plainmp-0.3.5.dev2/pybind11/pybind11/_version.py +0 -12
  158. plainmp-0.3.5.dev2/pybind11/pybind11/commands.py +0 -39
  159. plainmp-0.3.5.dev2/pybind11/pybind11/py.typed +0 -0
  160. plainmp-0.3.5.dev2/pybind11/pybind11/setup_helpers.py +0 -500
  161. plainmp-0.3.5.dev2/pybind11/pyproject.toml +0 -87
  162. plainmp-0.3.5.dev2/pybind11/setup.cfg +0 -43
  163. plainmp-0.3.5.dev2/pybind11/setup.py +0 -149
  164. plainmp-0.3.5.dev2/pybind11/tests/CMakeLists.txt +0 -597
  165. plainmp-0.3.5.dev2/pybind11/tests/conftest.py +0 -224
  166. plainmp-0.3.5.dev2/pybind11/tests/constructor_stats.h +0 -322
  167. plainmp-0.3.5.dev2/pybind11/tests/cross_module_gil_utils.cpp +0 -111
  168. plainmp-0.3.5.dev2/pybind11/tests/cross_module_interleaved_error_already_set.cpp +0 -54
  169. plainmp-0.3.5.dev2/pybind11/tests/eigen_tensor_avoid_stl_array.cpp +0 -16
  170. plainmp-0.3.5.dev2/pybind11/tests/env.py +0 -31
  171. plainmp-0.3.5.dev2/pybind11/tests/extra_python_package/pytest.ini +0 -0
  172. plainmp-0.3.5.dev2/pybind11/tests/extra_python_package/test_files.py +0 -297
  173. plainmp-0.3.5.dev2/pybind11/tests/extra_setuptools/pytest.ini +0 -0
  174. plainmp-0.3.5.dev2/pybind11/tests/extra_setuptools/test_setuphelper.py +0 -153
  175. plainmp-0.3.5.dev2/pybind11/tests/local_bindings.h +0 -92
  176. plainmp-0.3.5.dev2/pybind11/tests/object.h +0 -205
  177. plainmp-0.3.5.dev2/pybind11/tests/pybind11_cross_module_tests.cpp +0 -149
  178. plainmp-0.3.5.dev2/pybind11/tests/pybind11_tests.cpp +0 -131
  179. plainmp-0.3.5.dev2/pybind11/tests/pybind11_tests.h +0 -98
  180. plainmp-0.3.5.dev2/pybind11/tests/pyproject.toml +0 -17
  181. plainmp-0.3.5.dev2/pybind11/tests/pytest.ini +0 -23
  182. plainmp-0.3.5.dev2/pybind11/tests/requirements.txt +0 -13
  183. plainmp-0.3.5.dev2/pybind11/tests/test_async.cpp +0 -25
  184. plainmp-0.3.5.dev2/pybind11/tests/test_async.py +0 -31
  185. plainmp-0.3.5.dev2/pybind11/tests/test_buffers.cpp +0 -259
  186. plainmp-0.3.5.dev2/pybind11/tests/test_buffers.py +0 -230
  187. plainmp-0.3.5.dev2/pybind11/tests/test_builtin_casters.cpp +0 -387
  188. plainmp-0.3.5.dev2/pybind11/tests/test_builtin_casters.py +0 -532
  189. plainmp-0.3.5.dev2/pybind11/tests/test_call_policies.cpp +0 -113
  190. plainmp-0.3.5.dev2/pybind11/tests/test_call_policies.py +0 -249
  191. plainmp-0.3.5.dev2/pybind11/tests/test_callbacks.cpp +0 -280
  192. plainmp-0.3.5.dev2/pybind11/tests/test_callbacks.py +0 -230
  193. plainmp-0.3.5.dev2/pybind11/tests/test_chrono.cpp +0 -81
  194. plainmp-0.3.5.dev2/pybind11/tests/test_chrono.py +0 -207
  195. plainmp-0.3.5.dev2/pybind11/tests/test_class.cpp +0 -656
  196. plainmp-0.3.5.dev2/pybind11/tests/test_class.py +0 -503
  197. plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/CMakeLists.txt +0 -80
  198. plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/embed.cpp +0 -23
  199. plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +0 -28
  200. plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +0 -39
  201. plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +0 -46
  202. plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/main.cpp +0 -6
  203. plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +0 -47
  204. plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +0 -41
  205. plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +0 -47
  206. plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/test.py +0 -10
  207. plainmp-0.3.5.dev2/pybind11/tests/test_const_name.cpp +0 -55
  208. plainmp-0.3.5.dev2/pybind11/tests/test_const_name.py +0 -31
  209. plainmp-0.3.5.dev2/pybind11/tests/test_constants_and_functions.cpp +0 -158
  210. plainmp-0.3.5.dev2/pybind11/tests/test_constants_and_functions.py +0 -58
  211. plainmp-0.3.5.dev2/pybind11/tests/test_copy_move.cpp +0 -544
  212. plainmp-0.3.5.dev2/pybind11/tests/test_copy_move.py +0 -140
  213. plainmp-0.3.5.dev2/pybind11/tests/test_custom_type_casters.cpp +0 -217
  214. plainmp-0.3.5.dev2/pybind11/tests/test_custom_type_casters.py +0 -124
  215. plainmp-0.3.5.dev2/pybind11/tests/test_custom_type_setup.cpp +0 -41
  216. plainmp-0.3.5.dev2/pybind11/tests/test_custom_type_setup.py +0 -50
  217. plainmp-0.3.5.dev2/pybind11/tests/test_docstring_options.cpp +0 -129
  218. plainmp-0.3.5.dev2/pybind11/tests/test_docstring_options.py +0 -66
  219. plainmp-0.3.5.dev2/pybind11/tests/test_eigen_matrix.cpp +0 -443
  220. plainmp-0.3.5.dev2/pybind11/tests/test_eigen_matrix.py +0 -816
  221. plainmp-0.3.5.dev2/pybind11/tests/test_eigen_tensor.cpp +0 -18
  222. plainmp-0.3.5.dev2/pybind11/tests/test_eigen_tensor.inl +0 -332
  223. plainmp-0.3.5.dev2/pybind11/tests/test_eigen_tensor.py +0 -290
  224. plainmp-0.3.5.dev2/pybind11/tests/test_embed/CMakeLists.txt +0 -54
  225. plainmp-0.3.5.dev2/pybind11/tests/test_embed/catch.cpp +0 -43
  226. plainmp-0.3.5.dev2/pybind11/tests/test_embed/external_module.cpp +0 -20
  227. plainmp-0.3.5.dev2/pybind11/tests/test_embed/test_interpreter.cpp +0 -488
  228. plainmp-0.3.5.dev2/pybind11/tests/test_embed/test_interpreter.py +0 -16
  229. plainmp-0.3.5.dev2/pybind11/tests/test_embed/test_trampoline.py +0 -18
  230. plainmp-0.3.5.dev2/pybind11/tests/test_enum.cpp +0 -133
  231. plainmp-0.3.5.dev2/pybind11/tests/test_enum.py +0 -270
  232. plainmp-0.3.5.dev2/pybind11/tests/test_eval.cpp +0 -118
  233. plainmp-0.3.5.dev2/pybind11/tests/test_eval.py +0 -52
  234. plainmp-0.3.5.dev2/pybind11/tests/test_eval_call.py +0 -5
  235. plainmp-0.3.5.dev2/pybind11/tests/test_exceptions.cpp +0 -388
  236. plainmp-0.3.5.dev2/pybind11/tests/test_exceptions.h +0 -13
  237. plainmp-0.3.5.dev2/pybind11/tests/test_exceptions.py +0 -434
  238. plainmp-0.3.5.dev2/pybind11/tests/test_factory_constructors.cpp +0 -430
  239. plainmp-0.3.5.dev2/pybind11/tests/test_factory_constructors.py +0 -518
  240. plainmp-0.3.5.dev2/pybind11/tests/test_gil_scoped.cpp +0 -144
  241. plainmp-0.3.5.dev2/pybind11/tests/test_gil_scoped.py +0 -249
  242. plainmp-0.3.5.dev2/pybind11/tests/test_iostream.cpp +0 -126
  243. plainmp-0.3.5.dev2/pybind11/tests/test_iostream.py +0 -297
  244. plainmp-0.3.5.dev2/pybind11/tests/test_kwargs_and_defaults.cpp +0 -325
  245. plainmp-0.3.5.dev2/pybind11/tests/test_kwargs_and_defaults.py +0 -428
  246. plainmp-0.3.5.dev2/pybind11/tests/test_local_bindings.cpp +0 -106
  247. plainmp-0.3.5.dev2/pybind11/tests/test_local_bindings.py +0 -259
  248. plainmp-0.3.5.dev2/pybind11/tests/test_methods_and_attributes.cpp +0 -492
  249. plainmp-0.3.5.dev2/pybind11/tests/test_methods_and_attributes.py +0 -539
  250. plainmp-0.3.5.dev2/pybind11/tests/test_modules.cpp +0 -125
  251. plainmp-0.3.5.dev2/pybind11/tests/test_modules.py +0 -118
  252. plainmp-0.3.5.dev2/pybind11/tests/test_multiple_inheritance.cpp +0 -341
  253. plainmp-0.3.5.dev2/pybind11/tests/test_multiple_inheritance.py +0 -495
  254. plainmp-0.3.5.dev2/pybind11/tests/test_numpy_array.cpp +0 -547
  255. plainmp-0.3.5.dev2/pybind11/tests/test_numpy_array.py +0 -672
  256. plainmp-0.3.5.dev2/pybind11/tests/test_numpy_dtypes.cpp +0 -639
  257. plainmp-0.3.5.dev2/pybind11/tests/test_numpy_dtypes.py +0 -448
  258. plainmp-0.3.5.dev2/pybind11/tests/test_numpy_vectorize.cpp +0 -107
  259. plainmp-0.3.5.dev2/pybind11/tests/test_numpy_vectorize.py +0 -268
  260. plainmp-0.3.5.dev2/pybind11/tests/test_opaque_types.cpp +0 -77
  261. plainmp-0.3.5.dev2/pybind11/tests/test_opaque_types.py +0 -60
  262. plainmp-0.3.5.dev2/pybind11/tests/test_operator_overloading.cpp +0 -281
  263. plainmp-0.3.5.dev2/pybind11/tests/test_operator_overloading.py +0 -153
  264. plainmp-0.3.5.dev2/pybind11/tests/test_pickling.cpp +0 -194
  265. plainmp-0.3.5.dev2/pybind11/tests/test_pickling.py +0 -95
  266. plainmp-0.3.5.dev2/pybind11/tests/test_python_multiple_inheritance.cpp +0 -45
  267. plainmp-0.3.5.dev2/pybind11/tests/test_python_multiple_inheritance.py +0 -36
  268. plainmp-0.3.5.dev2/pybind11/tests/test_pytypes.cpp +0 -926
  269. plainmp-0.3.5.dev2/pybind11/tests/test_pytypes.py +0 -1050
  270. plainmp-0.3.5.dev2/pybind11/tests/test_sequences_and_iterators.cpp +0 -600
  271. plainmp-0.3.5.dev2/pybind11/tests/test_sequences_and_iterators.py +0 -267
  272. plainmp-0.3.5.dev2/pybind11/tests/test_smart_ptr.cpp +0 -473
  273. plainmp-0.3.5.dev2/pybind11/tests/test_smart_ptr.py +0 -317
  274. plainmp-0.3.5.dev2/pybind11/tests/test_stl.cpp +0 -549
  275. plainmp-0.3.5.dev2/pybind11/tests/test_stl.py +0 -383
  276. plainmp-0.3.5.dev2/pybind11/tests/test_stl_binders.cpp +0 -275
  277. plainmp-0.3.5.dev2/pybind11/tests/test_stl_binders.py +0 -395
  278. plainmp-0.3.5.dev2/pybind11/tests/test_tagbased_polymorphic.cpp +0 -147
  279. plainmp-0.3.5.dev2/pybind11/tests/test_tagbased_polymorphic.py +0 -30
  280. plainmp-0.3.5.dev2/pybind11/tests/test_thread.cpp +0 -66
  281. plainmp-0.3.5.dev2/pybind11/tests/test_thread.py +0 -49
  282. plainmp-0.3.5.dev2/pybind11/tests/test_type_caster_pyobject_ptr.cpp +0 -167
  283. plainmp-0.3.5.dev2/pybind11/tests/test_type_caster_pyobject_ptr.py +0 -122
  284. plainmp-0.3.5.dev2/pybind11/tests/test_union.cpp +0 -22
  285. plainmp-0.3.5.dev2/pybind11/tests/test_union.py +0 -10
  286. plainmp-0.3.5.dev2/pybind11/tests/test_unnamed_namespace_a.cpp +0 -38
  287. plainmp-0.3.5.dev2/pybind11/tests/test_unnamed_namespace_a.py +0 -36
  288. plainmp-0.3.5.dev2/pybind11/tests/test_unnamed_namespace_b.cpp +0 -13
  289. plainmp-0.3.5.dev2/pybind11/tests/test_unnamed_namespace_b.py +0 -7
  290. plainmp-0.3.5.dev2/pybind11/tests/test_vector_unique_ptr_member.cpp +0 -54
  291. plainmp-0.3.5.dev2/pybind11/tests/test_vector_unique_ptr_member.py +0 -16
  292. plainmp-0.3.5.dev2/pybind11/tests/test_virtual_functions.cpp +0 -592
  293. plainmp-0.3.5.dev2/pybind11/tests/test_virtual_functions.py +0 -463
  294. plainmp-0.3.5.dev2/pybind11/tests/valgrind-numpy-scipy.supp +0 -140
  295. plainmp-0.3.5.dev2/pybind11/tests/valgrind-python.supp +0 -117
  296. plainmp-0.3.5.dev2/pybind11/tools/FindCatch.cmake +0 -76
  297. plainmp-0.3.5.dev2/pybind11/tools/FindEigen3.cmake +0 -86
  298. plainmp-0.3.5.dev2/pybind11/tools/FindPythonLibsNew.cmake +0 -310
  299. plainmp-0.3.5.dev2/pybind11/tools/JoinPaths.cmake +0 -23
  300. plainmp-0.3.5.dev2/pybind11/tools/check-style.sh +0 -44
  301. plainmp-0.3.5.dev2/pybind11/tools/cmake_uninstall.cmake.in +0 -23
  302. plainmp-0.3.5.dev2/pybind11/tools/codespell_ignore_lines_from_errors.py +0 -40
  303. plainmp-0.3.5.dev2/pybind11/tools/libsize.py +0 -38
  304. plainmp-0.3.5.dev2/pybind11/tools/make_changelog.py +0 -92
  305. plainmp-0.3.5.dev2/pybind11/tools/pybind11.pc.in +0 -7
  306. plainmp-0.3.5.dev2/pybind11/tools/pybind11Common.cmake +0 -429
  307. plainmp-0.3.5.dev2/pybind11/tools/pybind11Config.cmake.in +0 -233
  308. plainmp-0.3.5.dev2/pybind11/tools/pybind11GuessPythonExtSuffix.cmake +0 -86
  309. plainmp-0.3.5.dev2/pybind11/tools/pybind11NewTools.cmake +0 -341
  310. plainmp-0.3.5.dev2/pybind11/tools/pybind11Tools.cmake +0 -239
  311. plainmp-0.3.5.dev2/pybind11/tools/pyproject.toml +0 -3
  312. plainmp-0.3.5.dev2/pybind11/tools/setup_global.py.in +0 -63
  313. plainmp-0.3.5.dev2/pybind11/tools/setup_main.py.in +0 -44
  314. plainmp-0.3.5.dev2/pybind11/tools/test-pybind11GuessPythonExtSuffix.cmake +0 -161
  315. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/.flake8 +0 -0
  316. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/.github/workflows/check_mpl_requirement.yaml +0 -0
  317. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/.gitignore +0 -0
  318. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/LICENSE-BSD3 +0 -0
  319. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/.gitignore +0 -0
  320. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/LICENSE-MPL2 +0 -0
  321. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/add_header.sh +0 -0
  322. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/collision/kdtree.cpp +0 -0
  323. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/collision/kdtree.hpp +0 -0
  324. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/collision/primitive_sdf.hpp +0 -0
  325. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/sequential_constraint.cpp +0 -0
  326. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/constraints/sequential_constraint.hpp +0 -0
  327. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/kinematics/algorithm.cpp +0 -0
  328. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/kinematics/data_structure.hpp +0 -0
  329. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/kinematics/kinematic_model_wrapper.cpp +0 -0
  330. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/kinematics/kinematic_model_wrapper.hpp +0 -0
  331. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/kinematics/kinematics.cpp +0 -0
  332. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/kinematics/kinematics.hpp +0 -0
  333. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/kinematics/transform.hpp +0 -0
  334. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/ompl/.gitignore +0 -0
  335. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/ompl/algorithm_selector.cpp +0 -0
  336. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/ompl/algorithm_selector.hpp +0 -0
  337. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/ompl/custom_goal_samplable_region.cpp +0 -0
  338. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/ompl/custom_goal_samplable_region.hpp +0 -0
  339. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/ompl/generate_sequence.py +0 -0
  340. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/ompl/motion_validator.cpp +0 -0
  341. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/ompl/motion_validator.hpp +0 -0
  342. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/ompl/unidirectional_modified.cpp +0 -0
  343. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/cpp/plainmp/ompl/unidirectional_modified.hpp +0 -0
  344. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/attach_box_ik_and_plan.py +0 -0
  345. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/bench/.gitignore +0 -0
  346. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/bench/fetch_plan.py +0 -0
  347. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/bench/panda_plan.py +0 -0
  348. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/beta/humanoid_lift_and_place_box.py +0 -0
  349. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/beta/humanoid_planning.py +0 -0
  350. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/fetch_ik.py +0 -0
  351. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/fetch_plan.py +0 -0
  352. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/misc/fetch_visualize_coll_spheres.py +0 -0
  353. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/misc/panda_visualize_coll_spheres.py +0 -0
  354. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/misc/pr2_visualize_coll_spheres.py +0 -0
  355. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/openarm/openarm_dualarm.py +0 -0
  356. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/openarm/openarm_larm.py +0 -0
  357. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/openarm/openarm_rarm.py +0 -0
  358. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/openarm_gravity_compensation.py +0 -0
  359. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/panda_plan.py +0 -0
  360. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/pr2_dualarm_ik_and_plan.py +0 -0
  361. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/pr2_rarm_ik_and_plan.py +0 -0
  362. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/example/pr2_with_mobile_base.py +0 -0
  363. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/__init__.py +0 -0
  364. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/assets/openarm_v10.urdf +0 -0
  365. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/conf/fetch.yaml +0 -0
  366. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/conf/jaxon.yaml +0 -0
  367. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/conf/openarm_v10/collision_spheres.yaml +0 -0
  368. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/conf/openarm_v10/openarm_v10_dual.yaml +0 -0
  369. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/conf/openarm_v10/openarm_v10_larm.yaml +0 -0
  370. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/conf/openarm_v10/openarm_v10_rarm.yaml +0 -0
  371. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/conf/panda.yaml +0 -0
  372. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/conf/pr2_base_only.yaml +0 -0
  373. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/conf/pr2_common/aux.yaml +0 -0
  374. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/conf/pr2_common/collision_spheres.yaml +0 -0
  375. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/conf/pr2_common/end_effectors.yaml +0 -0
  376. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/conf/pr2_dualarm.yaml +0 -0
  377. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/conf/pr2_larm.yaml +0 -0
  378. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/conf/pr2_rarm.yaml +0 -0
  379. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/constraint.py +0 -0
  380. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/kdtree.py +0 -0
  381. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/kdtree.pyi +0 -0
  382. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/kinematics.py +0 -0
  383. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/kinematics.pyi +0 -0
  384. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/manifold_rrt/__init__.py +0 -0
  385. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/manifold_rrt/_manifold_rrt_algorithms.py +0 -0
  386. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/manifold_rrt/manifold_rrt_solver.py +0 -0
  387. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/nlp_solver/__init__.py +0 -0
  388. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/nlp_solver/osqp_sqp.py +0 -0
  389. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/nlp_solver/sqp_based_solver.py +0 -0
  390. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/ompl_solver.py +0 -0
  391. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/parallel.py +0 -0
  392. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/problem.py +0 -0
  393. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/psdf.py +0 -0
  394. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/psdf.pyi +0 -0
  395. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/robot_spec.py +0 -0
  396. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/script/bubblify_to_plainmp.py +0 -0
  397. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/trajectory.py +0 -0
  398. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/src/plainmp/utils.py +0 -0
  399. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/tests/test_ik.py +0 -0
  400. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/tests/test_kdtree.py +0 -0
  401. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/tests/test_kinematics.py +0 -0
  402. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/tests/test_manifold_rrt.py +0 -0
  403. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/tests/test_ompl_solver.py +0 -0
  404. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/tests/test_psdf.py +0 -0
  405. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/tests/test_robot_spec.py +0 -0
  406. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/ompl-ertconnect/CMakeLists.txt +0 -0
  407. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/ompl-ertconnect/README.md +0 -0
  408. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/ompl-ertconnect/ertconnect/ERT.h +0 -0
  409. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/ompl-ertconnect/ertconnect/ERTConnect.h +0 -0
  410. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/ompl-ertconnect/ertconnect/ert/PlannerData.h +0 -0
  411. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/ompl-ertconnect/ertconnect/src/ERT.cpp +0 -0
  412. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/.gitignore +0 -0
  413. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/CMakeLists.txt +0 -0
  414. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/README.md +0 -0
  415. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/include/LICENSE +0 -0
  416. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/include/urdf_exception/exception.h +0 -0
  417. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/include/urdf_model/color.h +0 -0
  418. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/include/urdf_model/joint.h +0 -0
  419. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/include/urdf_model/link.h +0 -0
  420. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/include/urdf_model/model.h +0 -0
  421. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/include/urdf_model/pose.h +0 -0
  422. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/include/urdf_model/types.h +0 -0
  423. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/include/urdf_model/utils.h +0 -0
  424. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/include/urdf_parser/exportdecl.h +0 -0
  425. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/include/urdf_parser/urdf_parser.h +0 -0
  426. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/include/urdf_world/types.h +0 -0
  427. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/src/joint.cpp +0 -0
  428. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/src/link.cpp +0 -0
  429. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/src/model.cpp +0 -0
  430. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/src/pose.cpp +0 -0
  431. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/tinyxml/CMakeLists.txt +0 -0
  432. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/tinyxml/tinystr.cpp +0 -0
  433. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/tinyxml/tinystr.h +0 -0
  434. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/tinyxml/tinyxml.cpp +0 -0
  435. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/tinyxml/tinyxml.h +0 -0
  436. {plainmp-0.3.5.dev2 → plainmp-0.3.6}/third/urdf_parser/tinyxml/tinyxmlerror.cpp +0 -0
  437. {plainmp-0.3.5.dev2 → 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.dev2
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