GryphonRacingAI / gra

ROS + Docker code for University of Leeds Gryphon Racing AI team 2023-24
4 stars 4 forks source link

3D Graph SLAM +3D lidar odom / 2D Laser SLAM + 2D lidar odom #34

Closed ugsfume closed 5 months ago

ugsfume commented 5 months ago

The main goal of this build is to implement SLAM using 3D point cloud (for ADS-DV) and 2D laser (for small-scale car). Odometry sources are also provided by these sensors, to replace or compliment wheel-based odometry. General Software Pipeline: Perception -> Cone Recognition + Cluster Detection -> Cone Mapping -> SLAM (optional for simulation) -> Path Planning -> Path Follower

Major Features:

Minor Features:

TODO:

Instructions:

Autonomous System Launch Sequence (full-scale ADS-DV model, with absolute odometry):

  1. roscore
  2. roslaunch ackermann_vehicle_description ads_dv_sim.launch
  3. roslaunch ultralytics_ros tracker_with_cloud.launch
  4. roslaunch ultralytics_ros cone_mapper.launch
  5. roslaunch ackermann_vehicle_navigation track_follower.launch

Do the following to disable GPU Acceleration:

  1. Go to gra/.devcontainer/docker-compose.yml and comment the deploy section, then rebuild the Docker image in VScode
  2. Go to gra/ros/cone_detection/launch/tracker_with_cloud.launch Comment line 17 and uncomment line 15
  3. This step reduces Gazebo CPU usage by scaling the simulation time. The simulator will appear slower but CPU load will be reduced significantly. Go to gra/ros/ackermann_vehicle_gazebo/worlds/gazebo_world_building/track_small_features.world Line 76: 700 Reduce the value to reduce CPU load. 1000 is the default value where the simulation time unit = real time unit. When the value is 500, 1 simulation second = 2 real time second. Start with 700 and reduce gradually if the cone recognition process is unable to stablise. Unstable process can be observed by the cones swerving in Rviz when the car is steering.

Note to self: add these instructions to README or wiki

2d_slam_grid 3d_graph_slam

daniel-bara commented 5 months ago

Note to self: add these instructions to README or wiki