예제 #1
0
    def CPG_transfer(self, RL_output):
        #print(RL_output)
        self.CPG_controller.update(RL_output)
        # if self.t % 100 == 0:
        #     #CPG_controller.update(RL_output)
        #     print(RL_output)
        ###adjust CPG_neutron parm using RL_output
        output_list = self.CPG_controller.output(state=None)
        # ignore some cell
        target_joint_angles = np.array([
            output_list[1],
            0,
            0,
            0,
            output_list[2],
            output_list[3],
            output_list[4],
            output_list[5],
            output_list[6],
            output_list[7],
            output_list[8],
            output_list[9],
            output_list[10],
            output_list[11],
            output_list[12],
            output_list[13],
            output_list[14],
        ])

        cur_angles = np.concatenate(
            [state_M.dot(self.sim.data.qpos[7:].reshape((-1, 1))).flat])
        action = PID_controller(cur_angles, target_joint_angles)
        return action
예제 #2
0
def CPG_transfer(RL_output, CPG_controller, obs, t):

    #CPG_controller.update(RL_output)
    # adjust CPG_neutron parm using RL_output
    output_list = CPG_controller.output(state=None)
    target_joint_angles = np.array(output_list[1:])
    cur_angles = obs[obs_low:obs_high]
    action = PID_controller(cur_angles, target_joint_angles)
    return action
 def CPG_transfer(self,RL_output, CPG_controller ):
     #print(RL_output)
     CPG_controller.update(RL_output)
     # if self.t % 100 == 0:
     #     #CPG_controller.update(RL_output)
     #     print(RL_output)
     ###adjust CPG_neutron parm using RL_output
     output_list = CPG_controller.output(state=None)
     target_joint_angles = np.array(output_list[1:])# CPG 第一个输出为placemarke
     cur_angles = np.concatenate([state_M.dot(self.model.data.qpos[7:].reshape((-1, 1))).flat])
     action = PID_controller(cur_angles, target_joint_angles)
     return action