Feat/a2arm pos force - #1050
Open
lemon-star608 wants to merge 13 commits into
Open
Conversation
Collaborator
lemon-star608
force-pushed
the
feat/a2arm-pos-force
branch
from
August 21, 2026 00:57
48e6ef9 to
c175a47
Compare
Port the A2 quadruped + P7v3 5-DOF arm (joint3/5 frozen) + UMI gripper MJCF from the fork, consolidated into a self-contained robots/a2arm/ (meshdir points at its own meshes/, zero cross-dir dependency). Keyframe lives at scene level per the asset contract. 42 referenced meshes (dog legs + p7_v3 + umi_gripper_v3). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Concurrent state-estimator PPO (actor_critic/algorithm/estimator/runner/ storage) plus scripts/train_cse_ppo.py. Task-independent; runner imported directly (no central algo registry). Estimator targets: base_lin_vel(3) + ee_pos_sphere(3) + force_ee(3) + force_base(3), weights [0.2,0.2,1.0,1.0]. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
New envs/locomotion/a2arm/ (base.py + pos_force.py), zero go2_arm dependency, imports via unilab.utils.rotation/geometry. The fork's 4-layer Go2Arm->A2->V2->J3 config chain is flattened to one A2ArmPosForceCfg with MRO-resolved defaults; training semantics preserved byte-for-byte. Registered as A2ArmPosForce (mujoco). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
conf/ppo_cse/config.yaml + task/a2arm_pos_force/mujoco.yaml. Task YAML is byte-identical to the fork's committed stable baseline (only task_name renamed). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
RslRlVecEnvWrapper.step forwarded state.info['log'] but not state.info['timing'], so rsl_rl-family runners (incl. CSE-PPO) saw no per-phase step timings and collapsed the whole collect into the 'wrapper_glue' catch-all. Forward 'timing' too (additive, backward-compatible) so the iteration waterfall attributes physics/update_state/slow_path/reset again. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
_maybe_apply_velocity_push wrote through get_base_lin_vel()'s return value, relying on the getter returning a mutable qvel view -- a MuJoCo implementation detail the SimBackend contract never promised. A backend returning a copy (including MuJoCo's own fixed-base path, which returns np.zeros) would drop the push silently, disabling that domain randomization with no error. - base.py: add fail-closed SimBackend.set_base_lin_vel (raises NotImplementedError by default, matching apply_body_linear_velocity_delta). - mujoco/backend.py: implement it for the free-floating base (writes the qvel view); raise for a non-free base instead of dropping the write. - pos_force.py: route the push through the setter (copy -> patch x/y -> set). - test: assert the setter's write reaches get_base_lin_vel, and that a shape mismatch raises. Also fix a stale assertion pinning the pre-retune arm_kd. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Strip UniFP references, migration framings (faithful port / byte-identical / inheritance chain), and dated tuning history (2026-07-* / was X -> Y / zeta retune logs) from comments across the a2arm pos-force task, cse_ppo algorithm, and config files. Preserve the technical rationale (why a value exists, what mechanism it controls) while removing the provenance noise. - pos_force.py: neutralize 60+ UniFP/migration comments to describe behavior without referencing the origin; delete DEPLOYMENT CONTRACT tuning block. - estimator.py: keep Ji et al. 2022 citation (academic origin), remove UniFP. - YAMLs: strip tuning dates/run IDs, keep parameter semantics. - test: remove DEPLOYMENT CONTRACT label from arm_kd assertion. No code changes; comment-only cleanup. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
lemon-star608
force-pushed
the
feat/a2arm-pos-force
branch
from
August 21, 2026 01:28
c175a47 to
8d4a1c9
Compare
Collaborator
|
修改merge base 为 dev/issue-1042-manager-based-api |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
功能概述
主要改动
A2Arm 位置-力控制环境
A2ArmPosForce环境及对应配置。CSE-PPO 训练流程
scripts/train_cse_ppo.py训练入口。conf/ppo_cse/下的算法和任务配置。MuJoCo 交互控制
scripts/play_a2arm_pos_force_interactive.py。验证
make test-all