力反馈:采集了但没有专门处理

力反馈:采集了但没有专门处理 力数据经历了三重未使用Franka 硬件力矩传感器 K_F_ext_hat_K (6D) ↓ franka_server.py: ROS 回调 self.force [:3], self.torque [:3] ↓ franka_env.py: _get_obs() tcp_force: (3,), tcp_torque: (3,) ↓ SERLObsWrapper: 展平 state → 一维向量 [tcp_pose(7) tcp_vel(6) gripper(1) force(3) torque(3)] 20D ↓ EncodingWrapper: Dense(64) → LayerNorm → tanh 与视觉特征 concat → 策略输入力数据奖励计算不用、安全检测不用、无独立编码。只是与其他本体感受混在一起进入同一个 MLP没有专门的力编码器或力-视觉交叉注意力。任务含力/扭矩serl-main 所有任务是RAM 插入是USB 插入是Egg Flip否Object Handover否0x06 环境恢复与安全机制6.1 盲目恢复系统不检查错误状态而是预防性地每次发命令前都尝试恢复def _send_pos_command(self, pos): self._recover() # 每次发命令前都清除错误不管有没有错 requests.post(self.url pose, jsondata) def _recover(self): requests.post(self.url clearerr) # → ROS ErrorRecoveryActionGoal关键结论碰撞/错误不终止 episode。done只由超时、成功或 ESC 触发。碰撞后如果_recover()成功机器人继续运行中间的致死数据照常存入 Buffer不会被标记或过滤。6.2 人工介入提示点场景提示内容鸡蛋丢失We lost the egg!!! Put egg back and press Enter...双臂交接重置Press Enter to continue...RAM 重新抓取Place RAM in holder and press enter to grasp...相机冻结camera frozen. Check connect, then press enter...人工判断成功Success? (1/0)其中HumanClassifierWrapper有一个非常有趣的半自动模式——当机器人跑完一次后程序停下等人在控制台敲 1 或 0。这是 HIL 最原始、最直接的裁判方式——人肉眼判定成功率while True: try: rew int(input(Success? (1/0))) except: continue