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