Warning
Warning: Unity Simulation is deprecated as of December 2023, and is no longer available.
Migrate from SensorSDK to USP Sensors
Overview
The SensorSDK and SystemGraph products have been discontinued. SensorSDK is being replaced by a new product, Unity Simulation Pro (USP) Sensors, to support sensor modeling. This migration guide will provide step-by-step instructions on transitioning from SensorSDK to USP Sensors smoothly.
Understanding the Conceptual Similarities
USP Sensors and SensorSDK share conceptual similarities as they both offer a library of prebuilt sensors and the capability to create custom sensors. Similar to SensorSDK, it is possible to develop custom sensor types in USP Sensors utilizing nodes and ports. The two packages significantly differ, however, in implementation and user workflow. So it is important to note that migrating from SensorSDK to USP Sensors will require some rewriting, depending on the extent of custom code and usage of Prefabs.
Migration Process
This page will guide you through the necessary steps and best practices for migrating from SensorSDK to USP Sensors. Detailed documentation on USP Sensors can be found here.
Feature Comparison
Please refer to the table below for a comparison between the features offered by the two products. USP Sensors are planned to be at feature parity with SensorSDK, with a few exceptions. If you require a feature labeled as "Not planned" or not mentioned in the list, please contact us for further assistance.
Comparison of Functionality with USP Sensors
Category | SensorSDK Feature | Equivalent USP Feature (all dates in 2023) |
---|---|---|
Camera | RGB Camera | CameraSensor Prefab |
Red Camera | CameraSensor: Grayscale Filtering | |
Brown-Conrady Camera | CameraSensor: Distortion Parameters | |
Segmentation Camera | Not planned | |
Fisheye Camera | FisheyeCamera Prefab | |
Parallel Stereo Camera | StereoDepthSensor Prefab | |
ToF Camera | ToF Sensor | |
LiDARs | Camera Based Lidar | Raster Lidar, Physics Lidar |
Raytraced Lidar (all other types) | RayTracedLidarSensor Prefab | |
Laser Configuration | Laser Configuration | |
Scan Pattern/FoV | Scan Patterns | |
Data Export/Conversion | Save point clouds to disk | |
Predefined Lidar Brands: - Ouster - Velodyne - YDLidar |
Planned early November | |
Materials with Light Spectrum Support | Material Spectroscopy | |
Motion Correction/Trajectory Component | Correct Point Cloud Motion | |
SystemGraph Nodes | Segmentation/Perception package integration | Not planned |
Visualization | DefaultVisualizationSuite | |
Point Cloud to Depth | Planned for future release | |
White Balance | Use post processing on a volume | |
ACESToneMapping | Use post processing on a volume | |
Noise | Within CameraSensor properties in inspector, change Camera Noise | |
Red, Green, Blue, Luminance Filter | CameraSensor: Grayscale Filtering | |
Azimuth Correction/ Pixel Shift | Not planned | |
Synchronous Nodes/Scheduler | Scheduler, SynchronizedSensorNode |
Benefits of Migrating
We understand that migrating to a new product requires effort, but we assure you it will be worth it. By migrating to USP Sensors, you will gain access to enhanced functionality, including support for Universal Render Pipeline (URP), Linux compatibility, inertial sensors, and seamless integration with other packages within USP such as ROS Integrations, Vehicle Controllers, URDF Importer, Distributed Rendering, Linux Headless Simulation, and more.
We appreciate your interest and commitment to this migration process. Should you have any questions or require further assistance, please do not hesitate to contact our support team. We will do our best to ensure a smooth transition and provide you with the best possible experience.
Thank you for choosing Unity Simulation Pro. We look forward to working with you!
Technical Details
Supported Operating Systems and Hardware
All USP sensors run on Windows, macOS and Linux, except the USP Raytraced Lidar (which maps to any Lidar in SensorSDK that is not camera-based), which only runs on Windows and Linux. Additional requirements are as follows:
OS | OS Version | GPU |
---|---|---|
Windows | 7, 10, 11 | DirectX 10, 11 or 12-capable |
macOS | Mojave 10.14+(Intel) Big Sur 11.0 (Apple silicon) |
Metal-capable Intel or AMD |
Linux | Ubuntu 18.04 or 20.04 | Vulkan-capable,with the following Vulkan extensions supported: - VK_EXT_descriptor_indexing - VK_KHR_acceleration_structure - VK_KHR_ray_tracing_pipeline - VK_KHR_buffer_device_address - VK_KHR_deferred_host_operations - VK_KHR_pipeline_library |
Making a Sensor
Read the documentation for Setting Up a Sensor.
Using Nodes and Ports
In USP Sensors, the concepts of nodes and ports are similar to those in SystemGraph, although they are not represented graphically. Here's how you can work with nodes and ports in USP Sensors.
Nodes
To make a node, create a class that extends the Sensor class, then add it to a GameObject in the Scene. Then, add Ports as needed; see below.
Instead of extending the Sensor class, you can also extend one of the following classes, which provide specialized functionality:
SynchronizedSensorNode: Allows sensors to subscribe to the Scheduler based on their UpdateRate
PublisherNode: Publishes data from a Sensor to a topic
SingleImageProcessingNode: Provides common functionality for running a compute shader on a single input texture and creating a single output texture
ImageProcessingNode: Provides the base functionality for loading and initializing a compute shader for processing images
Ports
Create a port with an instance of SensorPort<T>
. This is used for both input and output ports. Access the data in a port with m_Data
, and set data using SetData()
. For Image Messages, use and instance of ImageMessagePort
. This provides support for reading of a RenderTexture
, and will convert to an ImageMsg
(for use with ROS).
See an example of how Nodes and Ports work together here.
Example Migration
Suppose you have the following sensor made with SystemGraph (broken into two parts for readability):
To convert this to USP Sensors, let's break down the components step by step:
RGB Camera:
- In USP, the equivalent of an RGB camera is the CameraSensor Prefab.To incorporate it, simply add the CameraSensor Prefab to your scene.
Dummy Node:
To create the Dummy Node in USP, follow the approach outlined in the "Using Nodes and Ports" section.
Create a C# script that represents the Dummy Node and attach it to a game object in the scene.
Tone Mapping:
In USP, the equivalent of Tone Mapping is achieved through ACES Post Processing on a volume.
To apply tone mapping to the scene, follow these steps:
Add a Volume component to a game object in the scene.
In the inspector, navigate to "Add Override" > "Post-processing" and select "Tonemapping".
On the Tonemapping override, toggle on “Mode” and select ACES
Contact Us
For feedback on our documentation, questions or feature requests, reach out to us at unitysimulationpro@unity3d.com
FAQs
Q: Why are we discontinuing SensorSDK?
A: There is a lot of overlap between the functionality of SensorSDK and USP. USP was chosen for the following reasons:
SensorSDK is only supported on Windows, where USP is supported on Linux, Windows, and macOS.
USP is built to work with ROS connectors and supports creating custom connectors. Read more here.
USP Sensors works with Distributed Rendering. This is another part of USP which allows you to scale your sensor computations across many GPUs/machines. Read more here.
Q: How long can I continue to use the discontinued packages, SensorSDK and SystemGraph?
A: Once your UIC license expires, the package will fail the license check. The license check is done when downloading the package and every time the project manifest is resolved (i.e. when opening the project or when something has changed in the package configuration). A project which has already been built to binary with these packages will continue to function regardless.
Q: Is there an equivalent for SystemGraph?
A: There are no plans to release a visual editor equivalent to SystemGraph. However, the user can use the concept of Nodes and Ports for USP. See “Using Nodes and Ports” above.