Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

xil carma cloud config that platform works with UI #359

Merged
merged 5 commits into from
Jun 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions xil_carma_cloud/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
**.log
**/logs/**
**/carla-recorder/
**/carla-sensor-lib/
2 changes: 1 addition & 1 deletion xil_carma_cloud/SubsystemControllerParams.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ guidance:
- /guidance/plugins/route_following_plugin
- /guidance/plugins/pure_pursuit_wrapper
- /guidance/plugins/inlanecruising_plugin
- /guidance/plugins/cooperative_lanechange
# - /guidance/plugins/cooperative_lanechange
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

turning off this requirement as we are disabling plugins that are not used.
This is to reduce intermittent failure that can happen in optional plugins that can hinder the testing.
There is open issue at the moment of this intermittent behavior. usdot-fhwa-stol/carma-platform#2385

auto_activated_plugins:
- /guidance/plugins/lci_strategic_plugin
- /guidance/plugins/intersection_transit_maneuvering
Expand Down
44 changes: 31 additions & 13 deletions xil_carma_cloud/carma.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,17 +40,35 @@ CarmaJS.registerNamespace = function (namespace) {
CarmaJS.registerNamespace("CarmaJS.Config");

CarmaJS.Config = (function () {
//Private variables
var ip = '127.0.0.1';

//Private methods
//Creating functions to prevent access by reference to private variables
var getIP = function() {
return ip;
};

//Public API
return {
getIP: getIP
};
//Private variables
var ip = '172.5.0.4'; // carma_net_2
var refresh_interval = 30; //30 seconds
var ros_connect_wait = 5000; //5 miliseconds to wait for platform to launch and ros to connect.
var ros_connect_retry = 24; //# of times to wait. Total 2 minutes
var speed_limit = 30; //Default Speed Limit
//Private methods
//Creating functions to prevent access by reference to private variables
var getIP = function() {
return ip;
};
var getRefreshInterval = function(){
return refresh_interval;
};
var getRosConnectionWaitTime = function() {
return ros_connect_wait;
};
var getRosConnectionRetry = function() {
return ros_connect_retry;
};
var getSPEEDLIMIT = function() {
return speed_limit;
};
//Public API
return {
getIP: getIP,
getRefreshInterval: getRefreshInterval,
getRosConnectionWaitTime:getRosConnectionWaitTime,
getRosConnectionRetry:getRosConnectionRetry,
getSPEEDLIMIT: getSPEEDLIMIT
};
})();
2 changes: 1 addition & 1 deletion xil_carma_cloud/cdasim_config/.env
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ SIMULATION_MODE=TRUE
RMW_IMPLEMENTATION=rmw_fastrtps_cpp
#ROS Middleware implementation for AWS EC2 Instances
#RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
VEHICLE_ENGAGE_DELAY='35'
VEHICLE_ENGAGE_DELAY='55' # allow enough time to ensure tsc_service is up
1 change: 1 addition & 0 deletions xil_carma_cloud/cdasim_config/carma/environment.launch.py
Original file line number Diff line number Diff line change
Expand Up @@ -544,6 +544,7 @@ def generate_launch_description():
)

