合肥怎么做网站深圳高端女装品牌排行榜

当前位置: 首页 > news >正文

合肥怎么做网站,深圳高端女装品牌排行榜,私家网站ip地址大全,做制作网站找啥工作如是我闻#xff1a; 终于让我给摸索出来了#xff0c;在这里描述一下问题场景。 假使说我们有一个机械臂操作的任务#xff0c;这样婶的 Isaac Lab | Push 我们想做多目标的任务#xff0c;这时候需要向环境中添加第二个目标#xff0c;像这样 Isaac Lab | Add target 那…如是我闻 终于让我给摸索出来了在这里描述一下问题场景。 假使说我们有一个机械臂操作的任务这样婶的 Isaac Lab | Push 我们想做多目标的任务这时候需要向环境中添加第二个目标像这样 Isaac Lab | Add target 那么就需要改动如下代码。

  1. 添加新的目标命令 假如你的环境保留了IsaacLab他提供的的文件结构像这样
    我们应该有一个叫做 ****_env_cfg.py 的文件环境名在lift环境里有一个 lift_env_cfg.py在reach 环境中有一个reach_env_cfg.py。也许你有一个自己命名的文件但是没有关系。 在 ****_env_cfg.py 中我们包装了如环境设置ObjectTableSceneCfg目标命令CommandsCfg动作空间ActionCfg观察空间ObservationCfg随机化事件EvetCfg奖励函数RewardsCfg终止条件TerminationsCfg等项 我们首先需要改动的在 ****_env_cfg.py 中找到目标命令类CommandsCfg他可能长这样 configclass class CommandsCfg:Command terms for the MDP.object_pose mdp.UniformPoseCommandCfg(asset_namerobot,body_nameMISSING, # will be set by agent env cfgresampling_time_range(5.0, 5.0),debug_visTrue,rangesmdp.UniformPoseCommandCfg.Ranges(pos_x(0.3, 0.7), pos_y(-0.3, 0.3), pos_z(0.0, 0.0), roll(0.0, 0.0), pitch(0.0, 0.0), yaw(0.0, 0.0)),) 这里只写了一个目标命令object_pose我们直接复制粘贴可以得到 configclass class CommandsCfg:Command terms for the MDP.object_pose mdp.UniformPoseCommandCfg(asset_namerobot,body_nameMISSING, # will be set by agent env cfgresampling_time_range(5.0, 5.0),debug_visTrue,rangesmdp.UniformPoseCommandCfg.Ranges(pos_x(0.3, 0.7), pos_y(-0.3, 0.3), pos_z(0.0, 0.0), roll(0.0, 0.0), pitch(0.0, 0.0), yaw(0.0, 0.0)),)object2_pose mdp.UniformPoseCommandCfg(asset_namerobot,body_nameMISSING, # will be set by agent env cfgresampling_time_range(5.0, 5.0),debug_visTrue,rangesmdp.UniformPoseCommandCfg.Ranges(pos_x(0.3, 0.7), pos_y(-0.3, 0.3), pos_z(0.0, 0.0), roll(0.0, 0.0), pitch(0.0, 0.0), yaw(0.0, 0.0)),)这样我们就有两个目标命令了傻笑。
  2. 将新的目标命令添加到观察空间中 还是在这个****_env_cfg.py 文件中找到观察空间类ObservationCfg configclass class ObservationsCfg:Observation specifications for the MDP.configclassclass PolicyCfg(ObsGroup):Observations for policy group.joint_pos ObsTerm(funcmdp.joint_pos_rel)joint_vel ObsTerm(funcmdp.joint_vel_rel)object_position ObsTerm(funcmdp.object_position_in_robot_root_frame)target1_object1_position ObsTerm(funcmdp.generated_commands, params{command_name: object_pose})# Add object2 position in robot root frameobject2_position ObsTerm(funcmdp.object2_position_in_robot_root_frame)actions ObsTerm(funcmdp.last_action)def post_init(self):self.enable_corruption Trueself.concatenate_terms True# observation groupspolicy: PolicyCfg PolicyCfg()这里我们需要添加新的target_object_position所以object2_position后面会加一句。 configclass class ObservationsCfg:Observation specifications for the MDP.configclassclass PolicyCfg(ObsGroup):Observations for policy group.joint_pos ObsTerm(funcmdp.joint_pos_rel)joint_vel ObsTerm(funcmdp.joint_vel_rel)object_position ObsTerm(funcmdp.object_position_in_robot_root_frame)target1_object1_position ObsTerm(funcmdp.generated_commands, params{command_name: object_pose})# Add object2 position in robot root frameobject2_position ObsTerm(funcmdp.object2_position_in_robot_root_frame)target2_object2_position ObsTerm(funcmdp.generated_commands, params{command_name: object2_pose})actions ObsTerm(funcmdp.last_action)def post_init(self):self.enable_corruption Trueself.concatenate_terms True# observation groupspolicy: PolicyCfg PolicyCfg()当然这里使用的是我个人的一种情况举例只是为了告诉老铁们如果添加了新的目标到环境里不要忘了把他加到观察空间中哦
  3. 把body_name的名字传进去 事情是这样的让我们回过头去看目标命令类的代码CommandsCfg configclass class CommandsCfg:Command terms for the MDP.object_pose mdp.UniformPoseCommandCfg(asset_namerobot,body_nameMISSING, # will be set by agent env cfgresampling_time_range(5.0, 5.0),debug_visTrue,rangesmdp.UniformPoseCommandCfg.Ranges(pos_x(0.3, 0.7), pos_y(-0.3, 0.3), pos_z(0.0, 0.0), roll(0.0, 0.0), pitch(0.0, 0.0), yaw(0.0, 0.0)),)object2_pose mdp.UniformPoseCommandCfg(asset_namerobot,body_nameMISSING, # will be set by agent env cfgresampling_time_range(5.0, 5.0),debug_visTrue,rangesmdp.UniformPoseCommandCfg.Ranges(pos_x(0.3, 0.7), pos_y(-0.3, 0.3), pos_z(0.0, 0.0), roll(0.0, 0.0), pitch(0.0, 0.0), yaw(0.0, 0.0)),) 他的body_name属性是没有(Missing)的他的注释后面说 will be set by agent env cfg会被agent的环境配置传进来这就神奇了。 众所周知agent的环境配置在这个文件夹下以lift任务为例 打开我们想更改的配置文件我们能看到这样的代码 configclass class Franka2CubePushEnvCfg(Push2EnvCfg):def post_init(self):# post init of parentsuper().post_init()# Set Franka as robotself.scene.robot FRANKA_PANDA_CFG.replace(prim_path{ENV_REGEX_NS}/Robot)# Set actions for the specific robot type (franka)self.actions.body_joint_pos mdp.JointPositionActionCfg(asset_namerobot, joint_names[panda_joint.], scale0.5, use_default_offsetTrue)self.actions.finger_joint_pos mdp.BinaryJointPositionActionCfg(asset_namerobot,joint_names[panda_finger.],open_command_expr{pandafinger.: 0.04},close_command_expr{pandafinger.: 0.0},)# Set the body name for the end effectorself.commands.object_pose.body_name panda_hand可以看到是在最后一行他把panda_hand的名字传进来了, 所以我们要为新的目标命令也把名字传过去修改后的代码会像 configclass class Franka2CubePushEnvCfg(Push2EnvCfg):def post_init(self):# post init of parentsuper().post_init()# Set Franka as robotself.scene.robot FRANKA_PANDA_CFG.replace(prim_path{ENV_REGEX_NS}/Robot)# Set actions for the specific robot type (franka)self.actions.body_joint_pos mdp.JointPositionActionCfg(asset_namerobot, joint_names[panda_joint.], scale0.5, use_default_offsetTrue)self.actions.finger_joint_pos mdp.BinaryJointPositionActionCfg(asset_namerobot,joint_names[panda_finger.],open_command_expr{pandafinger.: 0.04},close_command_expr{pandafinger.: 0.0},)# Set the body name for the end effectorself.commands.object_pose.body_name panda_handself.commands.object2_pose.body_name panda_hand4. 设计新的奖励函数 这一步就说不明白了因为大家搓出来的任务都不大一样。但终归我们加了新的目标是为了做新的强化学习训练的那就又得为新的目标更改新的奖励函数。 但是通过上面的步骤新的目标标记会出现在环境中就是这样 非常的有品 以上