No version for distro humble. Known supported distros are highlighted in the buttons above.
No version for distro jazzy. Known supported distros are highlighted in the buttons above.
No version for distro rolling. Known supported distros are highlighted in the buttons above.

Package Summary

Tags No category tags.
Version 1.0.0
License MIT
Build type CATKIN
Use RECOMMENDED

Repository Summary

Description F1Tenth Simulation Code: Platooning, Computer Vision, Reinforcement Learning, Path Planning
Checkout URI https://github.com/pmusau17/platooning-f1tenth.git
VCS Type git
VCS Version noetic-port
Last Updated 2022-05-20
Dev Status UNKNOWN
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

The race package

Additional Links

No additional links.

Maintainers

  • Patrick Musau

Authors

No additional authors.

Race:

Alt Text

This package contains the nodes, launch files, msg files, and infrastructure needed to run the racecar autonomously in a race-track/circuit. The nodes currently available in this package are:

Launch Files

The launch files have numerous configurable parameters. We invite you to view them in order to tailor them to your needs.

  • f1_tenth_devel.launch
    • This file will start up a single car by default in the porto environment. No driving nodes are started by default, allowing the user to specify which strategy should be used.
  • f1_tenth_rl.launch
    • This file is similar to f1_tenth_devel but starts the car in a more favorable position within the porto track in order to ease the initial training learning curve.
  • multi_parametrizeable.launch
    • This launch file is used for multi-agent experiments. By default it launches two vehicles but it also allows for 3 cars.
  • model_comparison.launch
    • This launch file allows for comparisons between machine learning strategies across different racetracks. It is used by the bash script run_e2e_model_comparison.sh. The strategies that we have evaluated using this file include Soft Actor Critic and Deep Deterministic Policy Gradient reinforcement learning strategies as well as end-to-end computer vision techniques.
  • multicar_disparity_extender.launch
  • platoon.launch
    • This file launches a platooning strategy for two or three cars. The lead car uses a gap following algorithm to navigate while the following cars use a pure-pursuit path tracking algorithm for navigation.

Real Time Reachability Launch Files

The following launch files require that the following repository be built and sourced. These launch files set up the simulation environment that enables a runtime assurance architechture to be used. More details can be found at the above link.

  • sim_for_rtreach.launch
    • Creates runtime-assurance architechture for a single vehicle in the presence of a fixed number of static obstacles (cones). The controller that is used for navigation by default is a vision based end-to-end learning regime.
  • sim_for_rtreach_batch.launch
    • Allows for the runtime assurance architechture to be evaluated across numerous experimental runs. In order to analyze the runtime performance as well as efficacy in preventing collisions.
  • sim_for_rtreach_rl.launch
    • Similar to sim_for_rtreach.launch. However the controller that is used is a reinforcement learning controller trained using Augmented Random Search.
  • sim_for_rtreach_batch_rl.launch
    • Allows for the runtime assurance architechture to be evaluated across numerous experimental runs. In order to analyze the runtime performance as well as efficacy in preventing collisions.
  • sim_for_rtreach_batch_worlds.launch
    • Allows for the runtime assurance architechture to be evaluated across numerous racetrack environments. Default controller is the vision-based end-to-end learning controller.
  • sim_for_rtreach_dynamic.launch
    • This file creates the run-time assurance architechture in the presence of dynamic obstacles. It makes use of a multi-object object tracking algorithm to classify and track objects within the environment.
  • sim_for_rtreach_multi_agent.launch
    • Creates runtime-assurance architechture for a single vehicle in the presence of a fixed number of dynamic obstacles (other agents).
  • slam.launch
    • Launch file for SLAM algorithms. This file makes use of the gmapping library. For simple racetracks this library is sufficient. However for large racetracks with multiple loops we recommend using Google Cartographer.
  • sys_id.launch
    • Launch file used to collect data for model estimation of the F1Tenth Vehicle.

Nodes

