docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class CameraSensingComponent

    This class implement the sensing part of the photosensor.

    This implementation relies on a Unity camera to measure depth and intensity. Thus, all incoming rays have to converge to a single point, the camera effective pinhole. Consequences:

    • Origin of individual beams (e.g. for multi-beam lidars) will be ignored and assumed to be at the camera pinhole.
    • Photosensor translation cannot be interpolated; if the lidar is moving in the scene, all samples taken during a Unity update will use the final lidar position, introducing translational error.
    • Lidars usually have constant angular difference between consecutive beams, while cameras have constant translational difference between consecutive pixels. Thus, some approximation must be made, leading to slight depth inaccuracies compared to a ray tracing implementation.

    For the last point, use the Max Approx Error field to configure the maximum approximation angular error, that is, the maximum angle between the desired lidar beam and the closest camera ray going through a pixel center. This is used to compute the texture size used by the camera.

    The code also uses a few assumptions:

    • Beams in beamPoses are roughly oriented along the positive Z axis.
    • Photosensor angular speed is constant, which avoid having to look at all the stamps.
    • Looking at the photosensor pose at the previous frame and at the current frame is enough to compute a bounding box.
    • Photosensor turns less than 120 degrees between consecutive updates, otherwise some lidar points may be missing.

    Warning: this will not work for lidar using beam patterns (e.g. MEMS) instead of physically moving the photosensor, since it violates the first assumption.

    Inheritance
    object
    Object
    Component
    Behaviour
    MonoBehaviour
    PhotosensorSensingComponent
    CameraSensingComponent
    Inherited Members
    PhotosensorSensingComponent._sensorData
    PhotosensorSensingComponent.OnSamplingCompleted
    PhotosensorSensingComponent._photosensorTrajectoryComponent
    PhotosensorSensingComponent._referenceTrajectoryComponent
    PhotosensorSensingComponent._photosensorTrajectoryList
    PhotosensorSensingComponent._referenceTrajectoryList
    PhotosensorSensingComponent._photosensorTrajectory
    PhotosensorSensingComponent._referenceTrajectory
    PhotosensorSensingComponent._photosensorTrajectoryCount
    PhotosensorSensingComponent._referenceTrajectoryCount
    PhotosensorSensingComponent.HasBeamListChanged(ExchangeBuffer<OrientedPoint>)
    PhotosensorSensingComponent.UpdateBeamListModificationUid(ExchangeBuffer<OrientedPoint>)
    PhotosensorSensingComponent.AssertBeamListIsValid(ExchangeBuffer<OrientedPoint>)
    PhotosensorSensingComponent.StartSampling()
    PhotosensorSensingComponent.EndSampling(CustomPassContext)
    MonoBehaviour.IsInvoking()
    MonoBehaviour.CancelInvoke()
    MonoBehaviour.Invoke(string, float)
    MonoBehaviour.InvokeRepeating(string, float, float)
    MonoBehaviour.CancelInvoke(string)
    MonoBehaviour.IsInvoking(string)
    MonoBehaviour.StartCoroutine(string)
    MonoBehaviour.StartCoroutine(string, object)
    MonoBehaviour.StartCoroutine(IEnumerator)
    MonoBehaviour.StartCoroutine_Auto(IEnumerator)
    MonoBehaviour.StopCoroutine(IEnumerator)
    MonoBehaviour.StopCoroutine(Coroutine)
    MonoBehaviour.StopCoroutine(string)
    MonoBehaviour.StopAllCoroutines()
    MonoBehaviour.print(object)
    MonoBehaviour.useGUILayout
    MonoBehaviour.runInEditMode
    Behaviour.enabled
    Behaviour.isActiveAndEnabled
    Component.GetComponent(Type)
    Component.GetComponent<T>()
    Component.TryGetComponent(Type, out Component)
    Component.TryGetComponent<T>(out T)
    Component.GetComponent(string)
    Component.GetComponentInChildren(Type, bool)
    Component.GetComponentInChildren(Type)
    Component.GetComponentInChildren<T>(bool)
    Component.GetComponentInChildren<T>()
    Component.GetComponentsInChildren(Type, bool)
    Component.GetComponentsInChildren(Type)
    Component.GetComponentsInChildren<T>(bool)
    Component.GetComponentsInChildren<T>(bool, List<T>)
    Component.GetComponentsInChildren<T>()
    Component.GetComponentsInChildren<T>(List<T>)
    Component.GetComponentInParent(Type, bool)
    Component.GetComponentInParent(Type)
    Component.GetComponentInParent<T>(bool)
    Component.GetComponentInParent<T>()
    Component.GetComponentsInParent(Type, bool)
    Component.GetComponentsInParent(Type)
    Component.GetComponentsInParent<T>(bool)
    Component.GetComponentsInParent<T>(bool, List<T>)
    Component.GetComponentsInParent<T>()
    Component.GetComponents(Type)
    Component.GetComponents(Type, List<Component>)
    Component.GetComponents<T>(List<T>)
    Component.GetComponents<T>()
    Component.CompareTag(string)
    Component.SendMessageUpwards(string, object, SendMessageOptions)
    Component.SendMessageUpwards(string, object)
    Component.SendMessageUpwards(string)
    Component.SendMessageUpwards(string, SendMessageOptions)
    Component.SendMessage(string, object)
    Component.SendMessage(string)
    Component.SendMessage(string, object, SendMessageOptions)
    Component.SendMessage(string, SendMessageOptions)
    Component.BroadcastMessage(string, object, SendMessageOptions)
    Component.BroadcastMessage(string, object)
    Component.BroadcastMessage(string)
    Component.BroadcastMessage(string, SendMessageOptions)
    Component.transform
    Component.gameObject
    Component.tag
    Object.GetInstanceID()
    Object.GetHashCode()
    Object.Equals(object)
    Object.Instantiate(Object, Vector3, Quaternion)
    Object.Instantiate(Object, Vector3, Quaternion, Transform)
    Object.Instantiate(Object)
    Object.Instantiate(Object, Transform)
    Object.Instantiate(Object, Transform, bool)
    Object.Instantiate<T>(T)
    Object.Instantiate<T>(T, Vector3, Quaternion)
    Object.Instantiate<T>(T, Vector3, Quaternion, Transform)
    Object.Instantiate<T>(T, Transform)
    Object.Instantiate<T>(T, Transform, bool)
    Object.Destroy(Object, float)
    Object.Destroy(Object)
    Object.DestroyImmediate(Object, bool)
    Object.DestroyImmediate(Object)
    Object.FindObjectsOfType(Type)
    Object.FindObjectsOfType(Type, bool)
    Object.DontDestroyOnLoad(Object)
    Object.DestroyObject(Object, float)
    Object.DestroyObject(Object)
    Object.FindSceneObjectsOfType(Type)
    Object.FindObjectsOfTypeIncludingAssets(Type)
    Object.FindObjectsOfType<T>()
    Object.FindObjectsOfType<T>(bool)
    Object.FindObjectOfType<T>()
    Object.FindObjectOfType<T>(bool)
    Object.FindObjectsOfTypeAll(Type)
    Object.FindObjectOfType(Type)
    Object.FindObjectOfType(Type, bool)
    Object.ToString()
    Object.name
    Object.hideFlags
    object.Equals(object, object)
    object.ReferenceEquals(object, object)
    object.GetType()
    object.MemberwiseClone()
    Namespace: Mechatronics.SensorSDK
    Assembly: solution.dll
    Syntax
    [Serializable]
    public class CameraSensingComponent : PhotosensorSensingComponent

    Fields

    Name Description
    maxApproxErrorDeg

    Maximum approximation angular error, i.e. maximum angle between the desired lidar beam and the closest camera ray going through a pixel center. This is used to compute the texture size used by the camera.

    Methods

    Name Description
    Activate(PhotosensorData, GameObject, Action<CustomPassContext>)

    Initializes the sensing component.

    Deactivate()

    Releases the sampler and other GPU resources.

    InitializeComputeShader(string, string)

    Load and find the kernel in a compute buffer.

    In This Article
    Back to top
    Copyright © 2024 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)