我正在实施强化学习任务,以解决自主机器人的停车任务。所以基本上,任务的想法是从停车位前面的某个点开始,然后开车到一个不与障碍物碰撞的姿势。如果机器人的给定位置和航向角与目标姿势相匹配,则代理已达到目标。
实际上,我在塑造奖励函数来解决此任务时遇到了很多问题。所以我请你们帮我解决这个问题。我需要的奖励功能取决于以下内容:
- (距离奖励) 机器人离目标越近,奖励越高
- (定向奖励)航向角对目标位置角度的容差越小奖励越高
- (速度奖励)接近目标位置时速度越慢奖励越高
我当前的奖励功能如下所示:
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
如果有人能建议我该功能有什么问题以及如何实现速度奖励,我将非常高兴!感谢你们。