Skip to content

Commit 232a436

Browse files
committed
launch control added
1 parent f306a67 commit 232a436

4 files changed

Lines changed: 36 additions & 3 deletions

File tree

GEMstack/knowledge/defaults/current.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ control:
1616
lookahead_scale: 2.0
1717
crosstrack_gain: 0.3
1818
desired_speed: trajectory
19+
launch_control: 1 # to enable racing features put launch_control to 1
1920
longitudinal_control:
2021
pid_p: 0.8
2122
pid_i: 0.03
@@ -30,8 +31,7 @@ planning:
3031
max_deceleration: 6.0
3132
deceleration: 2.0
3233
min_deceleration: 0.5
33-
yield_deceleration: 0.5
34-
34+
yield_deceleration: 0.5
3535

3636
#configure the simulator, if using
3737
simulator:

GEMstack/knowledge/vehicle/gem_e4.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ max_command_rate : 10.0 #for hardware, max rate of commands to send to
77
#using !include directives helps maintain reuse of common settings
88
geometry: !include gem_e4_geometry.yaml
99
dynamics: !include gem_e4_dynamics.yaml
10-
limits: !include gem_e2_slow_limits.yaml
10+
limits: !include gem_e2_fast_limits.yaml
1111
control_defaults: !include gem_e2_control_defaults.yaml
1212
calibration: !include ../calibration/gem_e4.yaml
1313
sensors: !include gem_e4_sensor_environment.yaml

GEMstack/onboard/interface/gem_hardware.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,13 @@ def __init__(self):
101101
/pacmod/as_rx/wiper_cmd
102102
"""
103103

104+
# Launch Control Timing
105+
# 0 - 5 Seconds 100% brake 0% throttle
106+
# 5 - 6 Seconds 100% brake 100% throttle
107+
# 6 - 7 Seconds 0% brake 100% throttle
108+
# TODO add option launch control
109+
self.start_time = rospy.get_time()
110+
104111
#TODO: publish TwistStamped to /front_radar/front_radar/vehicle_motion to get better radar tracks
105112

106113
#subscribers should go last because the callback might be called before the object is initialized
@@ -318,6 +325,22 @@ def send_command(self, command : GEMVehicleCommand):
318325
self.accel_cmd.enable = True
319326
self.accel_cmd.clear = False
320327
self.accel_cmd.ignore = False
328+
329+
# Launch control
330+
currTime = rospy.get_time() - self.start_time
331+
if currTime < 5:
332+
self.brake_cmd.f64_cmd = maxbrake
333+
self.accel_cmd.f64_cmd = 0
334+
elif currTime < 6:
335+
self.brake_cmd.f64_cmd = maxbrake
336+
self.accel_cmd.f64_cmd = maxacc
337+
elif currTime < 10:
338+
self.brake_cmd.f64_cmd = 0
339+
self.accel_cmd.f64_cmd = maxacc
340+
341+
# self.brake_cmd.f64_cmd = maxbrake
342+
# self.accel_cmd.f64_cmd = 0
343+
321344

322345
self.gear_cmd.ui16_cmd = PacmodCmd.SHIFT_FORWARD
323346
self.gear_cmd.enable = True

GEMstack/onboard/planning/pure_pursuit.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ def __init__(self, lookahead = None, lookahead_scale = None, crosstrack_gain = N
1919
self.wheelbase = settings.get('vehicle.geometry.wheelbase')
2020
self.wheel_angle_range = [settings.get('vehicle.geometry.min_wheel_angle'),settings.get('vehicle.geometry.max_wheel_angle')]
2121
self.steering_angle_range = [settings.get('vehicle.geometry.min_steering_angle'),settings.get('vehicle.geometry.max_steering_angle')]
22+
self.launch_control = settings.get('control.pure_pursuit.launch_control')
2223

2324
if desired_speed is not None:
2425
self.desired_speed_source = desired_speed
@@ -180,6 +181,15 @@ def compute(self, state : VehicleState, component : Component = None):
180181

181182

182183
output_accel = self.pid_speed.advance(e = desired_speed - speed, t = t, feedforward_term=feedforward_accel)
184+
185+
186+
if self.launch_control:
187+
if t < 4:
188+
output_accel = self.max_accel
189+
190+
# self.brake_cmd.f64_cmd = maxbrake
191+
# self.accel_cmd.f64_cmd = 0
192+
183193
if component is not None:
184194
component.debug('curr pt',(curr_x,curr_y))
185195
component.debug('curr param',self.current_path_parameter)

0 commit comments

Comments
 (0)