injected_thinking / scripts /tools /tool_prompts.py
BechusRantus's picture
Upload folder using huggingface_hub
7134ce7 verified
# Extract ego-vehicle information
# Written by Jiageng Mao
def extract_ego_inputs(data_dict):
ego_prompts = "*"*5 + "Ego States:" + "*"*5 + "\n"
"""
Ego-States:
ego_states: [vx, vy, ?, ?, v_yaw (rad/s), ego_length, ego_width, v0 (vy from canbus), Kappa (steering)]
"""
vx = data_dict['ego_states'][0]*0.5
vy = data_dict['ego_states'][1]*0.5
v_yaw = data_dict['ego_states'][4]
ax = data_dict['ego_hist_traj_diff'][-1, 0] - data_dict['ego_hist_traj_diff'][-2, 0]
ay = data_dict['ego_hist_traj_diff'][-1, 1] - data_dict['ego_hist_traj_diff'][-2, 1]
cx = data_dict['ego_states'][2]
cy = data_dict['ego_states'][3]
vhead = data_dict['ego_states'][7]*0.5
steeling = data_dict['ego_states'][8]
ego_prompts += f"Current State:\n"
ego_prompts += f" - Velocity (vx,vy): ({vx:.2f},{vy:.2f})\n"
ego_prompts += f" - Heading Angular Velocity (v_yaw): ({v_yaw:.2f})\n"
ego_prompts += f" - Acceleration (ax,ay): ({ax:.2f},{ay:.2f})\n"
ego_prompts += f" - Can Bus: ({cx:.2f},{cy:.2f})\n"
ego_prompts += f" - Heading Speed: ({vhead:.2f})\n"
ego_prompts += f" - Steering: ({steeling:.2f})\n"
"""
Historical Trjectory:
ego_hist_traj: [5, 2] last 2 seconds
ego_hist_traj_diff: [4, 2] last 2 seconds, differential format, viewed as velocity
"""
xh1 = data_dict['ego_hist_traj'][0][0]
yh1 = data_dict['ego_hist_traj'][0][1]
xh2 = data_dict['ego_hist_traj'][1][0]
yh2 = data_dict['ego_hist_traj'][1][1]
xh3 = data_dict['ego_hist_traj'][2][0]
yh3 = data_dict['ego_hist_traj'][2][1]
xh4 = data_dict['ego_hist_traj'][3][0]
yh4 = data_dict['ego_hist_traj'][3][1]
ego_prompts += f"Historical Trajectory (last 2 seconds):"
ego_prompts += f" [({xh1:.2f},{yh1:.2f}), ({xh2:.2f},{yh2:.2f}), ({xh3:.2f},{yh3:.2f}), ({xh4:.2f},{yh4:.2f})]\n"
"""
Mission goal:
goal
"""
cmd_vec = data_dict['goal']
right, left, forward = cmd_vec
if right > 0:
mission_goal = "RIGHT"
elif left > 0:
mission_goal = "LEFT"
else:
assert forward > 0
mission_goal = "FORWARD"
ego_prompts += f"Mission Goal: "
ego_prompts += f"{mission_goal}\n"
ego_data = {}
keys_to_extract = ['token', 'ego_states', 'ego_hist_traj_diff', 'ego_hist_traj', 'goal']
ego_data = {key: data_dict[key] for key in keys_to_extract if key in data_dict}
return ego_prompts, ego_data
def get_ego_prompts(data_dict):
"""Get ego prompt inputs from driving data (used as inital inputs)"""
ego_prompts, _ = extract_ego_inputs(data_dict)
return ego_prompts
# init system prompt
def get_system_prompt():
# system_prompt = """
# **A Language Agent for Autonomous Driving**
# Role: You are the brain of an autonomous vehicle (a.k.a. ego-vehicle). In this step, you need to extract necessary information from the driving scenario. The information you extracted must be useful to the drivung question answering.
# Necessary information might include the following:
# - Visual infos: The visual information of the certain camera.
# - Detections: The detected objects that you need to pay attention to.
# - Predictions: The estimated future motions of the detected objects.
# - Maps: Map information includes traffic lanes and road boundaries.
# - Occunpancy: Occupancy implies whether a location has been occupied by other objects.
# Task
# - You should think about what types of information (Visual info, Detections, Predictions, Maps, Occupancy) you need to extract from the driving scenario.
# - Detections and Predictions are quite important for question like motion planning. You should call at least one of them if necessary. For example, when identifying the most important objects in the scene or predicting the future state of an object.
# - Maps information are also important. You should pay more attention to road shoulder and lane divider information. This is essential for questions related to maintaining the lane, understanding the road layout, and identifying relevant traffic signals.
# """
system_prompt = """
**A Language Agent for Autonomous Driving**
Role: You are the brain of an autonomous vehicle (a.k.a. ego-vehicle).
"""
return system_prompt
def get_detection_prompt():
detection_prompt = """
The detected objects that you need to pay attention to.
"""