scikit-robot 0.4.2__tar.gz → 0.4.4__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.
- {scikit_robot-0.4.2/scikit_robot.egg-info → scikit_robot-0.4.4}/PKG-INFO +1 -1
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/pyproject.toml +2 -1
- {scikit_robot-0.4.2 → scikit_robot-0.4.4/scikit_robot.egg-info}/PKG-INFO +1 -1
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/scikit_robot.egg-info/SOURCES.txt +3 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/scikit_robot.egg-info/entry_points.txt +1 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/apps/cli.py +1 -0
- scikit_robot-0.4.4/skrobot/apps/convert_urdf_to_usd.py +115 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/collision/__init__.py +9 -0
- scikit_robot-0.4.4/skrobot/collision/environment_collision.py +579 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/collision/robot_collision.py +8 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/export/usd.py +121 -17
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/model/robot_model.py +75 -7
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/viewers/__init__.py +16 -1
- scikit_robot-0.4.4/skrobot/viewers/_offscreen.py +495 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/LICENSE +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/MANIFEST.in +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/README.md +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/scikit_robot.egg-info/dependency_links.txt +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/scikit_robot.egg-info/not-zip-safe +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/scikit_robot.egg-info/requires.txt +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/scikit_robot.egg-info/top_level.txt +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/setup.cfg +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/_lazy_imports.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/apps/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/apps/canonicalize_urdf.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/apps/change_urdf_root.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/apps/convert_urdf_mesh.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/apps/convert_urdf_to_mjcf.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/apps/convert_urdf_to_primitives.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/apps/convert_wheel_collision.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/apps/extract_sub_urdf.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/apps/generate_robot_class.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/apps/modularize_urdf.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/apps/scale_urdf.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/apps/transform_urdf.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/apps/urdf_hash.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/apps/urdf_tree.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/apps/visualize_mesh.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/apps/visualize_urdf.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/assembly/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/assembly/module_assembly.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/assembly/module_registry.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/backend/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/backend/jax_backend.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/backend/math_utils.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/backend/numpy_backend.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/backend/registry.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/collision/distance.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/collision/geometry.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/collision/self_collision.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/coordinates/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/coordinates/base.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/coordinates/geo.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/coordinates/math.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/kuka.urdf +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/finger_base_left.stl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/finger_base_right.stl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/finger_tip_left.stl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/finger_tip_right.stl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_0.mtl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_0.obj +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_0.stl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_1.mtl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_1.obj +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_1.stl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_2.mtl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_2.obj +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_2.stl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_3.mtl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_3.obj +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_3.stl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_4.mtl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_4.obj +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_4.stl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_5.mtl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_5.obj +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_5.stl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_6.mtl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_6.obj +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_6.stl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_7.mtl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_7.obj +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/kuka_description/meshes/link_7.stl +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/robot_descriptions/urdf/r8_6.urdf +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/ros_config_templates/CMakeLists.txt.ros2.template +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/ros_config_templates/gazebo.launch.py.template +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/ros_config_templates/gazebo_moveit.launch.py.template +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/ros_config_templates/isaac_fjt_server.py.template +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/ros_config_templates/moveit.rviz.template +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/ros_config_templates/package.xml.ros2.template +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/ros_config_templates/ros2_control.xacro.joint.template +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/ros_config_templates/ros2_control.xacro.template +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/data/ros_config_templates/setup_assistant.template +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/dynamics/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/dynamics/differentiable.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/dynamics/gravity.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/export/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/export/contact_links.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/export/isaac/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/export/isaac/fjt_server.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/export/task.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/interfaces/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/interfaces/_pybullet.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/interfaces/ros/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/interfaces/ros/base.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/interfaces/ros/move_base.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/interfaces/ros/nextage.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/interfaces/ros/panda.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/interfaces/ros/pr2.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/interfaces/ros/tf_utils.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/interfaces/ros/transform_listener.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/interfaces/ros2/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/interfaces/ros2/base.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/interfaces/ros2/gripper.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/interfaces/ros2/panda.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/kinematics/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/kinematics/_base_placement_jax.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/kinematics/base_placement.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/kinematics/differentiable.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/kinematics/inverse_reachability_map.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/kinematics/loop_closure.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/kinematics/reachability_map.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/model/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/model/joint.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/model/joint_limit_table.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/model/link.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/model/primitives.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/model/skeleton.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/models/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/models/aero.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/models/differential_wrist_sample.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/models/fetch.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/models/g1.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/models/griphis.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/models/hydrus.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/models/jaxon_jvrc.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/models/jedy.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/models/kuka.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/models/nextage.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/models/panda.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/models/pr2.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/models/r8_6.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/models/tycoon.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/models/urdf.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/collision_checker.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/inverse_kinematics_optimization.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/sqp_based.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/swept_sphere.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/trajectory_optimization/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/trajectory_optimization/collision.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/trajectory_optimization/fk_utils.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/trajectory_optimization/gridsdf_collision.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/trajectory_optimization/problem.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/trajectory_optimization/residuals.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/trajectory_optimization/solvers/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/trajectory_optimization/solvers/augmented_lagrangian.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/trajectory_optimization/solvers/base.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/trajectory_optimization/solvers/gradient_descent.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/trajectory_optimization/solvers/jaxls_solver.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/trajectory_optimization/solvers/scipy_solver.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/trajectory_optimization/solvers/solver_utils.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/trajectory_optimization/trajectory.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/trajectory_optimization/world_surface_collision.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/planner/utils.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/pycompat.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/sdf/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/sdf/signed_distance_function.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/aggregate.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/canonicalize.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/compare.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/extract_sub_urdf.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/flip_axis.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/hash.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/link_origins.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/llm_grouping.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/merge_fixed_links.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/modularize_urdf.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/primitives_converter.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/robot_class_generator.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/ros_config/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/ros_config/export.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/ros_config/gazebo_generator.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/ros_config/moveit_generator.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/ros_config/moveit_package.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/ros_config/urdf_parser.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/ros_package.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/ros_package_exporter.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/sanitize.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/scale_urdf.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/structure.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/transform_urdf.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/wheel_collision_converter.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/urdf/xml_root_link_changer.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/__init__.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/_blender_decimate_core.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/_blender_remesh_core.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/archive.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/blender_mesh.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/checksum.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/convex_decomposition.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/draco.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/inertia.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/listify.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/mesh.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/mjcf_converter.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/package.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/primitive_fitting.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/urdf.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/urdf_mesh.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/video.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/utils/visualization.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/viewers/_base.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/viewers/_manipulability_ellipse.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/viewers/_mitsuba.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/viewers/_notebook.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/viewers/_path_utils.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/viewers/_pyrender.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/viewers/_trimesh.py +0 -0
- {scikit_robot-0.4.2 → scikit_robot-0.4.4}/skrobot/viewers/_viser.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "scikit-robot"
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.4"
|
|
8
8
|
description = "A Flexible Framework for Robot Control in Python"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "MIT"}
|
|
@@ -113,6 +113,7 @@ urdf-hash = "skrobot.apps.urdf_hash:main"
|
|
|
113
113
|
convert-wheel-collision = "skrobot.apps.convert_wheel_collision:main"
|
|
114
114
|
urdf-tree = "skrobot.apps.urdf_tree:main"
|
|
115
115
|
convert-urdf-to-mjcf = "skrobot.apps.convert_urdf_to_mjcf:main"
|
|
116
|
+
convert-urdf-to-usd = "skrobot.apps.convert_urdf_to_usd:main"
|
|
116
117
|
canonicalize-urdf = "skrobot.apps.canonicalize_urdf:main"
|
|
117
118
|
|
|
118
119
|
[tool.setuptools]
|
|
@@ -19,6 +19,7 @@ skrobot/apps/cli.py
|
|
|
19
19
|
skrobot/apps/convert_urdf_mesh.py
|
|
20
20
|
skrobot/apps/convert_urdf_to_mjcf.py
|
|
21
21
|
skrobot/apps/convert_urdf_to_primitives.py
|
|
22
|
+
skrobot/apps/convert_urdf_to_usd.py
|
|
22
23
|
skrobot/apps/convert_wheel_collision.py
|
|
23
24
|
skrobot/apps/extract_sub_urdf.py
|
|
24
25
|
skrobot/apps/generate_robot_class.py
|
|
@@ -39,6 +40,7 @@ skrobot/backend/numpy_backend.py
|
|
|
39
40
|
skrobot/backend/registry.py
|
|
40
41
|
skrobot/collision/__init__.py
|
|
41
42
|
skrobot/collision/distance.py
|
|
43
|
+
skrobot/collision/environment_collision.py
|
|
42
44
|
skrobot/collision/geometry.py
|
|
43
45
|
skrobot/collision/robot_collision.py
|
|
44
46
|
skrobot/collision/self_collision.py
|
|
@@ -212,6 +214,7 @@ skrobot/viewers/_base.py
|
|
|
212
214
|
skrobot/viewers/_manipulability_ellipse.py
|
|
213
215
|
skrobot/viewers/_mitsuba.py
|
|
214
216
|
skrobot/viewers/_notebook.py
|
|
217
|
+
skrobot/viewers/_offscreen.py
|
|
215
218
|
skrobot/viewers/_path_utils.py
|
|
216
219
|
skrobot/viewers/_pyrender.py
|
|
217
220
|
skrobot/viewers/_trimesh.py
|
|
@@ -3,6 +3,7 @@ canonicalize-urdf = skrobot.apps.canonicalize_urdf:main
|
|
|
3
3
|
change-urdf-root = skrobot.apps.change_urdf_root:main
|
|
4
4
|
convert-urdf-mesh = skrobot.apps.convert_urdf_mesh:main
|
|
5
5
|
convert-urdf-to-mjcf = skrobot.apps.convert_urdf_to_mjcf:main
|
|
6
|
+
convert-urdf-to-usd = skrobot.apps.convert_urdf_to_usd:main
|
|
6
7
|
convert-wheel-collision = skrobot.apps.convert_wheel_collision:main
|
|
7
8
|
modularize-urdf = skrobot.apps.modularize_urdf:main
|
|
8
9
|
skr = skrobot.apps.cli:main
|
|
@@ -24,6 +24,7 @@ def get_available_apps():
|
|
|
24
24
|
'extract_sub_urdf': ('Extract sub-URDF from a root link', None),
|
|
25
25
|
'generate_robot_class': ('Generate robot class from URDF geometry', None),
|
|
26
26
|
'urdf_tree': ('Print URDF link tree and validate its structure', None),
|
|
27
|
+
'convert_urdf_to_usd': ('Convert URDF to a USD physics articulation', None),
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
for filename in os.listdir(apps_dir):
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
"""
|
|
3
|
+
Convert a URDF into a USD physics articulation (Isaac Sim / PhysX).
|
|
4
|
+
|
|
5
|
+
One rigid body per link, visual meshes embedded with their colours (and a
|
|
6
|
+
``UsdPreviewSurface`` per glTF PBR material), convex collision meshes, and
|
|
7
|
+
revolute/prismatic/fixed joints with position drives. The robot is the stage's
|
|
8
|
+
defaultPrim, so the file can be referenced from another stage as is. Needs
|
|
9
|
+
``usd-core`` (``pip install usd-core``); ``--decompose`` also needs ``coacd``.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
import argparse
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
import sys
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def _parse_home(items):
|
|
18
|
+
"""``['joint=0.5', ...]`` -> ``{'joint': 0.5}``."""
|
|
19
|
+
home = {}
|
|
20
|
+
for item in items or []:
|
|
21
|
+
name, sep, value = item.partition('=')
|
|
22
|
+
if not sep or not name:
|
|
23
|
+
raise ValueError('--home takes JOINT=VALUE, not {!r}'.format(item))
|
|
24
|
+
home[name] = float(value)
|
|
25
|
+
return home
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def main():
|
|
29
|
+
parser = argparse.ArgumentParser(
|
|
30
|
+
description='Convert a URDF into a USD physics articulation',
|
|
31
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
32
|
+
epilog="""
|
|
33
|
+
Examples:
|
|
34
|
+
convert-urdf-to-usd robot.urdf
|
|
35
|
+
convert-urdf-to-usd robot.urdf -o out/robot.usda --floating-base
|
|
36
|
+
convert-urdf-to-usd robot.urdf --decompose --coacd-quality fine
|
|
37
|
+
convert-urdf-to-usd robot.urdf --home elbow_joint=1.2 --home wrist_joint=-0.3
|
|
38
|
+
"""
|
|
39
|
+
)
|
|
40
|
+
parser.add_argument('urdf_file', type=str, help='Path to the input URDF file')
|
|
41
|
+
parser.add_argument('-o', '--output', type=str, default=None,
|
|
42
|
+
help='Output .usd/.usda/.usdc path (default: <urdf_stem>.usd)')
|
|
43
|
+
parser.add_argument('--floating-base', action='store_true',
|
|
44
|
+
help='Leave the base free (default: welded to the world)')
|
|
45
|
+
parser.add_argument('--mobile-base', action='store_true',
|
|
46
|
+
help='Give the base planar x / y / yaw joints instead of '
|
|
47
|
+
'welding it')
|
|
48
|
+
parser.add_argument('--self-collision', action='store_true',
|
|
49
|
+
help='Keep self-collision between the links (default: off)')
|
|
50
|
+
parser.add_argument('--drive-stiffness', type=float, default=1000.0,
|
|
51
|
+
help='Position-drive stiffness of the joints')
|
|
52
|
+
parser.add_argument('--drive-damping', type=float, default=200.0,
|
|
53
|
+
help='Position-drive damping of the joints')
|
|
54
|
+
parser.add_argument('--no-auto-gain', action='store_true',
|
|
55
|
+
help='Use the same drive gains on every joint instead of '
|
|
56
|
+
'scaling them by each joint\'s gravity load')
|
|
57
|
+
parser.add_argument('--home', action='append', default=[],
|
|
58
|
+
metavar='JOINT=VALUE',
|
|
59
|
+
help='Drive target of a joint (rad or m); repeatable')
|
|
60
|
+
decompose = parser.add_mutually_exclusive_group()
|
|
61
|
+
decompose.add_argument('--decompose', action='store_true',
|
|
62
|
+
help='CoACD-decompose every concave link\'s collision '
|
|
63
|
+
'mesh (default: one convex hull per link)')
|
|
64
|
+
decompose.add_argument('--decompose-links', nargs='+', default=None,
|
|
65
|
+
metavar='LINK',
|
|
66
|
+
help='CoACD-decompose exactly these links (names or '
|
|
67
|
+
'substrings)')
|
|
68
|
+
parser.add_argument('--coacd-quality', choices=['balanced', 'fine'],
|
|
69
|
+
default=None,
|
|
70
|
+
help='CoACD preset for --decompose / --decompose-links '
|
|
71
|
+
'(default: a tight fit)')
|
|
72
|
+
args = parser.parse_args()
|
|
73
|
+
|
|
74
|
+
urdf_path = Path(args.urdf_file)
|
|
75
|
+
if not urdf_path.exists():
|
|
76
|
+
print('error: URDF not found: {}'.format(urdf_path), file=sys.stderr)
|
|
77
|
+
return 1
|
|
78
|
+
try:
|
|
79
|
+
home = _parse_home(args.home)
|
|
80
|
+
except ValueError as e:
|
|
81
|
+
print('error: {}'.format(e), file=sys.stderr)
|
|
82
|
+
return 1
|
|
83
|
+
try:
|
|
84
|
+
import pxr # noqa: F401
|
|
85
|
+
|
|
86
|
+
from skrobot.export.usd import urdf_to_usd
|
|
87
|
+
except ImportError:
|
|
88
|
+
print('error: usd-core is required: pip install usd-core',
|
|
89
|
+
file=sys.stderr)
|
|
90
|
+
return 1
|
|
91
|
+
out_path = args.output or str(urdf_path.with_suffix('.usd'))
|
|
92
|
+
decompose_links = True if args.decompose else args.decompose_links
|
|
93
|
+
coacd_params = None
|
|
94
|
+
if args.coacd_quality is not None:
|
|
95
|
+
coacd_params = {'quality': args.coacd_quality}
|
|
96
|
+
|
|
97
|
+
stage = urdf_to_usd(
|
|
98
|
+
str(urdf_path), out_path,
|
|
99
|
+
floating_base=args.floating_base,
|
|
100
|
+
mobile_base=args.mobile_base,
|
|
101
|
+
self_collision=args.self_collision,
|
|
102
|
+
drive_stiffness=args.drive_stiffness,
|
|
103
|
+
drive_damping=args.drive_damping,
|
|
104
|
+
auto_gain=not args.no_auto_gain,
|
|
105
|
+
home_positions=home or None,
|
|
106
|
+
decompose_links=decompose_links,
|
|
107
|
+
coacd_params=coacd_params,
|
|
108
|
+
)
|
|
109
|
+
print('wrote USD: {} (defaultPrim {})'.format(
|
|
110
|
+
out_path, stage.GetDefaultPrim().GetPath()))
|
|
111
|
+
return 0
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
if __name__ == '__main__':
|
|
115
|
+
sys.exit(main())
|
|
@@ -43,6 +43,10 @@ from skrobot.collision.distance import sphere_box_distance
|
|
|
43
43
|
from skrobot.collision.distance import sphere_capsule_distance
|
|
44
44
|
from skrobot.collision.distance import sphere_halfspace_distance
|
|
45
45
|
from skrobot.collision.distance import sphere_sphere_distance
|
|
46
|
+
from skrobot.collision.environment_collision import CollisionReport
|
|
47
|
+
from skrobot.collision.environment_collision import EnvironmentCollision
|
|
48
|
+
from skrobot.collision.environment_collision import link_transforms
|
|
49
|
+
from skrobot.collision.environment_collision import sample_surface
|
|
46
50
|
from skrobot.collision.geometry import Box
|
|
47
51
|
from skrobot.collision.geometry import Capsule
|
|
48
52
|
from skrobot.collision.geometry import CollisionGeometry
|
|
@@ -83,6 +87,11 @@ __all__ = [
|
|
|
83
87
|
# Robot collision
|
|
84
88
|
'RobotCollisionChecker',
|
|
85
89
|
'LinkCollisionGeometry',
|
|
90
|
+
# Robot against a static environment
|
|
91
|
+
'EnvironmentCollision',
|
|
92
|
+
'CollisionReport',
|
|
93
|
+
'link_transforms',
|
|
94
|
+
'sample_surface',
|
|
86
95
|
# Mesh self-collision + joint-limit sweep
|
|
87
96
|
'SelfCollision',
|
|
88
97
|
'sweep_limits',
|