Disparity Extender

  • Implementation of reactive navigation via a follow the gap technique developped by UNC

    Follow Lead

  • Node used within platooning to steer an ego vehicle to track the position of the lead car.

    Keyboard

  • Keyboard teleoperation node

    Potential Field Controller

  • Reactive naviation method using artifical potential field techniques.

    Tf Transform

  • Transform publisher for proper visualization in rviz

    Reset World

  • Node that executes a service call to reset gazebo environment

    Speed Node

  • Node that issues speed setpoints in a system architechture where speed and steering control are seperate tasks.

    Decision Manager

  • Decision manager used within a system architechture where speed and steering are independent tasks

    Contact Listner

    The contact listener node is a component designed to detect collision between the racecar and other simulated objects in the envrionment. It has two configurations. The first configuration, simply prints a message whenever a collision occurs. The second configuration resets the envrionment. This useful for reinforcement learning tasks.

To run the node execute the following after the simulation is up and running:

$  rosrun race collision_tracker.py /racecar

To enable resetting the world run:

$  rosrun race collision_tracker.py /racecar 1

Analyze Odom

  • Node that analyzes odometry information of the vehicle.

    Generate System Id

  • Node that generates system identification data for the f1tenth model. It logs (x,y,linear_speed,theta) (throttle, steering angle)

    Safety Controller

  • Simplistic safety controller based on the disparity extender.

    System Identification

  • Matlab System Identification packages for the f1tenth simulator.


Special Thanks: This package was inspired by teams at MIT and UPenn

CHANGELOG
No CHANGELOG found.

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
mpc

