dm_robotics/cpp/controllers的Python绑定
项目描述
DM Robotics:控制器库(Python)
内容
笛卡尔6D到关节速度映射器
为dm_robotics/controllers/lsqp/cartesian_6d_to_joint_velocity_mapper
提供Python绑定。
此模块包含两个类
cartesian_6d_to_joint_velocity_mapper.Parameters
cartesian_6d_to_joint_velocity_mapper.Mapper
映射器在每个迭代中解决一个约束线性最小二乘优化问题,以计算能够最好地实现对象所需笛卡尔6D速度的关节速度。
在其最基本的配置中,它计算能够实现所需笛卡尔6d速度且具有奇点鲁棒性的关节速度。此外,此映射器还支持以下功能
- 可以通过启用零空间控制,在不影响结果笛卡尔速度准确性的情况下,将关节速度偏置到期望值;
- 可以在任何两个 MuJoCo 几何体之间启用碰撞避免;
- 可以定义关节位置、速度和加速度的限制,以确保计算的关节速度不会导致越限;
请参阅 dm_robotics/controllers/lsqp/cartesian_6d_to_joint_velocity_mapper.h
或类文档字符串以获取更多信息。
依赖关系
- dm_robotics/least_squares_qp
- dm_robotics/controllers
- dm_control
用法
from dm_control import mujoco
from dm_control.mujoco.wrapper.mjbindings import enums
from dm_robotics.controllers import cartesian_6d_to_joint_velocity_mapper
# Initialize simulation. Assumes velocity controlled robot.
# physics.data.ctrl[:] is an array of size 7 that corresponds to the commanded
# velocities of the joints with IDs 7, 8, 9, 10, 12, 13, 14.
physics = mujoco.Physics(...) # Create MuJoCo physics.
# Create mapper parameters.
params = cartesian_6d_to_joint_velocity_mapper.Parameters()
#
# Set model parameters.
params.model = physics.model
params.joint_ids = [7, 8, 9, 10, 12, 13, 14] # MuJoCo joint IDs being controlled.
params.object_type = enums.mjtObj.mjOBJ_SITE # MuJoCo object being controlled.
params.object_name = "end_effector" # name of MuJoCo object being controlled.
params.integration_timestep = 0.005 # Amount of time the joint velocities will be executed for.
#
# Enable joint position limit constraint. Limits are read automatically from the
# model.
params.enable_joint_position_limits = True
params.joint_position_limit_velocity_scale = 0.95
params.minimum_distance_from_joint_position_limit = 0.01 # ~0.5deg.
#
# Enable joint velocity limits.
params.enable_joint_velocity_limits = True
params.joint_velocity_magnitude_limits = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]
#
# Enable joint acceleration limits.
params.enable_joint_acceleration_limits = True
params.remove_joint_acceleration_limits_if_in_conflict = True
params.joint_acceleration_magnitude_limits = [10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0]
#
# Enable collision avoidance between the following geoms:
# * "gripper" and "base_link"
# * "base_link" and "floor"
# * "link1" and "floor"
# * "gripper" and "floor"
# * "link1" and "link4"
# * "link1" and "link5"
# * "link1" and "link6"
# * "link2" and "link4"
# * "link2" and "link5"
# * "link2" and "link6"
# Note that collision avoidance will not be enabled for a pair of geoms if they
# are attached to the same body or are attached to bodies that have a
# parent-child relationship.
params.enable_collision_avoidance = True
params.collision_avoidance_normal_velocity_scale = 0.5
params.minimum_distance_from_collisions = 0.01
params.collision_detection_distance = 0.3
params.collision_pairs = [(["gripper"], ["base_link"]),
(["base_link", "link1", "gripper"], ["floor"]),
(["link1", "link2"], ["link4", "link5", "link6"])]
#
# Numerical stability parameters.
params.check_solution_validity = True
params.solution_tolerance = 1e-3
params.regularization_weight = 1e-2
params.enable_nullspace_control = True
params.return_error_on_nullspace_failure = False
params.nullspace_projection_slack = 1e-7
# Create mapper.
mapper = cartesian_6d_to_joint_velocity_mapper.Mapper(params)
# Compute joint velocities and apply them to the joint velocity actuator
# commands at every step.
while True:
# The nullspace bias is often chosen to be a velocity towards the mid-range of
# the joints, but can be chosen to be any 7D joint velocity vector.
nullspace_joint_velocity_bias = get_nullspace_bias()
target_cartesian_velocity = get_end_effector_target_velocity()
solution = mapper.compute_joint_velocities(physics.data, target_velocity,
nullspace_bias)
physics.data.ctrl[:] = solution
physics.step()
项目详情
关闭
哈希值 for dm_robotics_controllers-0.8.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 41bc96e310c01e9e9c17dec44e8cd5974e9f5a0077aa859839e0caa68d0aeaaf |
|
MD5 | 8ad7674e5fa36d0d2e0ccaad8d7000e9 |
|
BLAKE2b-256 | 6ee9095bd895d1a9f958ceff7d2a41479ec96ffd1653b701f8767376475b0082 |
关闭
dm_robotics_controllers-0.8.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6a2089b774d77d93eefded29e108ee73615065abda09faa8a7a28a3496eb5351 |
|
MD5 | dd1bd57aa7d9503adfaf236652824e61 |
|
BLAKE2b-256 | 3dca2fdc39a342ac6ad85b9cbf777bef47475cf355566438aed993988fa85e88 |
关闭
dm_robotics_controllers-0.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f3d0466a3a5c444ee690006d4f56134dbc13bebe06b978f9813206ed93d35440 |
|
MD5 | c1c28ef56025dc5ad96f736c9a4a204f |
|
BLAKE2b-256 | 50b2a62a5512440b9514056a3836bde3cad1d102e9b8d0492455c71916e31990 |
关闭
dm_robotics_controllers-0.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | aadf46567846016933718f36d35ab85c1e0c6cc0d61572c31a2f5bbc885f52b5 |
|
MD5 | 171750874ad7aff02a9c6b959799f3cd |
|
BLAKE2b-256 | 0406616c7156b4936dcbf7aec38af2ac45102b7bcd5269409bc1bf0da6fdc2c9 |
关闭
dm_robotics_controllers-0.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8069859dff572d17d8084c35d25b506880f1f32ef264cc71399c0770ee8b841a |
|
MD5 | 28d7adaf93db605ca0d63c949b2cc69a |
|
BLAKE2b-256 | 9cb849faf5f63435a25cd3e206d2cb7c064bf7fceacb54724d1e0f343746145c |