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

Drake仿真中气动力实现与关节角解析技术咨询

扑翼机器人Drake仿真相关问题

1. 气动力计算的速度一致性与方案适用性

我正尝试在Drake中为从SDF解析的MultibodyPlant(扑翼机器人)计算自定义气动力,并通过Meshcat可视化。目前遇到速度计算不一致的问题:有时解析得到的速度和仿真显示的差异极大,将时间步长降至0.00001后问题有所缓解。

我通过外部Aerodynamics LeafSystem连接端口来实现力的计算与施加,代码如下:

builder.Connect(aerodynamics_system.get_output_port(), plant.get_applied_spatial_force_input_port());
builder.Connect(plant.get_body_poses_output_port(), aerodynamics_system.get_input_port(0));
builder.Connect(plant.get_body_spatial_velocities_output_port(), aerodynamics_system.get_input_port(1));

想确认这个方案是否适用于对精度敏感的50Hz小型扑翼机器人,是否会因为独立LeafSystem的存在导致力施加出现偏差。

2. 关节角实时获取问题

我需要获取关节角,但MultibodyPlant仅提供位姿和空间速度输出端口。尝试以下代码时,因Context不匹配报错:

right_wing_passive_joint_ = &plant_.GetJointByName<drake::multibody::RevoluteJoint>("joint_RW_J_Pitch");
std::cout << right_wing_passive_joint_->get_angle(context) << std::endl;

我曾在Aerodynamics LeafSystem的CalcOutput函数中创建默认Plant Context,但输出始终为0:

std::unique_ptr<drake::systems::Context<double>> plant_context = plant_.CreateDefaultContext();
plant_context->SetTime(context.get_time());
std::cout << "rw joint angle: " << right_wing_passive_joint_->get_angle(*plant_context) << std::endl;

想知道是否需要从位姿推导关节角,同时寻求高效获取实时关节角的方法。

3. 高效优化的气动力实现方案

希望得到针对扑翼机器人的高效优化气动力实现建议。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 18:45:15