0

我正在实施强化学习任务,以解决自主机器人的停车任务。所以基本上,任务的想法是从停车位前面的某个点开始,然后开车到一个不与障碍物碰撞的姿势。如果机器人的给定位置和航向角与目标姿势相匹配,则代理已达到目标。

实际上,我在塑造奖励函数来解决此任务时遇到了很多问题。所以我请你们帮我解决这个问题。我需要的奖励功能取决于以下内容:

  • (距离奖励) 机器人离目标越近,奖励越高
  • (定向奖励)航向角对目标位置角度的容差越小奖励越高
  • (速度奖励)接近目标位置时速度越慢奖励越高

我当前的奖励功能如下所示:

    current_distance = self.get_euclidean_distance(current_position, desire_position)
    self.distance_reward = (-1)* current_distance/self.max_dist_to_targ

    # Heading Reward. 0: indicates vertical parking, -1: means reverse parking state
    heading_angle = abs(current_heading_angle - target_angle)
    if heading_angle > 0 and heading_angle < np.pi:
        self.heading_angle_reward = -1 * abs(heading_angle - np.pi/2) / np.pi
    else:
        self.heading_angle_reward = -2 * abs(heading_angle - (3*np.pi)/2) / (2*np.pi - 1)
        
    # Goal Reward
    self.goal_reward = 0
    if current_distance <= cp.pose_tolerance and heading_angle <= np.radians(cp.heading_angle_tolerance):
        self.goal_reward = 150

    # Collistion Penalty
    if not self.is_near_by_an_object2(beams_coords, current_trans_vel):
        self.collision_penalty = 0
    else:
        self.collision_penalty = -10

    reward = 10*((1 - w) * self.distance_reward + w * self.heading_angle_reward) +\
            10*self.goal_reward + 10* self.collision_penalty 

如果有人能建议我该功能有什么问题以及如何实现速度奖励,我将非常高兴!感谢你们。

4

0 回答 0