news 2026/9/15 18:29:09

text-to-cad 的 SDF 里 mesh 资源该怎么选 URI 形式?model:// 与 package:// 的记录约定

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
text-to-cad 的 SDF 里 mesh 资源该怎么选 URI 形式?model:// 与 package:// 的记录约定

text-to-cad 的 SDF 里 mesh 资源该怎么选 URI 形式?model:// 与 package:// 的记录约定

【免费下载链接】text-to-cadA library of agent skills for CAD, CAE and CAM项目地址: https://gitcode.com/GitHub_Trending/tex/text-to-cad

在 text-to-cad 仓库的sdfskill 中编写或修改.sdf文件时,<mesh><uri>写什么形式,直接决定目标消费者(Gazebo 等仿真器、ROS 包环境、纯可视化工具)能否加载到网格资源。这个仓库的约定是:SDF 只引用几何与 mesh 资源、不重新生成它们(见 skills/sdf/references/interoperability.md),而资源解析是环境相关的(environment-dependent)——同一个 URI 通过本地验证,不代表在目标仿真环境里也能解析。因此实际操作路径是三步:先按消费者环境选定 URI 形式,再把选择记录进.sdf顶部的设计台账(design ledger),最后用 bundled validator 做结构校验。

先确定目标消费者,再选 URI 形式

skills/sdf/references/sdf-workflow.md 给出的选择标准是:mesh URI 要么对.sdf文件的位置保持稳定,要么使用消费者能理解的 simulator/package URI 约定。文档列出的可用形式及适用条件如下:

URI 形式解析预期何时使用
相对本地路径相对.sdf文件所在目录解析模型自包含(self-contained),mesh 放在.sdf旁边
file://绝对本地文件需要固定绝对路径的本地资源
model://仿真器模型路径(simulator model path)下解析资源随仿真器模型包(simulator model package)分发
package://仿真器/ROS 包环境下解析仿真环境会解析包根目录(package roots)时
fuel://http://https://外部资源仅当消费者预期会抓取外部资产时

model://package://并不是"更高级"的写法,而是把解析责任交给不同环境:用model://的前提是资源会落在目标环境的仿真器模型路径下;用package://的前提是目标环境按 ROS/package 方式解析包根目录;两者都不满足时,不要硬凑外部 URL——interoperability.md 明确要求"记录目标消费者能解析哪种 URI 形式",而不是假设某种形式通用。

选错形式不会立即报错:bundled validator 对model://package://等已知外部 scheme 不做本地文件系统解析就放行,这正是后面要把选择记录进台账的原因。

还有一条资源归属边界:mesh 资产由 CAD/mesh 工作流拥有——每个 link 一个资产、在 link 自身坐标系下导出、并记录源单位。如果 mesh 本身是错的,修导出,不要在 SDF 里用 pose 去凑。

记录约定:写进设计台账的 Mesh URI policy

按 skills/sdf/SKILL.md 的工作流,写 XML 之前先建好设计台账,其规范位置是.sdf文件顶部的注释块。skills/sdf/references/design-ledger.md 中专门有一张 "Mesh URI policy" 表,这就是model://package://的记录约定——逐行声明每种 URI 形式是否允许、预期如何解析、备注什么:

| URI kind | Allowed? | Resolution expectation | Notes | |---|---|---|---| | Relative local path | | Relative to the `.sdf` file location | | | `file://` | | Absolute local file | | | `model://` | | Simulator model path | | | `package://` | | Simulator/ROS package environment | | | `fuel://`, `http://`, `https://` | | External resource | |

填写时至少落实三件事:

  1. Allowed? 列给出判断:当前模型允许哪些形式。例如自包含模型只允许 Relative local path;model://package://行要么标注不允许,要么在 Notes 里写明部署前提(例如"仅当部署到 ROS 包环境时使用package://")。
  2. Geometry 表同步记录:同一台账的 Geometry 部分要求每个 visual/collision 记录 "URI or dimensions"、"Mesh units"、"Scale",保证 mesh 单位约定和缩放可审计。
  3. 未解析的外部 URI 必须上报:台账的 "Assumptions to report" 清单明确包含 "unresolved external URI" 以及 mesh 单位/缩放假设;llm-guardrails.md 也强调 mesh 单位、scale、外部 URI 是否能在部署环境解析属于"不允许静默推断"的范畴,只能来自 manifest、CAD 导出配置或显式假设。

如果 SDF 引用的是已导出的 mesh 资产,interoperability.md 还要求记录六项:源几何文件、导出 mesh 路径、mesh 单位约定、mesh 原点约定、visual scale、碰撞简化决策。

