Documentation about the available sensors in the SWARM Developer System

SWARM Sensors

This page describes the various sensors, applicable options, known defaults and other details of the sensors used in SWARM. Each sensor runs independently in the SWARM System, allowing you finite control of the required sensor data to achieve design and implementation of varoious features.

Available Sensors

  • Cameras (Depth and Scene)
  • LiDAR (Solid State)
  • Distance Sensor
  • Barometer
  • Magnetometer
  • GPS
  • IMU
  • Odometer

Cameras

Each Camera element in the SWARM Platform emulates a real-world camera, which requires an extensive image capture system. Improving on the original camera system developed by Microsoft for this project, we have made substantial improvements to the underlying capture system, corrected specific components that didn't make sense and included independent ROS-based plug-ins.

To utilize a Camera, you can simply list the camera in the "Sensors" section for the particular agent you had in mind. Each agent can be different and have a different set of sensors. There are no limits on the number of cameras. However, running a single camera is somewhat CPU intensive on the Unreal Engine side. Utilizing more then 6 cameras is discouraged, as frame rate and performance drop percipitously after that.

                    ...
                    "Agents": {
                        "Drone1": {
                            "Vehicle": "Multirotor",
                            "VehicleOptions": {},
                            "AutoPilot": "PX4",
                            "Sensors": {
                                "Cameras": {
                                    "Camera1": {
                                        "Enabled": true,
                                        "X": 0.35,
                                        "Y": 0.0,
                                        "Z": 0.0,
                                        "Roll": 0.0,
                                        "Pitch": 0.0,
                                        "Yaw": 0.0,
                                        "Settings": {
                                            "ImageType": "Scene",
                                            "Width": 640,
                                            "Height": 480,
                                            "FOV_Degrees": 90.0,
                                            "FramesPerSecond": 24.0
                                        }
                                    }
                                }
                            }
                    ...    
                
                    

LiDAR

The LiDAR system in SWARM utilizes a Ray Tracing-style system, which determines if a ray from the sensor has intersected with an object for a specific range. The exact method is detailed in the "methods" subsection.

An example is shown below of setting up a LiDAR sensor.

                    ...
                    "Agents": {
                        "Drone1": {
                            "Vehicle": "Multirotor",
                            "VehicleOptions": {
                                "UseLocalPX4": true
                            },
                            "AutoPilot": "PX4",
                            "Sensors": {
                                "LiDAR": {
                                    "LidarSensor1": {
                                        "Enabled": true,
                                        "Hardware": "VelodynePuck",
                                        "Method": "Colosseum",
                                        "X": 0.35,
                                        "Y": 0.0,
                                        "Z": 0.0,
                                        "Roll": 0.0,
                                        "Pitch": 0.0,
                                        "Yaw": 0.0,
                                        "PublishingRate": 20.0,
                                        "Settings": {
                                            "NumberOfChannels": 16,
                                            "RotationsPerSecond": 10,
                                            "PointsPerSecond": 100000,
                                            "VerticalFOVUpper": -15.0,
                                            "VerticalFOVLower": -25.0,
                                            "HorizontalFOVStart": -20.0,
                                            "HorizontalFOVEnd": 20.0,
                                            "DataFrame": "SensorLocalFrame"
                                        }
                                    }
                                }
                            }
                    ...    
                
                    

All FOV settings are in degrees. Negative degrees is to the left (-Y axis) if looking from the perspective of the agent. All distance measurements are in meters. All Euler Angles are in degrees.

Method

Coming soon!

Distance Sensor

The Distance Sensor provides a known distance, with a number of options to customize to your liking. All ranges, distances and measurements are in meters.

An example is shown below of setting up a Distance sensor.

                    ...
                    "Agents": {
                        "Drone1": {
                            "Vehicle": "Multirotor",
                            "VehicleOptions": {
                                "UseLocalPX4": true
                            },
                            "AutoPilot": "PX4",
                            "Sensors": {
                                "Distance": {
                                    "DistanceSensor1": {
                                        "Enabled": true,
                                        "X": 0.35,
                                        "Y": 0.0,
                                        "Z": 0.0,
                                        "Roll": 0.0,
                                        "Pitch": 0.0,
                                        "Yaw": 0.0,
                                        "PublishingRate": 20.0,
                                        "Settings": {
                                            "MinDistance": 0.2,
                                            "MaxDistance": 40.0
                                        }
                                    }
                                }
                            }
                    ...    
                
                    

Method

Coming soon!

GPS

The GPS system is built upon the internal Geolocation system that is present in Unreal Engine. This allows for setting Geo-specific locations on the real world. Currently, setting the origin is not supported but that feature support is ongoing.

                    ...
                    "Agents": {
                        "Drone1": {
                            "Vehicle": "Multirotor",
                            "VehicleOptions": {
                                "UseLocalPX4": true
                            },
                            "AutoPilot": "PX4",
                            "Sensors": {
                                "GPS": {
                                    "GPS": {
                                        "Enabled": true,
                                        "Method": "Colosseum",
                                        "PublishingRate": 20.0,
                                        "Settings": {
                                            "EphTimeConstant": 0.9,
                                            "EpvTimeConstant": 0.9,
                                            "EphInitial": 25,
                                            "EpvInitial": 25,
                                            "EphFinal": 0.1,
                                            "EpvFinal": 0.1,
                                            "EphMin3d": 3,
                                            "EphMin2d": 4,
                                            "UpdateLatency": 0.2,
                                            "UpdateFrequency": 50,
                                            "StartupDelay": 1
                                        }
                                    }
                                }
                            }
                    ...    
                    

Method

Coming soon!

Tags: