-
scripts/
- Utility scripts for working with CARLA.
- Example:
carla_cleanup.py— cleans up the CARLA simulator before launching ROS 2 nodes.
-
src/
-
carla_vehicle_manager/
- Manages vehicle control and sensor interfaces in CARLA.
- Sensors:
- Topics:
-
hydrakon_launch/
- Unified launch file that launches all core modules.
- Has EKF Parameters directly baked into the launch file
- Unified launch file that launches all core modules.
-
lidar_cluster/
- Processes incoming LiDAR point clouds to detect and cluster potential cones using DBSCAN.
- Topics:
-
lidar_handler/
- Simulates the Robosense Helios 16 LiDAR using a Carla sensor wrapper.
- Sensor Node:
- Topics:
-
perception_module/
- Handles perception-related transformations, localization, and sensor fusion (e.g., navsat transform).
- Topics:
-
planning_module/
- (To be implemented) Will handle path planning algorithms such as Pure Pursuit and MPC.
-
zed2i_camera_sim/
- Simulates the ZED 2i stereo camera in Carla.
- Topics:
-
-
/carla/imu_sensor
IMU data from Carla’s onboard IMU
‣ Type:sensor_msgs/msg/Imu -
/carla/gnss
GNSS data from Carla’s onboard GPS sensor
‣ Type:sensor_msgs/msg/NavSatFix -
/carla/lidar
Raw LiDAR point cloud
‣ Type:sensor_msgs/msg/PointCloud2 -
/zed2i/camera_info
Intrinsic camera parameters from the ZED2i simulation
‣ Type:sensor_msgs/msg/CameraInfo -
/zed2i/depth/image
Depth image from the ZED2i simulation
‣ Type:sensor_msgs/msg/Image -
/zed2i/rgb/image
RGB image from the ZED2i simulation
‣ Type:sensor_msgs/msg/Image
/carla/vehicle/*
Set of vehicle control topics (e.g., throttle, brake, reverse)
‣ Type: Carla-specific control interfaces
‣ Driven viakeyboard_control_node.py
-
/perception/lidar_cluster
Clustered cone candidates from LiDAR
‣ Type:sensor_msgs/msg/PointCloud2 -
/perception/cone_markers
RViz markers representing clustered cones
‣ Type:visualization_msgs/msg/MarkerArray -
/gps/filtered
GPS data after initial fusion/filtering
‣ Type:sensor_msgs/msg/NavSatFix -
/gps/pose
GPS fused pose asgeometry_msgs/PoseStamped
‣ Type:geometry_msgs/msg/PoseStamped -
/odometry/gps
Odometry based on raw GNSS + IMU
‣ Type:nav_msgs/msg/Odometry -
/odometry/filtered
Contains odometry output fromrobot_localizationEKF
‣ Type:nav_msgs/msg/Odometry
-
/tf
Dynamic transform tree (e.g., map → base_link)
‣ Type:tf2_msgs/msg/TFMessage -
/tf_static
Static transforms (e.g., base_link → imu_link)
‣ Type:tf2_msgs/msg/TFMessage -
/rosout
Internal ROS 2 logging messages (forrqt_console,ros2 log)
‣ Type:rcl_interfaces/msg/Log
-
✅ Prerequisites
- Ensure the following are installed:
- Ubuntu 22.04 (Preferred) or later
- ROS2 Humble
- CARLA Simulator
- Python 3.10
colcon,rosdep, and other ROS dev tools- NVIDIA GPU with drivers for Carla rendering
- Ensure the following are installed:
-
📁 Clone the Workspace
cd ~ git clone https://github.com/<your-username>/hydrakon_ws.git cd hydrakon_ws
-
📦 Build the Workspace
source /opt/ros/humble/setup.bash rosdep install --from-paths src --ignore-src -r -y colcon build --symlink-install -
🔧 Source the Setup
source install/setup.bash -
🧪 Run Carla Simulator
cd ~/<location-to-your-Carla-sim> cd Linux ./CarlaUnreal.sh
Use the
-quality-level=Lowflag if needed./CarlaUnreal.sh -quality-level=Low
-
🚗 Launch the Full System
ros2 launch hydrakon_launch hydrakon_launch.py
-
📊 Visualize in RViz
rviz2Open this in a new terminal, and make sure
base_linkis selected as the correct fixed frame, then go ahead and choose your desired topics to visualize