You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为GCS的顶点与边添加末端执行器约束?

在GCS轨迹优化中为末端执行器添加阶段约束的正确方法

示例任务

假设机械臂已抓取杯子并要放置到货架上,需保证运动过程中杯内液体不洒。在IK问题中,我会添加如下约束:

R_C_desired = RotationMatrix.MakeZRotation(0)
ik.AddOrientationConstraint(
    frameB=EE_frame, 
    R_AbarA=R_C_desired,
    frameA=W_frame,
    theta_bound=acceptable_tilt
)

但不确定如何在GCS的顶点和边上施加此类约束以保证运动合规。

首次尝试:朴素方法

我尝试定义变量q并传入以下函数:

def set_positions(q):
    plant_double = MultibodyPlant(time_step=0.0)
    parser = Parser(plant_double)

    scenario = """
    directives:
    - add_model:
        name: iiwa
        file: package://drake_models/iiwa_description/sdf/iiwa7_no_collision.sdf
        default_joint_positions:
            iiwa_joint_1: [0]
            iiwa_joint_2: [0.6]
            iiwa_joint_3: [0]
            iiwa_joint_4: [-1.75]
            iiwa_joint_5: [0]
            iiwa_joint_6: [ 1.0]
            iiwa_joint_7: [0]
    - add_weld:
        parent: world
        child: iiwa::iiwa_link_0
        X_PC:
            translation: [0, 0.8, 0.8]
            rotation: !Rpy { deg: [0, 0, 0]}
    """

    iiwa_model = parser.AddModelsFromString(scenario, ".dmd.yaml")
    plant_double.Finalize()

    plant = plant_double.ToScalarType[Expression]()

    context = plant.CreateDefaultContext()
    plant.SetPositions(context, iiwa_model[0], q)
    return context, plant

随后执行以下操作获取符号形式的末端执行器位姿,再通过vertex.AddConstraint()和edge.AddConstraint()添加约束:

context, plant = set_positions(q)
ee_frame = plant.GetFrameByName("iiwa_link_7")
T_e = ee_frame.CalcPoseInWorld(context)

但生成的表达式过于庞大且非凸,导致程序完全卡顿。

第二次尝试:IRIS约束分解方法

我了解到标准方法是将约束从轨迹优化阶段转移到凸分解阶段。使用IRIS构建器时,我尝试创建带约束的IK问题,并通过options.prog_with_additional_constraints将约束程序添加到IrisOptions中:

options = IrisOptions()
prog, ik = generate_ik_prog(plant, region_definition)
options.prog_with_additional_constraints = prog

该方法有时可行,但速度极慢且经常无法收敛。此外,即使无额外约束,IRIS运行速度也很慢,无法实时执行,这意味着需提前知晓所有约束,生成多个带不同约束的子图用于规划。

我的问题

如何正确地为GCS的顶点与边添加末端执行器约束?

内容的提问来源于stack exchange,提问作者frouhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:44:55