return LaunchDescription([
# Turning off plugins that are not tested in this release
declare_vehicle_characteristics_param_file_arg,
declare_vehicle_config_param_file_arg,
declare_use_sim_time_arg,
Expand Down
6 changes: 3 additions & 3 deletions xil_carma_cloud/cdasim_config/carma/inlanecruising_config/parameters.yaml
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# The length of the trajectory in time domain, in seconds
trajectory_time_length: 6.0 # Trajectory length in seconds
curve_resample_step_size: 1.0 # Curve re-sampling step size in m
default_downsample_ratio: 18 # Amount to downsample input lanelet centerline data. Value corresponds to saving each nth point.
turn_downsample_ratio: 20 # Amount to downsample input lanelet centerline data on turns. Value corresponds to saving each nth point.
minimum_speed: 2.2352 # Minimum allowable speed in m/s
default_downsample_ratio: 4 # Amount to downsample input lanelet centerline data. Value corresponds to saving each nth point.
turn_downsample_ratio: 4 # Amount to downsample input lanelet centerline data on turns. Value corresponds to saving each nth point.
Comment on lines +4 to +5
Copy link
Contributor Author

@MishkaMN MishkaMN Jun 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these are needed otherwise platform will not be able to fit spline due to 2mph. 2mph for 6 sec is too short distance to be downsampling 18-20 points.

minimum_speed: 0.894 # Minimum allowable speed in m/s
Copy link
Contributor Author

@MishkaMN MishkaMN Jun 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2mph is set by workzone. So in order to allow such low speed, we need to adjust the minimum_speed to match it so as not to use higher minimum_speed and accidentally ignore the workzone.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moreover, for even better performance max_accel_multiplier value should be 1.0 to allow full deceleration rate configured. Because it is making inlane plan only with fractional decelaration value so it is slowing down "too gradually" than expected. However, I kept it same because in this tuning, due to lci_strategic_plugin's activation distance, mostly lci_tactical_plugin is planning, so platform was not using inlane,

# minimum_speed: 5.0 # Minimum allowable speed in m/s
speed_moving_average_window_size: 5 # Size of the window used in the moving average filter to smooth the output speeds
curvature_moving_average_window_size: 9 # Size of the window used in the moving average filter to smooth the computed curvature
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Double: multiplier to apply to the maximum allowable vehicle deceleration limit so we plan under our capabilities
vehicle_decel_limit_multiplier : 1.0

# Double: multiplier to apply to the maximum allowable vehicle acceleration limit so we plan under our capabilities
vehicle_accel_limit_multiplier : 1.0

# Double: The minimum distance in meters that the vehicle can be at before requiring a transition to the APPROACH state
min_approach_distance : 20.0

# Double: Downtrack distance until nearest intersection where the Trajectory Smoothing algorithm should activate
trajectory_smoothing_activation_distance: 40.0
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this allows the lci to only start planning around workzone area. Higher distance than this may make the vehicle slow down early due to trajectory smoothing algorithm. Reducing from this too much is hard to tune for vehicle to stop at the red light.

Copy link
Contributor Author

@MishkaMN MishkaMN Jun 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just realized now the reason why reducing this was hard to tune for stopping is because inlane is taking over the workzone area if this is reduced. When inlane is in charge, vehicle was not slowing down as fast as lci tactical plugin did and since it is too high speed before red light, it is not able to stop. This is because, I just realized, the inlane's max_accel multiplier is 0.4 which is reducing its capability to slow down. Making it 1.0, the vehicle is able to slow down dramatically faster.


# Double: A buffer infront of the stopping location which will still be considered a valid stop. Units in meters
stopping_location_buffer : 4.0

# Double: A buffer in seconds around the green phase which will reduce the phase length such that vehicle still considers it non-green
green_light_time_buffer : 0.5

# Double: Minimum allowable speed in trajectory smoothing algorithm m/s
algo_minimum_speed : 0.894
Copy link
Contributor Author

@MishkaMN MishkaMN Jun 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2mph is set by workzone. So in order to allow such low speed, we need to adjust the minimum_speed to match it so as not to use higher minimum_speed and accidentally ignore the workzone.


# Double: Safety multiplier (must be less than 1.0) of planned allowable vehicle deceleration to use when stopping. This new deceleration makes vehicle decelerate earlier distance.
# NOTE: Stacks on vehicle_decel_limit_multiplier and stopping uses max_decel; this distance is only used for calculating earlier downtrack
deceleration_fraction : 0.7

# Double: Desired distance to stop buffer in meters
desired_distance_to_stop_buffer : 1.0

# Double: The minimum period in seconds which a maneuver plan must cover if the plugin wishes to control the whole plan
min_maneuver_planning_period : 15.1

# Bool: If enable_carma_streets_connection is true when we want to allow carma streets functionality (UC3) and if its false that means we don't want to allow carma streets behaviour and will only use UC2 behaviour.
enable_carma_streets_connection : false

# Double: Mobility operation rate
mobility_rate : 10.0

# String: The name to use for this plugin during comminications with the arbitrator
strategic_plugin_name : lci_strategic_plugin

# String: The name of the tactical plugin to use for Lane Following trajectory planning
# This plugin is used to apply trajectory smoothing algorithm BEFORE entering the intersection if within activation distance
lane_following_plugin_name : light_controlled_intersection_tactical_plugin

# String: The name of the plugin to use for stop and wait trajectory planning
stop_and_wait_plugin_name : stop_and_wait_plugin

# String: The name of the plugin to use for intersection transit trajectory planning
# This plugin is used to travel INSIDE the intersection where there is no trajectory smoothing algorithm active
intersection_transit_plugin_name : intersection_transit_maneuvering
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Double: The gap in meters between points sampled from the lanelet centerlines for planning trajectory positions
# Units: m
centerline_sampling_spacing: 1.0

# Trajectory length in seconds
trajectory_time_length: 12.0

# Amount to downsample input lanelet centerline data. Value corresponds to saving each nth point.
default_downsample_ratio: 4

# Amount to downsample input lanelet centerline data on turns. Value corresponds to saving each nth point.
turn_downsample_ratio: 4
Comment on lines +9 to +12
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

allow more points to fit spline suitable for 2mph


# Curve re-sampling step size in m
curve_resample_step_size: 1.0

# Size of the window used in the moving average filter to smooth the computed curvature
curvature_moving_average_window_size: 9

# Size of the window used in the moving average filter to smooth the output speeds
speed_moving_average_window_size: 5

# Number of meters behind the first maneuver that need to be included in points for curvature calculation
back_distance: 20.0

# Additional distance beyond ending downtrack to ensure sufficient points
buffer_ending_downtrack: 40.0

# Double: multiplier to apply to the maximum allowable vehicle deceleration limit so we plan under our capabilities
vehicle_decel_limit_multiplier : 1.0

# Double: multiplier to apply to the maximum allowable vehicle acceleration limit so we plan under our capabilities
vehicle_accel_limit_multiplier : 1.0

# Multiplier of lat_accel to bring the value under lat_accel
lat_accel_multiplier: 0.50

# Double: A buffer before of the stopping location which will still be considered a valid stop. Units in meters
stop_line_buffer : 2.0

# Double: Minimum allowable speed in m/s2.235
minimum_speed : 0.894
Copy link
Contributor Author

@MishkaMN MishkaMN Jun 27, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2mph is set by workzone. So in order to allow such low speed, we need to adjust the minimum_speed to match it so as not to use higher minimum_speed and accidentally ignore the workzone.


# Double: Distance from the nearest traffic light where the vehicle decides whether to run last successful trajectory or accept new one (in meters)
algorithm_evaluation_distance : 35.0

# Double: Period if scheduled entry time is within which the vehicle decides to run the last successful trajectory smoothing trajectory (in seconds)
algorithm_evaluation_period : 4.5
Loading