google-deepmind / google-deepmind/dm_control

[Question] canonical way to implement synchronous actions?

未关闭
#361 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Python
星标
4.7k
派生
764
PR 合并指标
30 天内没有已合并 PR

描述

I'm interested in using `mujoco` and `dm_control` to simulate a robot that can execute a trajectory for each step in the environment (e.g. for simulating a motion primitive with spatial actions).

In pybullet (or mujoco w/o the dm_control framework) in `environment.step` you would do IK, set the joint targets and call `p.stepSimulation()` untill the target pose is reached according to some criterion or just teleoport the joints to this state, collect the observations and return. But in dm_control, you cannot do this as the callbacks should be executed in time (so that other entities could also update their state based on the physics state or the action).

The number of physics steps required to execute this trajectory can vary quite a bit (nearby pose vs far away, or even teleporting the robot if it is not interacting with objects at that moment), so just running the worst case number of physics steps for each environment step seems very inefficient.

I'm wondering if this kind of synchronous (= "runtime-validated stop condition and hence variable number of physics steps") actions can be realised more efficiently in the `dm_control` framework, and what the canonical way is to do so.

One way I can think of, is an 'early termination' in the inner loop in the `environment.step` method, if the task signals this to the environment (the task itself can query its entities if needed), but that is not facilitated by the current Environment and I feel like I can't be the first person with this question so I wanted to hear if anyone knows a way to do this within the current framework?

贡献指南

打开贡献指南

调研方向

从当前的 dm_control Environment 及其 environment.step 实现入手,然后检查 task 回调在物理步进期间是如何调度的。将该流程与提出的提前终止条件以及 MuJoCo 或 dm_control 的轨迹用例进行比较。完成标准是形成有文档记录的规范方法,或针对可变长度同步动作的、范围明确的框架变更。

由索引模型根据 Issue 内容生成。

评估

技术栈
python
领域
robotics
Issue 类型
功能
难度
5/5
预计耗时
一周以上
活跃度
停滞
描述清晰度
需要澄清
新手友好度
20/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。