plainmp 0.3.5.dev2__tar.gz → 0.3.6.dev1__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.
- plainmp-0.3.6.dev1/.gitattributes +2 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/.github/workflows/build_and_test.yaml +15 -13
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/.github/workflows/check_format.yaml +13 -5
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/.github/workflows/check_pypi_install.yaml +8 -4
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/.github/workflows/release.yaml +6 -6
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/CMakeLists.txt +21 -3
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/PKG-INFO +2 -1
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/README.md +20 -9
- plainmp-0.3.6.dev1/cpp/plainmp/bindings/bindings.hpp +50 -0
- plainmp-0.3.6.dev1/cpp/plainmp/bindings/constraint.cpp +165 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/bindings/kdtree.cpp +3 -3
- plainmp-0.3.6.dev1/cpp/plainmp/bindings/kinematics.cpp +84 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/bindings/ompl_wrapper.cpp +28 -24
- plainmp-0.3.6.dev1/cpp/plainmp/bindings/primitive.cpp +114 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/bindings/python.cpp +1 -1
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/composite_constraint.hpp +16 -4
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/primitive.hpp +17 -1
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/primitive_com_in_polytope.cpp +3 -7
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/primitive_com_in_polytope.hpp +2 -1
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/primitive_config_point.cpp +14 -14
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/primitive_config_point.hpp +2 -1
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/primitive_fixed_zaxis.cpp +3 -5
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/primitive_fixed_zaxis.hpp +2 -1
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/primitive_link_pose.cpp +2 -4
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/primitive_link_pose.hpp +2 -1
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/primitive_link_position_bound.cpp +3 -8
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/primitive_link_position_bound.hpp +2 -1
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/primitive_relative_pose.cpp +2 -4
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/primitive_relative_pose.hpp +2 -1
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/primitive_sphere_collision.cpp +6 -8
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/primitive_sphere_collision.hpp +7 -4
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/ompl/ompl_thin_wrap.hpp +4 -2
- plainmp-0.3.6.dev1/format.sh +17 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/pyproject.toml +7 -4
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/constraint.pyi +8 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/ik.py +23 -3
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/tests/test_constraints.py +51 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/ompl-ertconnect/ertconnect/src/ERTConnect.cpp +3 -3
- plainmp-0.3.6.dev1/uv.lock +4494 -0
- plainmp-0.3.5.dev2/.gitmodules +0 -3
- plainmp-0.3.5.dev2/cpp/plainmp/bindings/bindings.hpp +0 -24
- plainmp-0.3.5.dev2/cpp/plainmp/bindings/constraint.cpp +0 -128
- plainmp-0.3.5.dev2/cpp/plainmp/bindings/kinematics.cpp +0 -58
- plainmp-0.3.5.dev2/cpp/plainmp/bindings/primitive.cpp +0 -114
- plainmp-0.3.5.dev2/format.sh +0 -12
- plainmp-0.3.5.dev2/pybind11/.appveyor.yml +0 -35
- plainmp-0.3.5.dev2/pybind11/.clang-format +0 -38
- plainmp-0.3.5.dev2/pybind11/.clang-tidy +0 -77
- plainmp-0.3.5.dev2/pybind11/.cmake-format.yaml +0 -73
- plainmp-0.3.5.dev2/pybind11/.codespell-ignore-lines +0 -24
- plainmp-0.3.5.dev2/pybind11/.git +0 -1
- plainmp-0.3.5.dev2/pybind11/.gitattributes +0 -1
- plainmp-0.3.5.dev2/pybind11/.github/CODEOWNERS +0 -9
- plainmp-0.3.5.dev2/pybind11/.github/CONTRIBUTING.md +0 -388
- plainmp-0.3.5.dev2/pybind11/.github/ISSUE_TEMPLATE/bug-report.yml +0 -61
- plainmp-0.3.5.dev2/pybind11/.github/ISSUE_TEMPLATE/config.yml +0 -8
- plainmp-0.3.5.dev2/pybind11/.github/dependabot.yml +0 -15
- plainmp-0.3.5.dev2/pybind11/.github/labeler.yml +0 -13
- plainmp-0.3.5.dev2/pybind11/.github/labeler_merged.yml +0 -8
- plainmp-0.3.5.dev2/pybind11/.github/matchers/pylint.json +0 -32
- plainmp-0.3.5.dev2/pybind11/.github/pull_request_template.md +0 -19
- plainmp-0.3.5.dev2/pybind11/.github/workflows/ci.yml +0 -1235
- plainmp-0.3.5.dev2/pybind11/.github/workflows/configure.yml +0 -92
- plainmp-0.3.5.dev2/pybind11/.github/workflows/emscripten.yaml +0 -30
- plainmp-0.3.5.dev2/pybind11/.github/workflows/format.yml +0 -60
- plainmp-0.3.5.dev2/pybind11/.github/workflows/labeler.yml +0 -25
- plainmp-0.3.5.dev2/pybind11/.github/workflows/pip.yml +0 -117
- plainmp-0.3.5.dev2/pybind11/.github/workflows/upstream.yml +0 -116
- plainmp-0.3.5.dev2/pybind11/.gitignore +0 -46
- plainmp-0.3.5.dev2/pybind11/.pre-commit-config.yaml +0 -156
- plainmp-0.3.5.dev2/pybind11/.readthedocs.yml +0 -20
- plainmp-0.3.5.dev2/pybind11/CMakeLists.txt +0 -376
- plainmp-0.3.5.dev2/pybind11/LICENSE +0 -29
- plainmp-0.3.5.dev2/pybind11/MANIFEST.in +0 -6
- plainmp-0.3.5.dev2/pybind11/README.rst +0 -181
- plainmp-0.3.5.dev2/pybind11/SECURITY.md +0 -13
- plainmp-0.3.5.dev2/pybind11/docs/Doxyfile +0 -21
- plainmp-0.3.5.dev2/pybind11/docs/Makefile +0 -192
- plainmp-0.3.5.dev2/pybind11/docs/_static/css/custom.css +0 -3
- plainmp-0.3.5.dev2/pybind11/docs/advanced/cast/chrono.rst +0 -81
- plainmp-0.3.5.dev2/pybind11/docs/advanced/cast/custom.rst +0 -93
- plainmp-0.3.5.dev2/pybind11/docs/advanced/cast/eigen.rst +0 -310
- plainmp-0.3.5.dev2/pybind11/docs/advanced/cast/functional.rst +0 -109
- plainmp-0.3.5.dev2/pybind11/docs/advanced/cast/index.rst +0 -43
- plainmp-0.3.5.dev2/pybind11/docs/advanced/cast/overview.rst +0 -170
- plainmp-0.3.5.dev2/pybind11/docs/advanced/cast/stl.rst +0 -249
- plainmp-0.3.5.dev2/pybind11/docs/advanced/cast/strings.rst +0 -296
- plainmp-0.3.5.dev2/pybind11/docs/advanced/classes.rst +0 -1335
- plainmp-0.3.5.dev2/pybind11/docs/advanced/embedding.rst +0 -262
- plainmp-0.3.5.dev2/pybind11/docs/advanced/exceptions.rst +0 -401
- plainmp-0.3.5.dev2/pybind11/docs/advanced/functions.rst +0 -614
- plainmp-0.3.5.dev2/pybind11/docs/advanced/misc.rst +0 -429
- plainmp-0.3.5.dev2/pybind11/docs/advanced/pycpp/index.rst +0 -13
- plainmp-0.3.5.dev2/pybind11/docs/advanced/pycpp/numpy.rst +0 -453
- plainmp-0.3.5.dev2/pybind11/docs/advanced/pycpp/object.rst +0 -286
- plainmp-0.3.5.dev2/pybind11/docs/advanced/pycpp/utilities.rst +0 -155
- plainmp-0.3.5.dev2/pybind11/docs/advanced/smart_ptrs.rst +0 -174
- plainmp-0.3.5.dev2/pybind11/docs/basics.rst +0 -307
- plainmp-0.3.5.dev2/pybind11/docs/benchmark.py +0 -89
- plainmp-0.3.5.dev2/pybind11/docs/benchmark.rst +0 -95
- plainmp-0.3.5.dev2/pybind11/docs/changelog.rst +0 -3121
- plainmp-0.3.5.dev2/pybind11/docs/classes.rst +0 -555
- plainmp-0.3.5.dev2/pybind11/docs/cmake/index.rst +0 -8
- plainmp-0.3.5.dev2/pybind11/docs/compiling.rst +0 -726
- plainmp-0.3.5.dev2/pybind11/docs/conf.py +0 -369
- plainmp-0.3.5.dev2/pybind11/docs/faq.rst +0 -308
- plainmp-0.3.5.dev2/pybind11/docs/index.rst +0 -48
- plainmp-0.3.5.dev2/pybind11/docs/installing.rst +0 -105
- plainmp-0.3.5.dev2/pybind11/docs/limitations.rst +0 -68
- plainmp-0.3.5.dev2/pybind11/docs/pybind11-logo.png +0 -0
- plainmp-0.3.5.dev2/pybind11/docs/pybind11_vs_boost_python1.png +0 -0
- plainmp-0.3.5.dev2/pybind11/docs/pybind11_vs_boost_python1.svg +0 -427
- plainmp-0.3.5.dev2/pybind11/docs/pybind11_vs_boost_python2.png +0 -0
- plainmp-0.3.5.dev2/pybind11/docs/pybind11_vs_boost_python2.svg +0 -427
- plainmp-0.3.5.dev2/pybind11/docs/reference.rst +0 -130
- plainmp-0.3.5.dev2/pybind11/docs/release.rst +0 -143
- plainmp-0.3.5.dev2/pybind11/docs/requirements.in +0 -6
- plainmp-0.3.5.dev2/pybind11/docs/requirements.txt +0 -275
- plainmp-0.3.5.dev2/pybind11/docs/upgrade.rst +0 -594
- plainmp-0.3.5.dev2/pybind11/include/pybind11/attr.h +0 -690
- plainmp-0.3.5.dev2/pybind11/include/pybind11/buffer_info.h +0 -208
- plainmp-0.3.5.dev2/pybind11/include/pybind11/cast.h +0 -1855
- plainmp-0.3.5.dev2/pybind11/include/pybind11/chrono.h +0 -225
- plainmp-0.3.5.dev2/pybind11/include/pybind11/common.h +0 -2
- plainmp-0.3.5.dev2/pybind11/include/pybind11/complex.h +0 -74
- plainmp-0.3.5.dev2/pybind11/include/pybind11/detail/class.h +0 -754
- plainmp-0.3.5.dev2/pybind11/include/pybind11/detail/common.h +0 -1284
- plainmp-0.3.5.dev2/pybind11/include/pybind11/detail/descr.h +0 -172
- plainmp-0.3.5.dev2/pybind11/include/pybind11/detail/init.h +0 -436
- plainmp-0.3.5.dev2/pybind11/include/pybind11/detail/internals.h +0 -764
- plainmp-0.3.5.dev2/pybind11/include/pybind11/detail/type_caster_base.h +0 -1154
- plainmp-0.3.5.dev2/pybind11/include/pybind11/detail/typeid.h +0 -65
- plainmp-0.3.5.dev2/pybind11/include/pybind11/detail/value_and_holder.h +0 -77
- plainmp-0.3.5.dev2/pybind11/include/pybind11/eigen/common.h +0 -9
- plainmp-0.3.5.dev2/pybind11/include/pybind11/eigen/matrix.h +0 -714
- plainmp-0.3.5.dev2/pybind11/include/pybind11/eigen/tensor.h +0 -517
- plainmp-0.3.5.dev2/pybind11/include/pybind11/eigen.h +0 -12
- plainmp-0.3.5.dev2/pybind11/include/pybind11/embed.h +0 -313
- plainmp-0.3.5.dev2/pybind11/include/pybind11/eval.h +0 -156
- plainmp-0.3.5.dev2/pybind11/include/pybind11/functional.h +0 -138
- plainmp-0.3.5.dev2/pybind11/include/pybind11/gil.h +0 -219
- plainmp-0.3.5.dev2/pybind11/include/pybind11/gil_safe_call_once.h +0 -100
- plainmp-0.3.5.dev2/pybind11/include/pybind11/iostream.h +0 -265
- plainmp-0.3.5.dev2/pybind11/include/pybind11/numpy.h +0 -2135
- plainmp-0.3.5.dev2/pybind11/include/pybind11/operators.h +0 -202
- plainmp-0.3.5.dev2/pybind11/include/pybind11/options.h +0 -92
- plainmp-0.3.5.dev2/pybind11/include/pybind11/pybind11.h +0 -3026
- plainmp-0.3.5.dev2/pybind11/include/pybind11/pytypes.h +0 -2604
- plainmp-0.3.5.dev2/pybind11/include/pybind11/stl/filesystem.h +0 -115
- plainmp-0.3.5.dev2/pybind11/include/pybind11/stl.h +0 -448
- plainmp-0.3.5.dev2/pybind11/include/pybind11/stl_bind.h +0 -822
- plainmp-0.3.5.dev2/pybind11/include/pybind11/type_caster_pyobject_ptr.h +0 -61
- plainmp-0.3.5.dev2/pybind11/include/pybind11/typing.h +0 -244
- plainmp-0.3.5.dev2/pybind11/noxfile.py +0 -107
- plainmp-0.3.5.dev2/pybind11/pybind11/__init__.py +0 -19
- plainmp-0.3.5.dev2/pybind11/pybind11/__main__.py +0 -63
- plainmp-0.3.5.dev2/pybind11/pybind11/_version.py +0 -12
- plainmp-0.3.5.dev2/pybind11/pybind11/commands.py +0 -39
- plainmp-0.3.5.dev2/pybind11/pybind11/py.typed +0 -0
- plainmp-0.3.5.dev2/pybind11/pybind11/setup_helpers.py +0 -500
- plainmp-0.3.5.dev2/pybind11/pyproject.toml +0 -87
- plainmp-0.3.5.dev2/pybind11/setup.cfg +0 -43
- plainmp-0.3.5.dev2/pybind11/setup.py +0 -149
- plainmp-0.3.5.dev2/pybind11/tests/CMakeLists.txt +0 -597
- plainmp-0.3.5.dev2/pybind11/tests/conftest.py +0 -224
- plainmp-0.3.5.dev2/pybind11/tests/constructor_stats.h +0 -322
- plainmp-0.3.5.dev2/pybind11/tests/cross_module_gil_utils.cpp +0 -111
- plainmp-0.3.5.dev2/pybind11/tests/cross_module_interleaved_error_already_set.cpp +0 -54
- plainmp-0.3.5.dev2/pybind11/tests/eigen_tensor_avoid_stl_array.cpp +0 -16
- plainmp-0.3.5.dev2/pybind11/tests/env.py +0 -31
- plainmp-0.3.5.dev2/pybind11/tests/extra_python_package/pytest.ini +0 -0
- plainmp-0.3.5.dev2/pybind11/tests/extra_python_package/test_files.py +0 -297
- plainmp-0.3.5.dev2/pybind11/tests/extra_setuptools/pytest.ini +0 -0
- plainmp-0.3.5.dev2/pybind11/tests/extra_setuptools/test_setuphelper.py +0 -153
- plainmp-0.3.5.dev2/pybind11/tests/local_bindings.h +0 -92
- plainmp-0.3.5.dev2/pybind11/tests/object.h +0 -205
- plainmp-0.3.5.dev2/pybind11/tests/pybind11_cross_module_tests.cpp +0 -149
- plainmp-0.3.5.dev2/pybind11/tests/pybind11_tests.cpp +0 -131
- plainmp-0.3.5.dev2/pybind11/tests/pybind11_tests.h +0 -98
- plainmp-0.3.5.dev2/pybind11/tests/pyproject.toml +0 -17
- plainmp-0.3.5.dev2/pybind11/tests/pytest.ini +0 -23
- plainmp-0.3.5.dev2/pybind11/tests/requirements.txt +0 -13
- plainmp-0.3.5.dev2/pybind11/tests/test_async.cpp +0 -25
- plainmp-0.3.5.dev2/pybind11/tests/test_async.py +0 -31
- plainmp-0.3.5.dev2/pybind11/tests/test_buffers.cpp +0 -259
- plainmp-0.3.5.dev2/pybind11/tests/test_buffers.py +0 -230
- plainmp-0.3.5.dev2/pybind11/tests/test_builtin_casters.cpp +0 -387
- plainmp-0.3.5.dev2/pybind11/tests/test_builtin_casters.py +0 -532
- plainmp-0.3.5.dev2/pybind11/tests/test_call_policies.cpp +0 -113
- plainmp-0.3.5.dev2/pybind11/tests/test_call_policies.py +0 -249
- plainmp-0.3.5.dev2/pybind11/tests/test_callbacks.cpp +0 -280
- plainmp-0.3.5.dev2/pybind11/tests/test_callbacks.py +0 -230
- plainmp-0.3.5.dev2/pybind11/tests/test_chrono.cpp +0 -81
- plainmp-0.3.5.dev2/pybind11/tests/test_chrono.py +0 -207
- plainmp-0.3.5.dev2/pybind11/tests/test_class.cpp +0 -656
- plainmp-0.3.5.dev2/pybind11/tests/test_class.py +0 -503
- plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/CMakeLists.txt +0 -80
- plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/embed.cpp +0 -23
- plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/installed_embed/CMakeLists.txt +0 -28
- plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/installed_function/CMakeLists.txt +0 -39
- plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/installed_target/CMakeLists.txt +0 -46
- plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/main.cpp +0 -6
- plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/subdirectory_embed/CMakeLists.txt +0 -47
- plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/subdirectory_function/CMakeLists.txt +0 -41
- plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/subdirectory_target/CMakeLists.txt +0 -47
- plainmp-0.3.5.dev2/pybind11/tests/test_cmake_build/test.py +0 -10
- plainmp-0.3.5.dev2/pybind11/tests/test_const_name.cpp +0 -55
- plainmp-0.3.5.dev2/pybind11/tests/test_const_name.py +0 -31
- plainmp-0.3.5.dev2/pybind11/tests/test_constants_and_functions.cpp +0 -158
- plainmp-0.3.5.dev2/pybind11/tests/test_constants_and_functions.py +0 -58
- plainmp-0.3.5.dev2/pybind11/tests/test_copy_move.cpp +0 -544
- plainmp-0.3.5.dev2/pybind11/tests/test_copy_move.py +0 -140
- plainmp-0.3.5.dev2/pybind11/tests/test_custom_type_casters.cpp +0 -217
- plainmp-0.3.5.dev2/pybind11/tests/test_custom_type_casters.py +0 -124
- plainmp-0.3.5.dev2/pybind11/tests/test_custom_type_setup.cpp +0 -41
- plainmp-0.3.5.dev2/pybind11/tests/test_custom_type_setup.py +0 -50
- plainmp-0.3.5.dev2/pybind11/tests/test_docstring_options.cpp +0 -129
- plainmp-0.3.5.dev2/pybind11/tests/test_docstring_options.py +0 -66
- plainmp-0.3.5.dev2/pybind11/tests/test_eigen_matrix.cpp +0 -443
- plainmp-0.3.5.dev2/pybind11/tests/test_eigen_matrix.py +0 -816
- plainmp-0.3.5.dev2/pybind11/tests/test_eigen_tensor.cpp +0 -18
- plainmp-0.3.5.dev2/pybind11/tests/test_eigen_tensor.inl +0 -332
- plainmp-0.3.5.dev2/pybind11/tests/test_eigen_tensor.py +0 -290
- plainmp-0.3.5.dev2/pybind11/tests/test_embed/CMakeLists.txt +0 -54
- plainmp-0.3.5.dev2/pybind11/tests/test_embed/catch.cpp +0 -43
- plainmp-0.3.5.dev2/pybind11/tests/test_embed/external_module.cpp +0 -20
- plainmp-0.3.5.dev2/pybind11/tests/test_embed/test_interpreter.cpp +0 -488
- plainmp-0.3.5.dev2/pybind11/tests/test_embed/test_interpreter.py +0 -16
- plainmp-0.3.5.dev2/pybind11/tests/test_embed/test_trampoline.py +0 -18
- plainmp-0.3.5.dev2/pybind11/tests/test_enum.cpp +0 -133
- plainmp-0.3.5.dev2/pybind11/tests/test_enum.py +0 -270
- plainmp-0.3.5.dev2/pybind11/tests/test_eval.cpp +0 -118
- plainmp-0.3.5.dev2/pybind11/tests/test_eval.py +0 -52
- plainmp-0.3.5.dev2/pybind11/tests/test_eval_call.py +0 -5
- plainmp-0.3.5.dev2/pybind11/tests/test_exceptions.cpp +0 -388
- plainmp-0.3.5.dev2/pybind11/tests/test_exceptions.h +0 -13
- plainmp-0.3.5.dev2/pybind11/tests/test_exceptions.py +0 -434
- plainmp-0.3.5.dev2/pybind11/tests/test_factory_constructors.cpp +0 -430
- plainmp-0.3.5.dev2/pybind11/tests/test_factory_constructors.py +0 -518
- plainmp-0.3.5.dev2/pybind11/tests/test_gil_scoped.cpp +0 -144
- plainmp-0.3.5.dev2/pybind11/tests/test_gil_scoped.py +0 -249
- plainmp-0.3.5.dev2/pybind11/tests/test_iostream.cpp +0 -126
- plainmp-0.3.5.dev2/pybind11/tests/test_iostream.py +0 -297
- plainmp-0.3.5.dev2/pybind11/tests/test_kwargs_and_defaults.cpp +0 -325
- plainmp-0.3.5.dev2/pybind11/tests/test_kwargs_and_defaults.py +0 -428
- plainmp-0.3.5.dev2/pybind11/tests/test_local_bindings.cpp +0 -106
- plainmp-0.3.5.dev2/pybind11/tests/test_local_bindings.py +0 -259
- plainmp-0.3.5.dev2/pybind11/tests/test_methods_and_attributes.cpp +0 -492
- plainmp-0.3.5.dev2/pybind11/tests/test_methods_and_attributes.py +0 -539
- plainmp-0.3.5.dev2/pybind11/tests/test_modules.cpp +0 -125
- plainmp-0.3.5.dev2/pybind11/tests/test_modules.py +0 -118
- plainmp-0.3.5.dev2/pybind11/tests/test_multiple_inheritance.cpp +0 -341
- plainmp-0.3.5.dev2/pybind11/tests/test_multiple_inheritance.py +0 -495
- plainmp-0.3.5.dev2/pybind11/tests/test_numpy_array.cpp +0 -547
- plainmp-0.3.5.dev2/pybind11/tests/test_numpy_array.py +0 -672
- plainmp-0.3.5.dev2/pybind11/tests/test_numpy_dtypes.cpp +0 -639
- plainmp-0.3.5.dev2/pybind11/tests/test_numpy_dtypes.py +0 -448
- plainmp-0.3.5.dev2/pybind11/tests/test_numpy_vectorize.cpp +0 -107
- plainmp-0.3.5.dev2/pybind11/tests/test_numpy_vectorize.py +0 -268
- plainmp-0.3.5.dev2/pybind11/tests/test_opaque_types.cpp +0 -77
- plainmp-0.3.5.dev2/pybind11/tests/test_opaque_types.py +0 -60
- plainmp-0.3.5.dev2/pybind11/tests/test_operator_overloading.cpp +0 -281
- plainmp-0.3.5.dev2/pybind11/tests/test_operator_overloading.py +0 -153
- plainmp-0.3.5.dev2/pybind11/tests/test_pickling.cpp +0 -194
- plainmp-0.3.5.dev2/pybind11/tests/test_pickling.py +0 -95
- plainmp-0.3.5.dev2/pybind11/tests/test_python_multiple_inheritance.cpp +0 -45
- plainmp-0.3.5.dev2/pybind11/tests/test_python_multiple_inheritance.py +0 -36
- plainmp-0.3.5.dev2/pybind11/tests/test_pytypes.cpp +0 -926
- plainmp-0.3.5.dev2/pybind11/tests/test_pytypes.py +0 -1050
- plainmp-0.3.5.dev2/pybind11/tests/test_sequences_and_iterators.cpp +0 -600
- plainmp-0.3.5.dev2/pybind11/tests/test_sequences_and_iterators.py +0 -267
- plainmp-0.3.5.dev2/pybind11/tests/test_smart_ptr.cpp +0 -473
- plainmp-0.3.5.dev2/pybind11/tests/test_smart_ptr.py +0 -317
- plainmp-0.3.5.dev2/pybind11/tests/test_stl.cpp +0 -549
- plainmp-0.3.5.dev2/pybind11/tests/test_stl.py +0 -383
- plainmp-0.3.5.dev2/pybind11/tests/test_stl_binders.cpp +0 -275
- plainmp-0.3.5.dev2/pybind11/tests/test_stl_binders.py +0 -395
- plainmp-0.3.5.dev2/pybind11/tests/test_tagbased_polymorphic.cpp +0 -147
- plainmp-0.3.5.dev2/pybind11/tests/test_tagbased_polymorphic.py +0 -30
- plainmp-0.3.5.dev2/pybind11/tests/test_thread.cpp +0 -66
- plainmp-0.3.5.dev2/pybind11/tests/test_thread.py +0 -49
- plainmp-0.3.5.dev2/pybind11/tests/test_type_caster_pyobject_ptr.cpp +0 -167
- plainmp-0.3.5.dev2/pybind11/tests/test_type_caster_pyobject_ptr.py +0 -122
- plainmp-0.3.5.dev2/pybind11/tests/test_union.cpp +0 -22
- plainmp-0.3.5.dev2/pybind11/tests/test_union.py +0 -10
- plainmp-0.3.5.dev2/pybind11/tests/test_unnamed_namespace_a.cpp +0 -38
- plainmp-0.3.5.dev2/pybind11/tests/test_unnamed_namespace_a.py +0 -36
- plainmp-0.3.5.dev2/pybind11/tests/test_unnamed_namespace_b.cpp +0 -13
- plainmp-0.3.5.dev2/pybind11/tests/test_unnamed_namespace_b.py +0 -7
- plainmp-0.3.5.dev2/pybind11/tests/test_vector_unique_ptr_member.cpp +0 -54
- plainmp-0.3.5.dev2/pybind11/tests/test_vector_unique_ptr_member.py +0 -16
- plainmp-0.3.5.dev2/pybind11/tests/test_virtual_functions.cpp +0 -592
- plainmp-0.3.5.dev2/pybind11/tests/test_virtual_functions.py +0 -463
- plainmp-0.3.5.dev2/pybind11/tests/valgrind-numpy-scipy.supp +0 -140
- plainmp-0.3.5.dev2/pybind11/tests/valgrind-python.supp +0 -117
- plainmp-0.3.5.dev2/pybind11/tools/FindCatch.cmake +0 -76
- plainmp-0.3.5.dev2/pybind11/tools/FindEigen3.cmake +0 -86
- plainmp-0.3.5.dev2/pybind11/tools/FindPythonLibsNew.cmake +0 -310
- plainmp-0.3.5.dev2/pybind11/tools/JoinPaths.cmake +0 -23
- plainmp-0.3.5.dev2/pybind11/tools/check-style.sh +0 -44
- plainmp-0.3.5.dev2/pybind11/tools/cmake_uninstall.cmake.in +0 -23
- plainmp-0.3.5.dev2/pybind11/tools/codespell_ignore_lines_from_errors.py +0 -40
- plainmp-0.3.5.dev2/pybind11/tools/libsize.py +0 -38
- plainmp-0.3.5.dev2/pybind11/tools/make_changelog.py +0 -92
- plainmp-0.3.5.dev2/pybind11/tools/pybind11.pc.in +0 -7
- plainmp-0.3.5.dev2/pybind11/tools/pybind11Common.cmake +0 -429
- plainmp-0.3.5.dev2/pybind11/tools/pybind11Config.cmake.in +0 -233
- plainmp-0.3.5.dev2/pybind11/tools/pybind11GuessPythonExtSuffix.cmake +0 -86
- plainmp-0.3.5.dev2/pybind11/tools/pybind11NewTools.cmake +0 -341
- plainmp-0.3.5.dev2/pybind11/tools/pybind11Tools.cmake +0 -239
- plainmp-0.3.5.dev2/pybind11/tools/pyproject.toml +0 -3
- plainmp-0.3.5.dev2/pybind11/tools/setup_global.py.in +0 -63
- plainmp-0.3.5.dev2/pybind11/tools/setup_main.py.in +0 -44
- plainmp-0.3.5.dev2/pybind11/tools/test-pybind11GuessPythonExtSuffix.cmake +0 -161
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/.flake8 +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/.github/workflows/check_mpl_requirement.yaml +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/.gitignore +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/LICENSE-BSD3 +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/.gitignore +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/LICENSE-MPL2 +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/add_header.sh +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/collision/kdtree.cpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/collision/kdtree.hpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/collision/primitive_sdf.hpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/sequential_constraint.cpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/constraints/sequential_constraint.hpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/kinematics/algorithm.cpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/kinematics/data_structure.hpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/kinematics/kinematic_model_wrapper.cpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/kinematics/kinematic_model_wrapper.hpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/kinematics/kinematics.cpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/kinematics/kinematics.hpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/kinematics/transform.hpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/ompl/.gitignore +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/ompl/algorithm_selector.cpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/ompl/algorithm_selector.hpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/ompl/custom_goal_samplable_region.cpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/ompl/custom_goal_samplable_region.hpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/ompl/generate_sequence.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/ompl/motion_validator.cpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/ompl/motion_validator.hpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/ompl/unidirectional_modified.cpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/cpp/plainmp/ompl/unidirectional_modified.hpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/attach_box_ik_and_plan.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/bench/.gitignore +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/bench/fetch_plan.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/bench/panda_plan.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/beta/humanoid_lift_and_place_box.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/beta/humanoid_planning.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/fetch_ik.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/fetch_plan.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/misc/fetch_visualize_coll_spheres.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/misc/panda_visualize_coll_spheres.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/misc/pr2_visualize_coll_spheres.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/openarm/openarm_dualarm.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/openarm/openarm_larm.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/openarm/openarm_rarm.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/openarm_gravity_compensation.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/panda_plan.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/pr2_dualarm_ik_and_plan.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/pr2_rarm_ik_and_plan.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/example/pr2_with_mobile_base.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/__init__.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/assets/openarm_v10.urdf +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/conf/fetch.yaml +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/conf/jaxon.yaml +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/conf/openarm_v10/collision_spheres.yaml +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/conf/openarm_v10/openarm_v10_dual.yaml +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/conf/openarm_v10/openarm_v10_larm.yaml +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/conf/openarm_v10/openarm_v10_rarm.yaml +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/conf/panda.yaml +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/conf/pr2_base_only.yaml +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/conf/pr2_common/aux.yaml +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/conf/pr2_common/collision_spheres.yaml +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/conf/pr2_common/end_effectors.yaml +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/conf/pr2_dualarm.yaml +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/conf/pr2_larm.yaml +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/conf/pr2_rarm.yaml +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/constraint.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/kdtree.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/kdtree.pyi +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/kinematics.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/kinematics.pyi +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/manifold_rrt/__init__.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/manifold_rrt/_manifold_rrt_algorithms.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/manifold_rrt/manifold_rrt_solver.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/nlp_solver/__init__.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/nlp_solver/osqp_sqp.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/nlp_solver/sqp_based_solver.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/ompl_solver.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/parallel.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/problem.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/psdf.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/psdf.pyi +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/robot_spec.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/script/bubblify_to_plainmp.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/trajectory.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/src/plainmp/utils.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/tests/test_ik.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/tests/test_kdtree.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/tests/test_kinematics.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/tests/test_manifold_rrt.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/tests/test_ompl_solver.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/tests/test_psdf.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/tests/test_robot_spec.py +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/ompl-ertconnect/CMakeLists.txt +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/ompl-ertconnect/README.md +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/ompl-ertconnect/ertconnect/ERT.h +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/ompl-ertconnect/ertconnect/ERTConnect.h +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/ompl-ertconnect/ertconnect/ert/PlannerData.h +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/ompl-ertconnect/ertconnect/src/ERT.cpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/.gitignore +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/CMakeLists.txt +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/README.md +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/include/LICENSE +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/include/urdf_exception/exception.h +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/include/urdf_model/color.h +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/include/urdf_model/joint.h +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/include/urdf_model/link.h +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/include/urdf_model/model.h +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/include/urdf_model/pose.h +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/include/urdf_model/types.h +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/include/urdf_model/utils.h +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/include/urdf_parser/exportdecl.h +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/include/urdf_parser/urdf_parser.h +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/include/urdf_world/types.h +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/src/joint.cpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/src/link.cpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/src/model.cpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/src/pose.cpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/tinyxml/CMakeLists.txt +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/tinyxml/tinystr.cpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/tinyxml/tinystr.h +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/tinyxml/tinyxml.cpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/tinyxml/tinyxml.h +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/tinyxml/tinyxmlerror.cpp +0 -0
- {plainmp-0.3.5.dev2 → plainmp-0.3.6.dev1}/third/urdf_parser/tinyxml/tinyxmlparser.cpp +0 -0
|
@@ -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
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
|
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:
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
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
|
|
18
|
-
|
|
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
|
-
|
|
26
|
-
|
|
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.
|
|
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
|
-
|
|
49
|
-
|
|
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.
|
|
3
|
+
Version: 0.3.6.dev1
|
|
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
|
|
@@ -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
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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(
|
|
18
|
+
void bind_kdtree_submodule(nb::module_& m) {
|
|
19
19
|
auto m_kdtree = m.def_submodule("kdtree");
|
|
20
|
-
|
|
21
|
-
.def(
|
|
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
|