Trajectory File

This page describes the format of trajectory files, used to define the position and orientations of a Speos Light Box, a LiDAR sensor, or a Camera sensor in time.

Description

Positions and orientations are expressed with the respect to a reference coordinate system, so the trajectory is relative to this coordinate system.

For instance, the same trajectory file can be used to describe a translation movement of a car as well as the LiDAR sensor placed on it.

Trajectory is described in a *.json file that contains each chronological sample:

Format Description

Example
  • "Time" in second.
  • "Origin" with "X", "Y", "Z" coordinates in mm, that corresponds to the relative position with the respect to reference coordinate system.
  • "Direction_X" with "X", "Y", "Z" coordinates that corresponds to the relative X direction with the respect to reference coordinate system.
  • "Direction_Y" with "X", "Y", "Z" coordinates that corresponds to the relative Y direction with the respect to reference coordinate system.
"Trajectory": {
        {
        "Time": 0.0,
        "Origin": {
        "X": 0.0,
        "Y": 0.0,
        "Z": 0.0
        },
        "Direction_X": {
        "X": 1.0,
        "Y": 0.0,
        "Z": 0.0
        },
        "Direction_Y": {
        "X": 0.0,
        "Y": 1.0,
        "Z": 0.0
        }
        },
        "Time": 0.033333333333,
        "Origin": {
        "X": 0.0,
        "Y": -0.0,
        "Z": 900.0
        },
        "Direction_X": {
        "X": 1.0,
        "Y": 0.0,
        "Z": 0.0
        },
        ...

Script Example

Trajectory file can be easily accessed (read or write) using dedicated scripting interfaces available in IronPython and Python.

Note: Make sure to use the 3.10.12 version of IronPython or Python language to write your scripts.

IronPython Example

import sys
import clr

sys.path += [R"C:\Program Files\ANSYS Inc\v2XX\Optical Products\SPEOS\Bin"]

clr.AddReferenceToFile("Optis.Core_net.dll")
clr.AddReferenceToFile("Optis.Data_net.dll")
    
# References to Optis.Core and Optis.Data
import Optis.Core as OptisCore
import Optis.Data as OptisData
    
try:
  firstData = OptisCore.DAxisSystemData()
  firstData.Time = 0.0
  firstData.Origin.Init(0, 0, 0)
  firstData.Direction_X.Init(1, 0, 0)
  firstData.Direction_Y.Init(0, 1, 0)
    
  lastData = OptisCore.DAxisSystemData()
  lastData.Time = 7.0
  lastData.Origin.Init(0, 0, 3000)
  lastData.Direction_X.Init(1, 0, 0)
  lastData.Direction_Y.Init(0, 1, 0)
    
  dmTrajectory = OptisCore.DAxisSystemTrajectory()
  dmTrajectory.Trajectory.Resize(2)
  dmTrajectory.Trajectory.Set(0, firstData)
  dmTrajectory.Trajectory.Set(1, lastData)
    
  strPathTrajectoryFile = OptisCore.String.From(R"C:\trajectory.json")
  pathTrajectoryFile = OptisCore.Path(strPathTrajectoryFile)
    
  cAxisSystemTrajectoryWriter = OptisData.CAxisSystemTrajectoryWriter()
  cAxisSystemTrajectoryWriter.Open(pathTrajectoryFile)
  cAxisSystemTrajectoryWriter.Write(dmTrajectory)
    
  cAxisSystemTrajectoryReader = OptisData.CAxisSystemTrajectoryReader()
  cAxisSystemTrajectoryReader.Open(pathTrajectoryFile)
  dmTrajectory = cAxisSystemTrajectoryReader.Read()
    
  cAxisSystemTrajectoryReader.Close()
    
  print "Done"

except:
  print "Exception raised"
   

Python Example

import sys

sys.path += [R" C:\Program Files\ANSYS Inc\v2XX\Optical Products\SPEOS\Bin"]
    
# References to Optis.Core and Optis.Data
import IllumineCore_pywrap as OptisCore
import IllumineData_pywrap as OptisData
    
try:
  firstData = OptisCore.DAxisSystemData()
  firstData.Time = 0.0
  firstData.Origin.Init(0, 0, 0)
  firstData.Direction_X.Init(1, 0, 0)
  firstData.Direction_Y.Init(0, 1, 0)
    
  lastData = OptisCore.DAxisSystemData()
  lastData.Time = 7.0
  lastData.Origin.Init(0, 0, 3000)
  lastData.Direction_X.Init(1, 0, 0)
  lastData.Direction_Y.Init(0, 1, 0)
    
  dmTrajectory = OptisCore.DAxisSystemTrajectory()
  dmTrajectory.Trajectory.Resize(2)
  dmTrajectory.Trajectory.Set(0, firstData)
  dmTrajectory.Trajectory.Set(1, lastData)
    
  strPathTrajectoryFile = OptisCore.String(R"C:\trajectory.json")
  pathTrajectoryFile = OptisCore.Path(strPathTrajectoryFile)
    
  cAxisSystemTrajectoryWriter = OptisData.CAxisSystemTrajectoryWriter()
  cAxisSystemTrajectoryWriter.Open(pathTrajectoryFile)
  cAxisSystemTrajectoryWriter.Write(dmTrajectory)
    
  cAxisSystemTrajectoryWriter.Close()
    
  print("Done")
    
except:
  print("Exception raised")