XML 中的 URI 必须与上面的记录一致。结构示意如下(代码块为示例,model://后的模型名与资源路径必须替换为目标环境中实际可解析的值,不能照抄):

<visual name="base_visual"> <geometry> <mesh> <uri>model://model_name/meshes/asset.dae</uri> </mesh> </geometry> </visual>

用 bundled validator 校验

校验命令(python是解释器占位,按 SKILL.md 说明,裸python不可用时换成python3、项目虚拟环境解释器或已配置的解释器路径;path/to/model.sdf替换为你的实际文件路径):

python scripts/validate path/to/model.sdf python scripts/validate path/to/model.sdf --strict

针对 mesh URI,validation.md 描述的校验行为是:

  • mesh URI 值非空;
  • 本地 mesh 引用按.sdf文件位置解析,文件不存在时报错(missing_mesh_file)——这是本地相对路径能被"证实"的部分;
  • model://package://fuel://http://https://属于已知外部 scheme,accepted without local filesystem resolution,即放行但不验证真实可达性;
  • 其他未知 scheme 给出 warning(unresolved_mesh_uri_scheme)。

--strict会把 warning 当作失败处理;任一目标文件失败时 validator 以非零退出。如果目标环境装有 Gazebo 工具链,可以再跑一次面向目标消费者的解析检查:

gz sdf --check path/to/model.sdf

或者通过 validator 的--gz-check auto/--gz-check required/--gz-check never选项控制外部检查的触发方式。gz sdf --check是可选的目标消费者校验,环境里没有gz时按跳过上报,不算 bundled 校验失败(除非显式用了--gz-check required)。

边界与限制

  • bundled validator 只能确认本地相对路径,无法证明外部仿真器资源路径在目标环境可解析(interoperability.md 的表述是 "it cannot prove external simulator resource paths unless the target environment is available")。model:///package://写得合规,最终仍要靠目标环境的真实加载来验证。
  • bundled 校验是轻量预检(preflight),不是 libsdformat/Gazebo 的替代品;涉及兼容性时用目标仿真器的 parser 和 loader。
  • URI 风格(preferred URI style、mesh 位置、不允许未解析外部 URI 等)属于 "project policy" 类别,与 SDF 结构有效性分开;文档明确不要仅因违反项目偏好就拒绝合法的 SDF,策略问题优先用 warning 和 strict 模式表达。
  • mesh 几何本身不属于 SDF 层的判断范围:mesh 不对时回到其拥有工作流修导出,不要在 SDF 里用 pose/scale 补救。

收尾:按报告格式交代

按 SKILL.md 要求的报告格式,完成 SDF 任务时要写明:跑过的检查及结果(bundled validation、gz sdf --check、simulator load、viewer handoff)、跳过的外部检查及原因、假设清单(例如"假设 mesh 单位是米"、外部 URI 未解析)、以及需要仿真器验证的风险。URI 选择的正确性最终落在两件事上:台账里 Allowed/Resolution expectation 的记录与 XML 中的实际写法一致,且目标消费者环境里真的能加载到 mesh。

【免费下载链接】text-to-cadA library of agent skills for CAD, CAE and CAM项目地址: https://gitcode.com/GitHub_Trending/tex/text-to-cad

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/15 18:28:45

老游戏兼容性研究:从DOSBox到KKND2资源解包与地图编辑实战

简介&#xff1a;一款经典即时战略游戏《KKND2&#xff1a;绝地风暴2》的完整资源包&#xff0c;主要面向怀旧玩家、单机爱好者以及希望重温上世纪90年代RTS风格作品的人群。游戏采用免安装单机方式&#xff0c;运行目录下KKND2.exe即可直接进入&#xff1b;若在较新系统出现闪…

作者头像 李华
网站建设 2026/9/15 18:27:54

PHP五笔字根查询系统源码拆解:从数据库到AJAX的完整实践

简介&#xff1a;这是一份面向PHP入门与进阶学习者的完整实例源码&#xff0c;围绕五笔字根编码查询场景&#xff0c;演示了从数据库设计到Web交互的整套开发流程。资源共12个文件、2.57MB&#xff0c;包含php后端逻辑、sql建表语句、html页面、css样式、js前端交互及png/jpg截…

作者头像 李华
网站建设 2026/9/15 18:26:34

Oracle MOS登录改版全指南:旧账号迁移与MFA绑定实操

前两天群里一个老哥直接甩了张截图问我&#xff1a;“兄弟&#xff0c;这个Oracle MOS登录页怎么变样了&#xff1f;不会是钓鱼网站吧&#xff1f;千万别点啊&#xff01;”我放大一看&#xff0c;差点笑出声&#xff0c;这不就是Oracle新版的统一登录入口嘛。反正跟着它提示走…

作者头像 李华
网站建设 2026/9/15 18:25:48

内存泄漏排查实战:从JVM堆到浏览器DOM的全面指南

1. 内存偷偷涨了三个月&#xff1a;一次真实的线上事故复盘先说一件我实际碰到过的事情&#xff0c;它比任何教科书定义都直观。去年下半年我接手了一个给内部业务团队用的Java服务&#xff0c;功能不复杂&#xff0c;就是定时拉取上游数据、做清洗、再写入数据库。部署在4C8G的…

作者头像 李华