# General Simulation Configuration /**: ros__parameters: simulation: # Use Gazebo ground truth for "perfect" position estimation # In real world, this would come from visual odometry use_gazebo_ground_truth: true # Set false for realistic VO errors # Add noise to simulate real sensors add_sensor_noise: true # Noise parameters noise: position_stddev: 0.05 # meters velocity_stddev: 0.1 # m/s imu_gyro_stddev: 0.0002 # rad/s imu_accel_stddev: 0.017 # m/s^2 # GPS simulation (for geofence only) gps: enabled: true # Only for geofencing update_rate: 5 # Hz noise_stddev: 2.0 # meters (realistic GPS error) # Real-time factor (1.0 = real-time) real_time_factor: 1.0 # Physics settings physics: engine: "ode" max_step_size: 0.001 real_time_update_rate: 1000 # World configuration world: name: "empty_custom" gravity: 9.81 # Lighting (affects vision) lighting: ambient_level: 0.4 shadows: true sun_angle: 45.0 # degrees # Ground plane ground: size: [100.0, 100.0] # meters texture: "ground_plane" friction: 1.0 # Initial positions (LOCAL coordinates) initial_positions: uav: x: 0.0 y: 0.0 z: 0.2 # Start slightly above ground roll: 0.0 pitch: 0.0 yaw: 0.0 ugv: x: 5.0 y: 0.0 z: 0.0 roll: 0.0 pitch: 0.0 yaw: 1.57 # 90 degrees (facing +Y) # Visualization visualization: show_trajectory: true trajectory_length: 1000 # points show_local_frame: true show_velocity_vector: true # Data logging logging: enabled: true log_directory: "~/.ros/uav_ugv_logs" log_topics: - "/uav/visual_odometry/pose" - "/uav/mavros/local_position/pose" - "/geofence/status" bag_recording: false