Launch files

  • launch/sim_for_rtreach_multi_agent_multiple_controller.launch
      • gui [default: false]
      • box_display_limit [default: 5]
      • reach_time [default: 0.8]
      • wall_time [default: 1.0]
      • debug [default: 0]
      • number_of_cars [default: 2]
      • car_name [default: racecar2]
      • rviz_disp [default: multiagent_rviz_multiple.rviz]
      • model_name [default: fnn_lidar_porto.hdf5]
  • launch/sys_id.launch
      • car_name [default: racecar]
      • csv_filename [default: track_barca_4676.csv]
  • launch/model_comparison.launch
      • world_number [default: 0]
      • car_name [default: racecar]
      • gui [default: true]
      • velocity [default: 1.0]
      • reset_on_crash [default: false]
      • model_name [default: fnn_lidar_porto.hdf5]
      • model_name2 [default: fnn_lidar_all.hdf5]
      • model_name3 [default: fnn_lidar_barca.hdf5]
      • model_name4 [default: fnn_lidar_walker.hdf5]
      • algorithm [default: 0]
      • csv_filename [default: track_porto_26780.csv]
      • csv_filename [default: racecar_walker_29418.csv]
      • csv_filename [default: track_barca_4676.csv]
      • csv_filename [default: racecar_tunnel_26520.csv]
      • csv_filename [default: levine-waypoints3.csv]
      • timeout [default: 180]
      • experiment_number [default: 0]
      • use_sim_time [default: true]
      • verbose [default: false]
      • use_sim_time [default: $(arg use_sim_time)]
  • launch/sim_for_rtreach_batch_rl.launch
      • world_name [default: track_porto]
      • car_name [default: racecar]
      • gui [default: true]
      • model_name [default: minivgg_1.hdf5]
      • csv_filename [default: track_porto_26780.csv]
      • lec_only [default: false]
      • map_file [default: $(find race)/maps/porto_track.yaml]
      • random_seed [default: 15]
      • freespace_file [default: porto_freespace.txt]
      • num_obstacles [default: 6]
      • experiment_number [default: 0]
      • reset_on_crash [default: false]
      • timeout [default: -1]
      • collision_file [default: collisions_rl.txt]
      • use_sim_time [default: true]
      • verbose [default: true]
      • use_sim_time [default: $(arg use_sim_time)]
  • launch/rl_train.launch
      • world_name [default: track_porto]
      • car_name [default: racecar]
      • use_sim_time [default: true]
      • verbose [default: false]
      • use_sim_time [default: $(arg use_sim_time)]
  • launch/platoon.launch
  • launch/f1_tenth_rl.launch
      • world_name [default: track_porto]
      • use_sim_time [default: false]
      • gui [default: true]
      • run_camera [default: false]
      • reset_on_crash [default: false]
      • verbose [default: false]
      • enable_keyboard [default: false]
  • launch/sim_for_rtreach_multi_agent.launch
      • gui [default: true]
      • docker [default: false]
      • box_display_limit [default: 100]
      • reach_time [default: 1.0]
      • wall_time [default: 1.0]
      • debug [default: ]
      • number_of_cars [default: 2]
      • car_name [default: racecar2]
      • rviz_disp [default: multiagent_reach.rviz]
      • model_name [default: minivgg_center_data.hdf5]
  • launch/slam.launch
  • launch/multi_agent_gen.launch
      • racecar_pose [default: -x 1.5 -y 0.05 -z 0.05]
      • racecar2_pose [default: -x 3.5 -y 1.05 -z 0.05]
      • racecar3_pose [default: -x -1.5 -y 0.05 -z 0.05]
      • enable_keyboard [default: false]
      • world_name [default: track_porto]
      • number_of_cars [default: 2]
      • gui [default: true]
      • rviz_disp [default: multicar.rviz]
  • launch/model_comparison_obstacles.launch
      • world_number [default: 0]
      • car_name [default: racecar]
      • gui [default: true]
      • velocity [default: 1.0]
      • random_seed [default: 1516]
      • freespace_file [default: porto_freespace.txt]
      • num_obstacles [default: 5]
      • reset_on_crash [default: false]
      • model_name [default: fnn_lidar_porto.hdf5]
      • model_name2 [default: fnn_lidar_all.hdf5]
      • model_name3 [default: fnn_lidar_barca.hdf5]
      • model_name4 [default: fnn_lidar_walker.hdf5]
      • algorithm [default: 0]
      • csv_filename [default: track_porto_26780.csv]
      • csv_filename [default: racecar_walker_29418.csv]
      • csv_filename [default: track_barca_4676.csv]
      • csv_filename [default: racecar_tunnel_26520.csv]
      • csv_filename [default: levine-waypoints3.csv]
      • timeout [default: 180]
      • experiment_number [default: 0]
      • use_sim_time [default: true]
      • verbose [default: false]
      • use_sim_time [default: $(arg use_sim_time)]
  • launch/sim_for_rtreach_rl.launch
      • world_name [default: track_porto]
      • car_name [default: racecar]
      • gui [default: true]
      • csv_filename [default: track_porto_26780.csv]
      • lec_only [default: false]
      • map_file [default: $(find race)/maps/porto_track.yaml]
      • random_seed [default: 15]
      • freespace_file [default: porto_freespace.txt]
      • num_obstacles [default: 5]
      • timeout [default: -1]
      • use_sim_time [default: true]
      • verbose [default: false]
      • use_sim_time [default: $(arg use_sim_time)]
  • launch/multi_parametrizeable.launch
      • racecar_pose [default: -x 1.5 -y 0.05 -z 0.05]
      • racecar2_pose [default: -x 3.5 -y 1.05 -z 0.05]
      • racecar3_pose [default: -x -1.5 -y 0.05 -z 0.05]
      • enable_keyboard [default: false]
      • world_name [default: track_porto]
      • number_of_cars [default: 2]
      • gui [default: true]
      • rviz_disp [default: multicar.rviz]
      • map_file [default: $(find race)/maps/porto_track.yaml]
  • launch/sim_for_rtreach_dynamic_obstacle_uncertainty.launch
      • gui [default: true]
      • docker [default: false]
      • experiment_number [default: 0]
      • algorithm [default: 0]
      • box_display_limit [default: 100]
      • velocity [default: 1.0]
      • world_name [default: track_porto]
      • reach_time [default: 1.0]
      • map_file [default: $(find race)/maps/porto_track.yaml]
      • wall_time [default: 1.0]
      • debug [default: ]
      • timeout [default: -1]
      • parameter_uncertainty [default: 0.0]
      • position_uncertainty [default: 0.0]
      • velocity_uncertainty [default: 0.0]
      • use_particles [default: 1]
      • number_of_cars [default: 3]
      • num_obstacles [default: 5]
      • car_name [default: racecar]
      • rviz_disp [default: multiagent_reach.rviz]
      • model_name [default: minivgg_center_data.hdf5]
      • use_sim_time [default: true]
      • verbose [default: false]
      • racecar_pose [default: -x -3.5 -y -0.2 -z 0.05]
      • racecar2_pose [default: -x 1.5 -y 1.0 -z 0.05]
      • racecar3_pose [default: -x -1.5 -y 0.05 -z 0.05]
  • launch/sim_for_rtreach_uncertain_simplex.launch
      • gui [default: true]
      • docker [default: false]
      • experiment_number [default: 0]
      • algorithm [default: 0]
      • box_display_limit [default: 100]
      • velocity [default: 1.0]
      • world_name [default: track_porto]
      • reach_time [default: 1.0]
      • map_file [default: $(find race)/maps/porto_track.yaml]
      • wall_time [default: 1.0]
      • debug [default: ]
      • timeout [default: -1]
      • parameter_uncertainty [default: 0.0]
      • position_uncertainty [default: 0.0]
      • velocity_uncertainty [default: 0.0]
      • use_particles [default: 1]
      • number_of_cars [default: 3]
      • num_obstacles [default: 5]
      • car_name [default: racecar]
      • rviz_disp [default: multiagent_reach.rviz]
      • model_name [default: minivgg_center_data.hdf5]
      • use_sim_time [default: true]
      • verbose [default: false]
      • racecar_pose [default: -x -3.5 -y -0.2 -z 0.05]
      • racecar2_pose [default: -x 1.5 -y 1.0 -z 0.05]
      • racecar3_pose [default: -x -1.5 -y 0.05 -z 0.05]
  • launch/sim_for_rtreach_batch.launch
      • world_name [default: track_porto]
      • car_name [default: racecar]
      • gui [default: true]
      • model_name [default: minivgg_center_data.hdf5]
      • csv_filename [default: track_porto_26780.csv]
      • lec_only [default: false]
      • map_file [default: $(find race)/maps/porto_track.yaml]
      • random_seed [default: 15]
      • freespace_file [default: porto_freespace.txt]
      • num_obstacles [default: 6]
      • experiment_number [default: 0]
      • reset_on_crash [default: false]
      • timeout [default: -1]
      • collision_file [default: collisions_e2e.txt]
      • use_sim_time [default: true]
      • verbose [default: true]
      • use_sim_time [default: $(arg use_sim_time)]
  • launch/sim_for_rtreach_multi_agent_batch.launch
      • gui [default: false]
      • box_display_limit [default: 100]
      • reach_time [default: 0.8]
      • experiment_number [default: 0]
      • wall_time [default: 1.0]
      • docker [default: false]
      • velocity [default: 1.0]
      • debug [default: ]
      • number_of_cars [default: 2]
      • timeout [default: 60]
      • car_name [default: racecar2]
      • rviz_disp [default: multiagent_reach.rviz]
      • model_name [default: fnn_lidar_porto.hdf5]
      • algorithm [default: 0]
  • launch/sim_for_rtreach_uncertainty.launch
      • gui [default: true]
      • docker [default: false]
      • box_display_limit [default: 100]
      • world_name [default: track_porto]
      • reach_time [default: 1.0]
      • map_file [default: $(find race)/maps/porto_track.yaml]
      • wall_time [default: 1.0]
      • debug [default: ]
      • timeout [default: -1]
      • parameter_uncertainty [default: 0.0]
      • use_ground_truth [default: true]
      • use_particles [default: 1]
      • number_of_cars [default: 2]
      • car_name [default: racecar]
      • rviz_disp [default: multiagent_reach.rviz]
      • model_name [default: minivgg_center_data.hdf5]
      • use_sim_time [default: true]
      • verbose [default: false]
      • use_sim_time [default: $(arg use_sim_time)]
      • scan_topic [default: racecar/scan]
      • odometry_topic [default: racecar/odom]
      • laser_frame [default: racecar/laser]
  • launch/test.launch
      • gui [default: false]
      • enable_keyboard [default: false]
  • launch/sim_for_rtreach_dynamic.launch
      • enable_keyboard [default: false]
      • world_name [default: track_porto]
      • number_of_cars [default: 2]
      • csv_filename [default: porto_obstacles.txt]
      • model_name [default: minivgg_1.hdf5]
      • map_file [default: $(find race)/maps/porto_track.yaml]
  • launch/f1_tenth_devel.launch
      • world_name [default: track_porto]
      • use_sim_time [default: true]
      • gui [default: false]
      • run_camera [default: false]
      • reset_on_crash [default: false]
      • verbose [default: false]
      • enable_keyboard [default: false]
  • launch/sim_for_rtreach_aij_experiments.launch
      • gui [default: true]
      • docker [default: false]
      • experiment_number [default: 0]
      • algorithm [default: 0]
      • control [default: false]
      • box_display_limit [default: 100]
      • velocity [default: 1.0]
      • world_name [default: track_porto]
      • reach_time [default: 1.0]
      • map_file [default: $(find race)/maps/porto_track.yaml]
      • wall_time [default: 1.0]
      • debug [default: ]
      • timeout [default: -1]
      • parameter_uncertainty [default: 0.0]
      • position_uncertainty [default: 0.0]
      • velocity_uncertainty [default: 0.0]
      • use_particles [default: 1]
      • number_of_cars [default: 3]
      • num_obstacles [default: 5]
      • car_name [default: racecar]
      • rviz_disp [default: multiagent_reach.rviz]
      • model_name [default: minivgg_center_data.hdf5]
      • use_sim_time [default: true]
      • verbose [default: false]
      • racecar_pose [default: -x -3.5 -y -0.2 -z 0.05]
      • racecar2_pose [default: -x 1.5 -y 1.0 -z 0.05]
      • racecar3_pose [default: -x -1.5 -y 0.05 -z 0.05]
  • launch/sim_for_mpc.launch
      • world_name [default: track_porto]
      • car_name [default: racecar]
      • gui [default: true]
      • csv_filename [default: track_porto_26780.csv]
      • map_file [default: $(find race)/maps/porto_track.yaml]
      • random_seed [default: 1516]
      • use_sim_time [default: true]
      • verbose [default: false]
      • use_sim_time [default: $(arg use_sim_time)]
      • freespace_file [default: porto_freespace.txt]
      • num_obstacles [default: 10]
  • launch/multicar_disparity_extender.launch
      • number_of_cars [default: 2]
  • launch/sim_for_rtreach.launch
      • world_name [default: track_porto]
      • car_name [default: racecar]
      • gui [default: true]
      • model_name [default: minivgg_center_data.hdf5]
      • csv_filename [default: track_porto_26780.csv]
      • lec_only [default: false]
      • map_file [default: $(find race)/maps/porto_track.yaml]
      • random_seed [default: 15]
      • freespace_file [default: porto_freespace.txt]
      • num_obstacles [default: 6]
      • timeout [default: -1]
      • use_sim_time [default: true]
      • verbose [default: false]
      • use_sim_time [default: $(arg use_sim_time)]
  • launch/sim_for_rtreach_batch_emsoft.launch
      • world_number [default: 0]
      • car_name [default: racecar]
      • gui [default: false]
      • lrviz [default: true]
      • velocity [default: 1.0]
      • algorithm [default: 0]
      • wall_time [default: 25]
      • random_seed [default: 15]
      • timeout [default: -1]
      • model_name [default: dave_elu_adam_82.hdf5]
      • reset_on_crash [default: false]
      • experiment_number [default: 0]
      • model_name2 [default: fnn_lidar_porto.hdf5]
      • model_name3 [default: fnn_lidar_all.hdf5]
      • num_obstacles [default: 6]
      • map_file [default: $(find race)/maps/$(arg map_name)]
      • use_sim_time [default: true]
      • verbose [default: false]
      • use_sim_time [default: $(arg use_sim_time)]
  • launch/sim_for_rtreach_multi_agent_benchmarking.launch
      • gui [default: false]
      • box_display_limit [default: 100]
      • reach_time [default: 0.8]
      • experiment_number [default: 0]
      • wall_time [default: 1.0]
      • docker [default: false]
      • velocity [default: 1.0]
      • debug [default: ]
      • number_of_cars [default: 2]
      • timeout [default: 60]
      • car_name [default: racecar2]
      • rviz_disp [default: multiagent_reach.rviz]
      • model_name [default: fnn_lidar_porto.hdf5]
      • algorithm [default: 0]
  • launch/move_base_planning.launch
      • world_name [default: track_porto]
      • car_name [default: racecar]
      • gui [default: true]
      • csv_filename [default: track_porto_26780.csv]
      • map_file [default: $(find race)/maps/porto_track.yaml]
      • random_seed [default: 1516]
      • use_sim_time [default: false]
      • verbose [default: false]
      • use_sim_time [default: $(arg use_sim_time)]
      • freespace_file [default: porto_freespace.txt]
      • num_obstacles [default: 10]
  • launch/sim_for_rtreach_uncertainty_control.launch
      • gui [default: true]
      • docker [default: false]
      • experiment_number [default: 0]
      • algorithm [default: 0]
      • box_display_limit [default: 100]
      • velocity [default: 1.0]
      • world_name [default: track_porto]
      • reach_time [default: 1.0]
      • map_file [default: $(find race)/maps/porto_track.yaml]
      • wall_time [default: 1.0]
      • debug [default: ]
      • timeout [default: -1]
      • parameter_uncertainty [default: 0.0]
      • position_uncertainty [default: 0.0]
      • velocity_uncertainty [default: 0.0]
      • use_particles [default: 1]
      • number_of_cars [default: 3]
      • num_obstacles [default: 5]
      • car_name [default: racecar]
      • rviz_disp [default: multiagent_reach.rviz]
      • model_name [default: minivgg_center_data.hdf5]
      • use_sim_time [default: true]
      • verbose [default: false]
      • racecar_pose [default: -x -3.5 -y -0.2 -z 0.05]
      • racecar2_pose [default: -x 1.5 -y 1.0 -z 0.05]
      • racecar3_pose [default: -x -1.5 -y 0.05 -z 0.05]

Services

No service files found

Plugins

No plugins found.

Recent questions tagged race at Robotics Stack Exchange

No version for distro noetic. Known supported distros are highlighted in the buttons above.
No version for distro ardent. Known supported distros are highlighted in the buttons above.
No version for distro bouncy. Known supported distros are highlighted in the buttons above.
No version for distro crystal. Known supported distros are highlighted in the buttons above.
No version for distro eloquent. Known supported distros are highlighted in the buttons above.
No version for distro dashing. Known supported distros are highlighted in the buttons above.
No version for distro galactic. Known supported distros are highlighted in the buttons above.
No version for distro foxy. Known supported distros are highlighted in the buttons above.
No version for distro iron. Known supported distros are highlighted in the buttons above.
No version for distro lunar. Known supported distros are highlighted in the buttons above.
No version for distro jade. Known supported distros are highlighted in the buttons above.
No version for distro indigo. Known supported distros are highlighted in the buttons above.
No version for distro hydro. Known supported distros are highlighted in the buttons above.
No version for distro kinetic. Known supported distros are highlighted in the buttons above.
No version for distro melodic. Known supported distros are highlighted in the buttons above.