A demo application of the GelSight Mobile Async API v3.8.78.0.
Describe the GelSight Mobile (GSM) Async API for external software developers.
The API is developed for two main use cases:
- Automation
- Extension of manual use of GSM
Enable the integration of GSM (GelSight Mobile) into a fully automated workflow where GSM and a GelSight sensor are controlled components in a robotic system. The intended scenario is in-line inspection in a manufacturing setup. Possible other components in the system could be a robot holding the GelSight sensor and maybe another robot that controls a conveyor belt where manufactured parts are inspected and then pushed forward.
From a system perspective, GSM and the sensor are considered components, and not the entity in charge of the manufacturing operation. The Async API is designed with that mindset.
Given that most operations in GSM are orders of magnitude longer than control loop operations like moving a robot and monitoring the move, the chosen service provider methodology is that of an event-based system, where the controlling entity subscribes to relevant events and subsequently orders GSM to start working on completing different tasks, where the success/failure is reported back as events. This methodology has the added benefit of allowing human interaction with the workflow, e.g. allowing a human to press the scan button and then use the event raised at completion of a scan to trigger the next operations managed by the controlling entity.
The GSM Async API will raise events to an external app each time an analysis method is completed and saved by GSM. This will be a rich event that contains all outputs and inputs for this analysis method. Reporting this data to an external app enables the application developer to develop custom logic that incorporates the results of multiple scans. It also allows the program logic to take input from other systems such as an ERP/SAP system or other customized workflow software used by the customer.
Some customers may have a desire to automatically forward results generated by GSM into their existing data systems. Prior to the API, this was only possible by manually transferring results from GSM into the customers own system. By writing a simple external app that integrates the GelSight Async DLL, the app will receive events with the results of any analysis. The developer can then easily decide which section of the outputs will be transferred to their own data system, either automatically or via customized UI.
Some customers need to trigger the scan based on their own workflow but perform the analysis inside GSM. This could be using a hardware foot pedal to trigger a scan or maybe some other software system that needs to trigger a scan. Using the API, a single line of code can be written to trigger a scan. It is even possible to instruct GSM what to name the scan and where to store it, e.g. on a shared network drive.
The GelSight Async API is delivered as a .NET DLL. The DLL can be linked into multiple programming languages as long as .NET Standard 2.0 or later is installed on the computer. The HelloWorld sample app includes WPF UI. For that to show .NET Framework 4.7.2 or later is needed.
The operating system supported is Microsoft Windows 11. Microsoft Windows 10 is supported until October 14, 2025.
The API requires a licensed GelSight Mobile to be installed.
The API communicates with GelSight Mobile via a TCP socket connection. This means the application developer has the choice of running the custom app with the DLL on the same computer as GSM or on a networked computer.
To enable API developers a quick and easy start, an open-source Visual Studio sample project has been developed with a “Hello World” application. The Hello World application is only about 300 lines of code that demonstrate all key functions of the API.
The sample is written in C#, but using simple structures so that non-C# developers can easily test the behavior and follow the logic.
- Install Visual Studio 2022 Community and select “.NET desktop development” which enable WPF desktop apps.
- Install and license GelSight Mobile 3.8 or later.
- Enable the API Server in GSM Configure→System→API.
- Download the GelSight Async API from the GelSight sdkdemo repo on GitHub.
- Load and run the Visual studio project “GelSight.Api.HelloWorld.csproj”.
The following actions can be requested by the application developer via the DLL. Details of the parameters and data structures are documented in the sample code.
NOTE: Value types with a ‘?’ are nullable in C#.
Name | Properties | Description |
---|---|---|
RequestScan |
|
In GSM, the scan folder is created based on the following properties managed via the GSM UI.
The parameters of this method are,
If either the ScanPath or ScanPrefixName string is an empty string or null, then the scan will be saved using the current UI settings described above. |
RequestAnalysis |
|
The ScanFolder parameter is the path to the scan data to be used by the analysis. The name of the analysis to run on the scan, is defined by the AnalysisName parameter. If the analysis name is incorrect or refers to an unlicensed analysis type, then the ErrorMessageReceived event will be raised by the ConnectionManager. This setup will support variants as well, so a GSM admin can create a variant of a baseline analysis method, modify the parameters, e.g. Pass/Fail to their needs and then make it available to the API. The client simply needs to pass the name of the variant analysis in the AnalysisName parameter. After running the analysis, the result is automatically saved and the ConnectionManager will raise the AnalysisSaved event. Critical note If the scan is already displayed in the “Analyze” view in GSM, any changes made by the user will be saved without notifying the user. |
RequestLiveView |
|
This request will only change the live view status if a device is currently connected, and it is possible to navigate to the Capture view. Setting the Active parameter to false will turn the camera off to save power. Setting the Active parameter to true will navigate GSM to the Capture view and turn the camera on. Setting the Active parameter to null will have the same effect as setting it to true. NOTE: GSM can never guarantee a change to live view as multiple conditions could prohibit this from taking place, for example:
|
TryDeleteScan |
|
GSM will attempt to send the folder passed in by the ScanFolder parameter to the Windows Recycle bin. The ScanDeleted event will then be raised with the result. |
RequestHeightmap |
|
GSM refers to the 3D model of the surface as a “heightmap”. On disk this data is saved in a tmd file, which is a binary file containing the Z height value of each data point on the surface. GSM will raise the HeightmapStarted and the HeightmapCompleted events to notify the client the status of the height map creation. Setting the Align parameter to true will run the ‘Auto-Align Images’ algorithm when creating the heightmap. Setting the Align parameter to false will not run the ‘Auto-Align Images’ algorithm when creating the heightmap. Setting the Detrend parameter to true will run the ‘Form Removal’ algorithm when creating the heightmap. Setting the Detrend parameter to false will not run the ‘Form Removal’ algorithm when creating the heightmap. Setting the Replica parameter to true will run the ‘Replica Transform’ algorithm when creating the heightmap. Setting the Replica parameter to false will not run the ‘Replica Transform’ algorithm when creating the heightmap. Setting the Replica, Detrend, or Replica parameter to null will honor the GSM setting for this option as shown in the image below. |
The following properties are promised to be in sync with the GelSight Mobile software and the hardware.
NOTE: Value types with a ‘?’ are nullable in C#.
Name | Properties / Type | Description |
---|---|---|
Status |
|
Readonly. The nullable properties (the ones with '?') will be null prior to a connection being established. Firmware: only present for S2 sensors. ImageWidth/ImageHeight: pixels |
GelInfo |
|
Readonly. Will contain null values until connected and data received from GSM |
IsConnected | [bool] | Readonly |
Port | [ushort] | Read: anytime Write: prior to attempting a connection |
Host | [string] | Read: anytime Write: prior to attempting a connection |
Password | [string] | Read: anytime Write: prior to attempting a connection |
The Client DLL’s ConnectionManager will raise the following events when state changes in GSM. For more information, please refer to the Hello World sample project on GitHub.
Name | Properties | Description |
---|---|---|
ConnectionStateChanged |
|
This event is raised when the GSM connection state has changed. The possible connection states are:
|
StatusChanged |
|
This event is raised when,
|
GelChanged |
|
The event is raised when a gel is changed. Notice that only the Serial property is guaranteed to have a valid string. |
ScanCompleted |
|
The event is raised when a scan is completed and all files have been saved to the scan folder. The ScanFolder parameter is the folder where GSM has saved all files related to the scan. The ScanMetaData parameter is the content of the yaml file formatted as a JSON string. Refer to the ScanCompleted Event JSON section later in this document for more information. |
HeightmapStarted |
|
The event is raised when 3D generation of scan data is started. |
HeightmapCompleted |
|
The event is raised when 3D generation of scan data is completed and has been saved to the file system. |
AnalysisSaved |
|
The event is raised when an analysis of a scan has been saved to the file system. The ScanFolder parameter is the folder where GSM saved all files related to the scan. The Success parameter indicates if the requested analysis was successful. The Results parameter is the contents of the scancontext.yaml file formatted as a JSON string. It contains the user created shapes as well as user inputs and generated outputs of all analysis methods run on this scan. The API caller will be able to retrieve PASS/FAIL information directly from the Results JSON string. The ErrorMsg parameter contains a string with information regarding why an analysis failed to run. The RequestId is the id of the client message used to initiate the analysis. It may be 0 if the analysis was not initiated remotely. |
ScanDeleted |
|
This event is raised after the TryDeleteScan request is made or if the user deletes a scan in GSM. The Success parameter represents if the deletion operation succeeded or failed. NOTE: If a scan is deleted outside of GSM, such as in Windows Explorer for example, the API will not raise this event. |
ErrorMessageReceived |
|
This event is raised if an error occurs in GSM while,
|
The ScanMetaData parameter in the ScanCompleted event contains JSON formatted data from the scan.yaml file located in the newly captured scan’s folder on disk. It is recommended to use the free C# Newtonsoft Json.NET library to help parse this information, but the API developer is free to use any method that they choose.
The JSON string does contain some replication of data.
Header | Example | Comment |
---|---|---|
version | 2.0 | Version of the json structure |
guid | dd773e2f-e0f7-4dbc-94c9-350b7de4e28c | Unique Id |
createdon | 2023-07-19 10:42:21 | Date/time of scan capture |
mmperpixel | 0.0069981396828 | Resolution of heightmap and images [mm per pixel] |
sdkversion | 3.8.0 | Version of internal GSM math library used in analysis methods |
crop | (0, 0, 0, 0) | If image alignment is enabled, the captured scan will be cropped to a smaller size that fits a rectangle. The unit for crop: [pixel] |
scanwidth | Width of scan [pixel] | |
scanheight | Height of scan [pixels] | |
images[] |
|
Array with list of filenames for 2D images captured for this scan. Most sensors have 6 images. |
activeheightmap | scan05.tmd | Filename for the heightmap data file. The heightmap is an internally used 3D file. It is structured similarly to the 2D image files, but the pixel location does not represent an intensity as in the 2D files, instead the pixel value represents the Z height [mm] at the given XY location. |
activenormalmap | scan05_nrm.png | Filename for normal map. The normal map is an internally used file. It is structured the same way as the 2D image files, but the pixel location does not represent a brightness level like in the 2D files, instead the pixel value represents the surface normal at the given XY location |
calib | C:\Users\Public\Documents\GelSight\Scans\scan05\Calib-2A3F-2JTC_20230606_1413.yaml | Path and filename for calibration data |
aligned | false | Alignment status (bool) |
cameratostage | Obsolete | |
calibration.date | 2023-06-06 14:14:12 | Date of calibration |
calibration.username | TABLET-BTIUPLFS\GelSight | Windows username of the account used at time of calibration |
camera.cameraid | CIMAF2239054 | Camera (device) serial number |
camera.cameratype | Ximea | Camera vendor |
camera.gelid | 2A3F-2JTC | Gel serial number |
camera.lensfocuspos | -201.95 | Focus setting NOTE: only present on sensors that support autofocus |
camera.shutter | 0.689 | Shutterspeed [ms] |
device.deviceconfigid | 3 | Unique id of the device model |
device.devicefirmware | 412 | Firmware of the device NOTE: not present on all sensor models |
device.devicemodel | Series 2 | Text description of the sensor class |
device.devicetemp | 50.4 | Camera temperature [celcius]NOTE: not present on all sensor models |
device.devicetype | 0.5X 5 MP | Text description of the sensor model (one sensor model can have multiple device types) |
device.serialnumber | CIMAF2239054 | Camera (device) serial number |
metadata.appname | GelSight.Mobile | Sensor software interface text description |
metadata.appversion | 3.4.115.0 | GSM version used to capture the scan |
metadata.gelid | 2A3F-2JTC | Gel serial number |
metadata.gelusecount | 39 | The number of scans taken with this gel |
metadata.replica | false | Is replica enabled? [bool] |
metadata.sdkversion | 3.4.115.0 | GSM version used to capture the scan |
metadata.username | TABLET-BTIUPLFS\GelSight | Windows username of the account used at time of calibration |
metadata.detrended | false | Is form removal (detrending) enabled? [bool] |
metadata.detrendorder | 2 | The order of detrending (only valid if ‘detrended’ is ‘true’) |
The Results parameter in the AnalysisSaved event contains JSON formatted data from the scancontext.yaml file located in the subfolder “analysis” inside the captured scan’s folder on disk. It is recommended to use the free C# Newtonsoft Json.NET library to help parse this information, but the API developer is free to use any method that they choose.
The JSON string contains two arrays.
The “shapes” contain an entry for each user-created shape drawn on the scan.
The “routines” contain an entry for each analysis method that the user has saved for this scan.
Shapes are defined in a coordinate system that has (0,0) located in the TopLeft corner of a scan.
Each shape has the following shared properties.
Header | Example | Comment |
---|---|---|
id | 102750541 | Unique id referring to this instance of shape [int] |
Header | Example | Comment |
---|---|---|
type | Rectangle | Internal string reference to the type of shape [string] |
name | Rectangle | User facing name of the shape [string] |
x | 1216.79012346 | X position of TopLeft corner [pixel] |
y | 313.32345679 | Yposition of TopLeft corner [pixel] |
w | 562.765432099 | Width of rectangle [pixel] |
h | 1219.83209877 | Height of rectangle [pixel] |
rotation | 0 | Rotation [degree] |
Header | Example | Comment |
---|---|---|
type | Ruler | Internal string reference to the type of shape [string] |
name | Ruler | User facing name of the shape [string] |
x1 | 1216.79012346 | X position of first point of ruler [pixel] |
y1 | 313.32345679 | Y position of first point ofruler [pixel] |
x2 | 562.765432099 | X position of second point ofruler [pixel] |
y2 | 1219.83209877 | Y position of second point ofruler [pixel] |
Header | Example | Comment |
---|---|---|
type | Line | Internal string reference to the type of shape [string] |
name | Line | User facing name of the shape [string] |
x1 | 1216.79012346 | X position of first point of line [pixel] |
y1 | 313.32345679 | Y position of first point of line [pixel] |
x2 | 562.765432099 | X position of second point of line [pixel] |
y2 | 1219.83209877 | Y position of second point of line [pixel] |
Header | Example | Comment |
---|---|---|
type | Circle | Internal string reference to the type of shape [string] |
name | Circle | User facing name of the shape [string] |
x | 1216.79012346 | X position of center [pixel] |
y | 313.32345679 | Y position of center [pixel] |
r | 562.765432099 | radius [pixel] |
Header | Example | Comment |
---|---|---|
type | PolyLine | Internal string reference to the type of shape [string] |
name | PolyLine | User facing name of the shape [string] |
points[] | [(66.2933631391, 1300.69689919), (2348.81804603, 1367.46178936), (62.1205575031, 2001.72824603)] | Array of X/Y position of each point in the PolyLine [pixel] |
closed | true | true: polygonfalse: polyline |
Some routines will allow the user to draw one or more shapes and use them as input to the routine. If so, those inputs are referred to as shapeid which is referencing the array of “shapes”. One example is offset which requires a user drawn line as the shape input.
Some of the routines create a PNG output file that is rendered on top of the scan for visualization of the results. The filename is an output parameter from the routine, but to avoid overlap with other routines, each routine will get its own subfolder with the following naming convention: <scan_folder>/analysis/io_<routine_id>. Example is shown below for a scan named “NNK”.
Header | Example | Comment |
---|---|---|
type | FastenerABS1781 | Internal string reference to the type of routine [string] |
id | 1458553698 | Unique id referring to this instance of routine |
name | ABS 1781 | User facing name of the routine [string] |
annotationids | Reference to the shapes used in the routine. These may be local rulers. | |
diameter | 8.75 | Input: diameter [mm] |
flushoffset | 0.5 | Input: Flushness offset [mm] |
flushminlim | -0.08 | Input: Flushness Min Limit [mm] |
flushmaxlim | 0.1 | Input: Flushness Max Limit [mm] |
headdishmin | 0.158 | Output: Head Dishing Min [mm] |
perpendicularity | 1.97412801048 | Output: Perpendicularity [degree] |
flushcircle | (1811.29474823, 753.969925059, 524.440141531) | Output: location of circle (X,Y,Radius) [pixel] |
flushminpt | (1291, 826) | Output: Location of min point (X,Y) [pixel]. Rendered in UI as blue dot on scan overlay |
flushmaxpt | (1291, 826) | Output: Location of max point (X,Y) [pixel]. Rendered in UI as red dot on scan overlay |
image | image.png | Output: Filename for scan overlay for UI rendering |
passfail | false | Output: was routine able to run, i.e. was enough inputs provided to allow a run [bool] |
meta_passedanalysis | false | Output: result of pass/fail settings made by user [bool] |
meta_failurereason | Pass value is False . Required value is True |
Output: text description of pass/fail result [string] |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Header | Example | Comment |
---|---|---|
type | FastenerABS2322 | Internal string reference to the type of routine [string] |
id | 176253893 | Unique id referring to this instance of routine |
name | ABS 2322 | User facing name of the routine [string] |
annotationids[] | Reference to the shapes used in the routine. These may be local rulers. | |
diameter | 6.76 | Input: diameter [mm] |
corediameter | 4.7 | Input: core diameter [mm] |
coreminlim | -0.1 | Input: Break-Off Min Limit [mm] |
coremaxlim | 0.1 | Input: Break-Off Max Limit [mm] |
flushoffset | 0.5 | Input: Flushness offset [mm] |
flushminlim | -0.08 | Input: Flushness Min Limit [mm] |
flushmaxlim | 0.1 | Input: Flushness Max Limit [mm] |
flushmin | -0.0752567052841 | Output: Flushness Min [mm] |
flushmax | 0.0198004096746 | Output: Flushness Max [mm] |
coremin | -0.654451012611 | Output: Break-off Min [mm] |
coremax | 0.0789419040084 | Output: Break-off Max [mm] |
perpendicularity | 0.852393517214 | Output: Perpendicularity [degree] |
flushminpt | (1663, 1067) | Output: Location of flush min point (X,Y) [pixel]. Rendered in UI as blue dot on scan overlay |
flushmaxpt | (944, 511) | Output: Location of flush max point (X,Y) [pixel]. Rendered in UI as red dot on scan overlay |
coreminpt | (1403, 682) | Output: Location of core min point (X,Y) [pixel]. Rendered in UI as blue dot on scan overlay |
coremaxpt | (1131, 534) | Output: Location of core max point (X,Y) [pixel]. Rendered in UI as red dot on scan overlay |
image | image.png | Output: Filename for scan overlay for UI rendering |
meta_passedanalysis | true | Output: result of pass/fail settings made by user [bool] |
meta_failurereason | Output: text description of pass/fail result [string] | |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Header | Example | Comment |
---|---|---|
type | DefectDetection | Internal string reference to the type of routine [string] |
id | 1027624229 | Unique id referring to this instance of routine |
name | Defect Detection | User facing name of the routine [string] |
annotationids[] | Reference to the shapes used in the routine. These may be local rulers. | |
scratchtype36 | 2 | Input: Scratch type [enum]1=narrow2=wide3=large |
autothreshold | true | Input: automatic set threshold [bool] (hidden in UI) |
depththreshold | 0.005 | Input: depth threshold [mm] (hidden in UI) |
levelwidth | 0.35 | Input: levelling width [mm] (hidden in UI) |
leveldiscardwidth | 0.2 | Input: Level Discard Width [mm] |
levelregions | '[(0, 0.35087546203, None), (1.26590362772, 1.60989917873, None)]' | Input: Array of leveling regions. Each entry has the following properties- Start (referring to position on profile line) [mm]- End (referring to position on profile line) [mm]- Type (None/Max/Min), will always be None for level regions |
primaryshapeid | 0 | Input: Reference to the shapeID used as input. 0=no shape input |
debug | false | Internal use |
length | 3.37853770121 mm | Output: Length of defect [string] |
width | 1.27010051581 mm | Output: width of defect [string] |
area | 1.10270439261 mm3 | Output: area of defect [string] |
depth | 0.23071826702 mm | Output: depth of defect [string] |
point | (1687.88679927, 768.239506643) | Output: Location of deepest point (x,y) [pixel] |
image | image.png | Output: Filename for scan overlay for UI rendering |
profile | '[(0, -0.0037239978619), …… 0.0182266798741)]' | Output: Array of points in the profile. Each point in the profile is organized as (X,Y) [mm] |
minpt | (0.67423127998, -0.23071826702) | Output: The location and value of the lowest point in the profile (X,Y) [mm] |
plot | '[(0.0206397330606, …… -0.109643088634)]' | Output: Array of points in the ‘plot’ profile. Each point in the profile is organized as (X,Y) [mm] |
profilelines | '[(1300.97348203, …. 873.307388357)]' | Output: Array of 5 lines to be rendered on the scan overlay. They define the area of the defect and the profile line. Each line is defined by (x, y, width, length) [pixel] |
meta_passedanalysis | true | Output: result of pass/fail settings made by user [bool] |
meta_failurereason | Output: text description of pass/fail result [string] | |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Header | Example | Comment |
---|---|---|
type | Fastener | Internal string reference to the type of routine [string] |
id | 1141094187 | Unique id referring to this instance of routine |
name | Fastener | User facing name of the routine [string] |
annotationids[] | Reference to the shapes used in the routine. These may be local rulers. | |
diameter | 8 | Input: diameter [mm] |
flushoffset | 0.5 | Input: Flushness offset [mm] |
flushminlim | -0.08 | Input: Flushness Min Limit [mm] |
flushmaxlim | 0.1 | Input: Flushness Max Limit [mm] |
refsurfdist | 1 | Input: [mm] Range: 0 to 5.0, Default: 1.0 |
refsurfwidth | 3 | Input: [mm] Range: 0.5 to 5.0, Default: 3.0 |
flushmin | -0.146005272865 | Output: Flushness Min [mm] |
flushmax | 0.161588162184 | Output: Flushness Max [mm] |
headdishmin | -0.111065380275 | Output: Head Dishing Min [mm] |
perpendicularity | 2.51877608606 | Output: Perpendicularity [degree] |
flushcircle | (1794.50996421, 751.757145099, 504.849922529) | Output: Location of flush circle (CenterX,CenterY, Radius) [pixel]. Rendered in UI |
flushminpt | (1299, 853) | Output: Location of flush min point (X,Y) [pixel]. Rendered in UI as blue dot on scan overlay |
flushmaxpt | (2253, 540) | Output: Location of flush max point (X,Y) [pixel]. Rendered in UI as red dot on scan overlay |
image | image.png | Output: Filename for scan overlay for UI rendering |
passfail | false | Output: was routine able to run, i.e. was enough inputs provided to allow a run [bool] |
meta_passedanalysis | false | Output: result of pass/fail settings made by user [bool] |
meta_failurereason | Pass value is False . Required value is True . |
Output: text description of pass/fail result [string] |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Header | Example | Comment |
---|---|---|
type | FilletRelief | Internal string reference to the type of routine [string] |
id | 82555208 | Unique id referring to this instance of routine |
name | Fillet Relief | User facing name of the routine [string] |
annotationids | '[]' | Reference to the shapes used in the routine. These may be local rulers. |
diameter | 5 | Input: diameter [mm] |
mindeburr | 0.2 | Input: Min Deburr Width [mm] |
minfillet | 0.6 | Input: Min Fillet Relief [mm] |
minwidth | -0.46407 | Output: Min Width [mm] |
maxwidth | -0.31861 | Output: Max Width [mm] |
minheight | -0.30142 | Output: Min Height [mm] |
maxheight | -0.01676 | Output: MaxHeight [mm] |
holestate | Fillet Relief | Output: Hole State [string] |
innercircle | (1437.23219534, 810.470397303, 369.359957758) | Output: Location of innercircle (CenterX,CenterY, Radius) [pixel]. Rendered in UI |
minline | (1345.01283861, 447.818991122, 1361.7876679, 513.152637655) | Output: Location of min line (X1, Y1, X2, Y2) [pixel]. Rendered in UI |
maxline | (1391.81149212, 1176.64030064, 1397.61578418, 1130.69459793) | Output: Location of max line (X1, Y1, X2, Y2) [pixel]. Rendered in UI |
minpt | (1380.59772401, 508.94809197) | Output: Location of min point (X, Y) [pixel]. Rendered in UI |
maxpt | (1126.70609124, 849.659906008) | Output: Location of max point (X, Y) [pixel]. Rendered in UI |
image | image.png | Output: Filename for scan overlay for UI rendering |
meta_passedanalysis | True | Output: result of pass/fail settings made by user [bool] |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Header | Example | Comment |
---|---|---|
type | HoleByEdge | Internal string reference to the type of routine [string] |
id | 130343849 | Unique id referring to this instance of routine |
name | Hole Diameter | User facing name of the routine [string] |
annotationids | '[]' | Reference to the shapes used in the routine. These may be local rulers. |
edgesearch | 0.6 | Input: Edge Search Percentage |
regionmode | top | Input: Region Model (top/bottom) [enum] |
nominaldiameter | 5.4 | Input: Nominal Diameter [mm] |
diameter | 7.07919649057 mm | Output: Diameter [string] |
circularity | 0.109889499366 mm | Output: Circularity [string] |
circle | (1065.74334886, 747.556295914, 514.483133639) | Output: Location of circle (CenterX, CenterY, Radius) [pixel]. Rendered in UI |
minpt | (1560, 647) | Output: Location of min point (X, Y) [pixel]. Rendered in UI |
maxpt | (1578, 839) | Output: Location of max point (X, Y) [pixel]. Rendered in UI |
meta_passedanalysis | True | Output: result of pass/fail settings made by user [bool] |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Header | Example | Comment |
---|---|---|
type | FastenerLGPEN6100 | Internal string reference to the type of routine [string] |
id | 1906895773 | Unique id referring to this instance of routine |
name | LGP EN6100 | User facing name of the routine [string] |
annotationids | '[]' | Reference to the shapes used in the routine. These may be local rulers. |
diameter | 6.6 | Input: diameter [mm] |
flushoffset | 0.5 | Input: Flushness offset [mm] |
flushminlim | -0.08 | Input: Flushness Min Limit [mm] |
flushmaxlim | 0.1 | Input: Flushness Max Limit [mm] |
flushmin | -0.39892 | Output: Flushenss Min [mm] |
flushmax | 0.08389 | Output: Flushenss Max [mm] |
headdishmin | -nan(ind) | Output: Head dishing Min [mm] |
perpendicularity | 4.981434 | Output: Perpendicularity [degree] |
flushcircle | (1253.21141275, 865.579579818, 402.257984959) | Output: Location of flush circle (CenterX,CenterY, Radius) [pixel]. Rendered in UI |
flushminpt | (1641, 758) | Output: Location of flush min point (X,Y) [pixel]. Rendered in UI as blue dot on scan overlay |
flushmaxpt | (867, 981) | Output: Location of flush max point (X,Y) [pixel]. Rendered in UI as red dot on scan overlay |
image | image.png | Output: Filename for scan overlay for UI rendering |
passfail | false | Output: was routine able to run, i.e. was enough inputs provided to allow a run [bool] |
meta_passedanalysis | False | Output: result of pass/fail settings made by user [bool] |
meta_failurereason | Pass value is False . Required value is True . |
Output: text description of pass/fail result [string] |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Header | Example | Comment |
---|---|---|
type | FastenerLGPEN6114 | Internal string reference to the type of routine [string] |
id | 254661182 | Unique id referring to this instance of routine |
name | LGP EN6114 | User facing name of the routine [string] |
annotationids | '[]' | Reference to the shapes used in the routine. These may be local rulers. |
diameter | 8.75 | Input: diameter [mm] |
flushoffset | 0.5 | Input: Flushness offset [mm] |
flushminlim | -0.08 | Input: Flushness Min Limit [mm] |
flushmaxlim | 0.1 | Input: Flushness Max Limit [mm] |
flushmin | -0.0931385 | Output: Flushenss Min [mm] |
flushmax | 0.15830711 | Output: Flushenss Max [mm] |
headdishmin | -0.1037149 | Output: Head dishing Min [mm] |
perpendicularity | 1.97412801 | Output: Perpendicularity [degree] |
flushcircle | (1811.29474823, 753.969925059, 524.440141531) | Output: Location of flush circle (CenterX, CenterY, Radius) [pixel]. Rendered in UI |
flushminpt | (1291, 826) | Output: Location of flush min point (X, Y) [pixel]. Rendered in UI as blue dot on scan overlay |
flushmaxpt | (2279, 516) | Output: Location of flush max point (X, Y) [pixel]. Rendered in UI as red dot on scan overlay |
image | image.png | Output: Filename for scan overlay for UI rendering |
passfail | false | Output: was routine able to run, i.e. was enough inputs provided to allow a run [bool] |
meta_passedanalysis | False | Output: result of pass/fail settings made by user [bool] |
meta_failurereason | Pass value is False . Required value is True . |
Output: text description of pass/fail result [string] |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Header | Example | Comment |
---|---|---|
type | Offset | Internal string reference to the type of routine [string] |
id | 2116715901 | Unique id referring to this instance of routine |
name | Offset | User facing name of the routine [string] |
annotationids | '[]' | Reference to the shapes used in the routine. These may be local rulers. |
levelorder | 0 | Input: Form removal / levelling order [0,1,2,3,4] |
levelregions | '[]' | Input: Array of leveling regions. Each entry has the following properties- Start (referring to position on profile line) [mm]- End (referring to position on profile line) [mm]- Type (None/Max/Min/Mean), will always be None for level regions |
numprofiles | 1 | Input: Number of profiles [int]NOTE: this must be an odd number: 1/3/5/7 etc. |
profilewidth | 0.2 | Input: Profile Width [mm] |
reintegrate | false | Obsolete |
primaryshapeid | 1205877184 | Input: Reference to the shape used in the routine. It must be a line |
offsetregion1 | (3.96097276059, 4.06253616471, Mean) | Input: Bottom region- Start (referring to position on profile line) [mm]- End (referring to position on profile line) [mm]- Type (Mean/Max/Min) |
offsetregion2 | (2.09811776797, 2.30124457621, Mean) | Input: Top region- Start (referring to position on profile line) [mm]- End (referring to position on profile line) [mm]- Type (Mean/Max/Min) |
debug | false | internal |
offset | 0.40064612 | Output: offset [mm] |
width | 1.81473697 | Output: width [mm] |
profile | '[(0, 0.026422787106), ..... , -0.369323686395)]' | Output: Array of points in the profile. Each point in the profile is organized as (X,Y) [mm] |
region1 | '[(3.96630011343, -0.344152654986), …. , (4.06253616471, -0.369323686395)]' | Output: Array of points of the section of the profile that is covered by region1 (bottom). Each point in is organized as (X,Y) [mm] |
region1pt | (4.01441813907, -0.356764410628) | Output: Location of bottom point (X, Y) [pixel]. Rendered in UI as blue dot on profile |
point1 | (1256.91977285, 849.440800471) | Output: Location of bottom point (X, Y) [pixel]. Rendered in UI as blue dot on scan overlay |
region2 | '[(2.10344512081, 0.0424179539838), …. , 0.0416897666568)]' | Output: Array of points of the section of the profile that is covered by region2 (top). Each point in is organized as (X,Y) [mm] |
region2pt | (2.19968117209, 0.043881712457) | Output: Location of top point (X, Y) [pixel]. Rendered in UI as red dot on profile |
point2 | (994.096567835, 827.072868129) | Output: Location of top point (X, Y) [pixel]. Rendered in UI as blue red on scan overlay |
profilelines | '[(675.522985995, 799.960222866, 1263.88858067, 850.033890498)]' | Output: Array of lines that can be rendered in the UI on top of the scan. Each line represent a profile line. The number of entries will be controlled by numprofiles .Each line defined as (x1, y1, x2, y2) [pixel] |
meta_passedanalysis | True | Output: result of pass/fail settings made by user [bool] |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Header | Example | Comment |
---|---|---|
type | ParticleDetection | Internal string reference to the type of routine [string] |
id | 888001878 | Unique id referring to this instance of routine |
name | Particle Detection | User facing name of the routine [string] |
annotationids | '[]' | Reference to the shapes used in the routine. These may be local rulers. |
particledirection | Peaks | Input: Particle Type (Peaks/Pits) [enum] |
featuresize | 0.125 | Input: Nominal Feature Size [mm] |
clippingdistance | 0.003 | Input: Clipping Plane Distance [mm] |
minamplitude | 0.003 | Input: Min Particle Amplitude [mm] |
maxamplitude | 2 | Input: Max Particle Amplitude [mm] |
minarticlediameter | 0 | Input: Min Particle Diameter [mm] |
maxparticlediameter | 10 | Input: Max ParticleDiameter [mm] |
primaryshapeid | 0 | Input: reference to shape set to limit ROI0=no shape input |
particlecount | 1136 | Output: Number of Particles [int ] |
particlecountperarea | 473749.62 | Output: Number of Particles (Scaled) [int ] |
coverage | 0.07565559 | Output: Coverage [%] |
analyzedarea | 239.789110491 mm2 | Output: Analyzed Area [mm2] |
smallestdiameter | 0.01097875 | Output: Particle Minimum [mm] |
largestdiameter | 3.60360622 | Output: Particle Maximum [mm] |
maxparticleamplitude | 0.33044797 | Output: Max Particle Amplitude [mm] |
cleanlinessscore | 1001 | Output: Cleanliness Score [int] |
image | image.png | Output: Filename for scan overlay for UI rendering |
maxpt | (1299, 344) | Output: Center Location of max point (X, Y) [pixels] |
report | Output: The table header and all rows of the “report” tab in GSM is represented in a JSON data structure. The format is self explanatory if viewed in a debugger along with the GSM table output. | |
cc1246ereport | Output: The table header and all rows of the “CC1246E Report” tab in GSM is represented in a JSON data structure. The format is self explanatory if viewed in a debugger along with the GSM table output. | |
cc1246ehistogram | Output: The table header and all rows of the “CC1246E Histogram” tab in GSM is represented in a JSON data structure. The format is self explanatory if viewed in a debugger along with the GSM table output. | |
meta_passedanalysis | True | Output: result of pass/fail settings made by user [bool] |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Header | Example | Comment |
---|---|---|
type | PitDetection | Internal string reference to the type of routine [string] |
id | 496638582 | Unique id referring to this instance of routine |
name | Pit Detection | User facing name of the routine [string] |
annotationids | '[]' | Reference to the shapes used in the routine. These may be local rulers. |
featuresize | 0.125 | Input: Nominal Feature Size [mm] |
depththreshold | 0.003 | Input: Clipping Plane Distance [mm] |
mindepth | 0.003 | Input: Min Particle Amplitude [mm] |
maxdepth | 2 | Input: Max Particle Amplitude [mm] |
minpitdiameter | 0 | Input: Min Particle Diameter [mm] |
maxpitdiameter | 10 | Input: Max ParticleDiameter [mm] |
primaryshapeid | 0 | Input: reference to shape set to limit ROI0=no shape input |
pitcount | 2103 | Output: Number of Particles [int ] |
coverage | 0.05875127 | Output: Coverage [%] |
smallestdiameter | 0.01097875 | Output: Particle Minimum [mm] |
largestdiameter | 3.04545045 | Output: Particle Maximum [mm] |
maxpitdepth | 0.51647782 | Output: Max Particle Amplitude [mm] |
nominaldiameter | 0.125 | Output: Nominal Feature Size [mm]NOTE: this is a replication of the input |
image | image.png | Output: Filename for scan overlay for UI rendering |
minpt | (1401, 678) | Output: Center Location of deepest pit (X, Y) [pixels] |
report | Output: The table header and all rows of the “Report” tab in GSM is represented in a JSON data structure. The format is self explanatory if viewed in a debugger along with the GSM table output. | |
meta_passedanalysis | True | Output: result of pass/fail settings made by user [bool] |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Header | Example | Comment |
---|---|---|
type | ProfileGeometry | Internal string reference to the type of routine [string] |
id | 1857757578 | Unique id referring to this instance of routine |
name | Profile Geometry | User facing name of the routine [string] |
annotationids | '[]' | Reference to the shapes used in the routine. These may be local rulers. |
levelorder | 0 | Input: Form removal / levelling order [0,1,2,3,4] |
levelregions | '[]' | Input: Array of leveling regions. Each entry has the following properties: Start (referring to position on profile line) [mm] End (referring to position on profile line) [mm] Type (None/Max/Min/Mean), will always be None for level regions |
region | (1.74037925428, 5.22113776283, None) | Input: region Start (referring to position on profile line) [mm] End (referring to position on profile line) [mm] Type (None) |
primaryshapeid | 1182189484 | Input: Reference to the shape used in the routine. It must be a line |
x1 | 1.74037925 | Output: X1 [mm] |
z1 | 0.04892514 | Output: Z1 [mm] |
x2 | 5.22113776 | Output: X2 [mm] |
z2 | -0.4751283 | Output: Z2 [mm] |
distancex | 3.48075851 | Output: Distance X1-X2 [mm] |
distancez | 0.52405349 | Output: Distance Z1-Z2 [mm] |
distancexz | 3.51998748 | Output: Distance 1-2 [mm] |
slope | 0.15055727 | Output: Slope (0-1) [%] |
angle | 8.56198947 | Output: Angle [degrees] |
lsslope | 0.19144595 | Output: LS Slope (0-1) [%] |
lsangle | 10.8379063 | Output: LS Angle [degrees] |
radius | 3.71729561 | Output: Radius [mm] |
region1pt | (1.74037925428, 0.0489251445335) | Output: Location of left most point (X, Y) [pixel]. Rendered in UI as blue dot on profile |
region2pt | (5.22113776283, -0.475128341615) | Output: Location of right most point (X, Y) [pixel]. Rendered in UI as red dot on profile |
xdistanceline | (1.74037925428, -0.475128341615, 5.22113776283, -0.475128341615) | Output: Location of horizontal X distance line on profile (x1, y1, x2, y2) [mm]. Rendered in UI as line on profile |
zdistanceline | (1.74037925428, 0.0489251445335, 1.74037925428, -0.475128341615) | Output: Location of vertical Z distance line on profile (x1, y1, x2, y2) [mm]]. Rendered in UI as line on profile |
slopeline | (1.74037925428, 0.0489251445335, 5.22113776283, -0.475128341615) | Output: Location of diagonal line representing slope on profile (x1, y1, x2, y2) [mm]]. Rendered in UI as line on profile |
lsslopeline | (1.74037925428, -0.0572237745789, 5.22113776283, -0.723600909066) | Output: Location of diagonal line representing least square slope on profile (x1, y1, x2, y2) [mm]]. Rendered in UI as line on profile |
circle | (4.1251441316, 3.11708773989, 3.71729561006) | Output: Location of circle representing radius on profile (CenterX, CenterY, Radius) [mm]]. Rendered in UI as circle on profile |
profile | '[(0, 0.0431844494982), (0.00687896938449, …., (0.041273816307, 0.0405447581414)] | Output: Array of points of the section of the profile that is covered by the region. Each point in is organized as (X,Y) [mm] |
meta_passedanalysis | True | Output: result of pass/fail settings made by user [bool] |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Header | Example | Comment |
---|---|---|
type | Roughness | Internal string reference to the type of routine [string] |
id | 1474910097 | Unique id referring to this instance of routine |
name | Profile Roughness | User facing name of the routine [string] |
annotationids | '[]' | Reference to the shapes used in the routine. These may be local rulers. |
levelorder | 0 | Input: Form removal / levelling order [0,1,2,3,4] |
levelregions | '[]' | Input: Array of leveling regions. Each entry has the following properties: Start (referring to position on profile line) [mm] End (referring to position on profile line) [mm] Type (None/Max/Min/Mean), will always be None for level regions |
reintegrate | false | Obsolete |
primaryshapeid | 213149554 | Input: Reference to the shape used in the routine. It must be a line |
lambdac | 0.8 | Input: Filter Cutoff lambda-c [mm] |
numprofiles | 1 | Input: Number of profiles [int]NOTE: this must be an odd number: 1/3/5/7 etc. |
profilewidth | 1 | Input: Profile Width [mm] |
scale | 1 | Input: scale [double] |
averageravalue | 8.2036062 | Output: Average Ra [um] |
Ra | 8.2036062 | Output: Ra [um] |
Rq | 11.502679 | Output: Rq [um] |
Rp | 28.2195084 | Output: Rp [um] |
Rv | 37.1566086 | Output: Rv [um] |
Rz | 30.5532495 | Output: Rz [um] |
Rt | 65.376117 | Output: Rt [um] |
Rsk | -0.3781205 | Output: Rsk [um] |
Rku | 4.59679143 | Output: Rku [um] |
RSm | 791.520557 | Output: Rsm [um] |
Rc | 24.5678074 | Output: Rc [um] |
evaluationlength | 3.63826281 | Output: Evaluation Length [mm] |
scalefactor | 1 | Output: Scale [double]. This is a replication of the input |
rprofile | '[(0.405779784215, 0.00052973614822), ...., (4.04404259523, 0.0202368823169)]' | Output: Array of points along the profile that represent the Roughness Profile. Each point in is organized as (X, Y) [mm] |
wprofile | '[(0.405779784215, 0.0806891284185), …. , (4.04404259523, 0.162517905647)]' | Output: Array of points along the profile that represent the Waviness Profile. Each point in is organized as (X, Y) [mm] |
pprofile | '[(0, 0.0138198800394), …. , (4.44982237944, 0.279243363504)]' | Output: Array of points along the profile that represent the Primary Profile. Each point in is organized as (X, Y) [mm] |
profilelines | '[(984.310603058, 779.096194686, 1631.09547664, 779.096194686)]' | Output: The line defining the trace-line, will be the same as the input shape coordinates (x1, y1, x2, y2) [pixels] |
meta_passedanalysis | True | Output: result of pass/fail settings made by user [bool] |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Header | Example | Comment |
---|---|---|
type | Radius | Internal string reference to the type of routine [string] |
id | 1912752174 | Unique id referring to this instance of routine |
name | Radius | User facing name of the routine [string] |
annotationids | '[]' | Reference to the shapes used in the routine. These may be local rulers. |
levelorder | 0 | internal |
levelregions | '[]' | internal |
numprofiles | 1 | Input: Number of profiles [int]NOTE: this must be an odd number: 1/3/5/7 etc. |
profilewidth | 0.2 | Input: Profile Width [mm] |
linearthreshold | 0 | internal |
reintegrate | false | Obsolete |
primaryshapeid | 491633211 | Input: Profile Width [mm] |
region | (0.86686880433, 2.60060641299, None) | Input: region on profile Start (referring to position on profile line) [mm] End (referring to position on profile line) [mm] Type (None) |
radius | 2.83856157 | Output: Radius [mm] |
meanradius | 2.83856157 | Output: Mean Radius [mm] |
minradius | 2.83856157 | Output: Min Radius [mm] |
maxradius | 2.83856157 | Output: Max Radius [mm] |
medianradius | 2.83856157 | Output: Median Radius [mm] |
centerprofile | '[(0, 0.0653711264391), .... , (3.45458003393, -0.580902561051)]' | Output: Array of points along the profile that represent the section of the profile covered by the region. Each point in is organized as (X, Y) [mm] |
profiles | [] | Output: Profile List List of profiles produced by the routine not including the center profile. Each profile consists of points. Each Point is the T value (distance in mm from start of line) and the Z value (distance in MM from 0) |
centercircle | (0.52594731328, -2.71080230828, 2.83856157236) | Output: The radius on the profile represented as a circle. (CenterX, CenterY, Radius) [mm] |
circles | '[]' | Output: Circles The circles that fit each profile in ‘profiles’. Each circle consists of a center X, center Y and radius in image pixels. |
profilelines | '[(963.446574878, 637.220803062, 1447.49202865, 770.750583414)]' | Output: Array of lines that can be rendered in the UI on top of the scan. Each line represents a profile line. The number of entries will be controlled by numprofiles . Each line defined as (x1, y1, x2, y2) [pixel] |
meta_passedanalysis | True | Output: result of pass/fail settings made by user [bool] |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Header | Example | Comment |
---|---|---|
type | Scratch | Internal string reference to the type of routine [string] |
id | 785976931 | Unique id referring to this instance of routine |
name | Scratch | User facing name of the routine [string] |
annotationids | '[]' | Reference to the shapes used in the routine. These may be local rulers. |
tolerance | 0.005 | Input: Tolerance [mm] |
filtersg | 0.5 | Input: Filter Sigma [mm] Default value: 0.5 |
polyorder | 4 | Input: Polynomial order [1-4] |
shapeids | [1156429806, 1114464821] | Input: Reference to the two shapes used in the routine. All shapes must be of a closed type, i.e. no lines and no open polylines |
debug | false | internal |
minz | -0.6927297 | Output: Min [mm] |
maxz | 0.07521429 | Output: Max [mm] |
minpt | (1403, 682) | Output: Min point location (X, Y) [pixel]) |
maxpt | (1116, 529) | Output: Max point location (X, Y) [pixel] |
meta_passedanalysis | True | Output: result of pass/fail settings made by user [bool] |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Header | Example | Comment |
---|---|---|
type | ShotPeen | Internal string reference to the type of routine [string] |
id | 743275026 | Unique id referring to this instance of routine |
name | Shot Peen | User facing name of the routine [string] |
annotationids | '[]' | Reference to the shapes used in the routine. These may be local rulers. |
diameter | 0.3 | Input: Dent Diameter [mm] |
depth | -0.001 | Input: Min Depth [mm] |
expand | 0.35 | Input: Dent Expansion [mm] |
primaryshapeid | 0 | Input: Reference to the shapeID used as input. 0=no shape input |
coverage | 0.8733317 | Output: Coverage [%] |
image | image.png | Output: Filename for scan overlay for UI rendering |
meta_passedanalysis | True | Output: result of pass/fail settings made by user [bool] |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Header | Example | Comment |
---|---|---|
type | SurfaceRoughness | Internal string reference to the type of routine [string] |
id | 867205822 | Unique id referring to this instance of routine |
name | Surface Roughness | User facing name of the routine [string] |
annotationids | '[]' | Reference to the shapes used in the routine. These may be local rulers. |
primaryshapeid | 0 | Input: Reference to the shape used in the routine to define ROI. It must be a closed shape0=no shape used |
secondaryshapeid | 0 | Input: Reference to the shape used in the routine to define an exclusion area within the ROI. It must be a closed shape0=no shape used |
scale | 1 | Input: scale [double] |
formremoval | None | Input: Form Removal (None, Poly1, Poly2, Poly3, Poly4) [enum] |
lambdac | 0.8 | Input: Filter Cutoff lambda-c [mm] |
applyfilter | true | Input: Apply Filter [bool] |
Sa | 2.18147096 | Output: Sa [um] |
Sq | 4.61606018 | Output: Sq [um] |
Sp | 58.5793331 | Output: Sp [um] |
Sv | 96.4832976 | Output: Sv [um] |
Ssk | -2.3873798 | Output: Ssk [um] |
Sku | 36.155147 | Output: Sku [um] |
Sz | 155.062631 | Output: Sz [um] |
mask | mask.png | Output: Filename for scan overlay for UI rendering |
scalefactor | 1 | Output: Scale [double]. This is a replication of the input |
meta_passedanalysis | True | Output: result of pass/fail settings made by user [bool] |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Header | Example | Comment |
---|---|---|
type | Weld | Internal string reference to the type of routine [string] |
id | 914162070 | Unique id referring to this instance of routine |
name | Weld Bead | User facing name of the routine [string] |
annotationids | '[]' | Reference to the shapes used in the routine. These may be local rulers. |
estwidth | 3.72 | Input: Dent Diameter [mm] |
diameter | 135 | Input: Min Depth [mm] |
margin | 0.7 | Input: Dent Expansion [mm] |
length | 5 | Input: Reference to the shapeID used as input. 0=no shape input |
referencewidth | 2.5 | Output: Coverage [%] |
referenceshape | Plate | Output: Filename for scan overlay for UI rendering |
height | 0.816874089636 mm | Output: Height [string] |
width | 3.06976611597 mm | Output: Width [string] |
offset | 0.565113858693 mm | Output: Planar Mismatch [string] |
depth | 0.0265661236748 mm | Output: Undercut Depth [string] |
profile1 | '[(0, -0.125322695717),,... (0.041306122449, -0.113199078161) ] | Output: Array of points defining Profile 1. Each point in is organized as (X, Y) [mm] |
profile2 | '[(0, -0.266413164522), ….(0.041306122449, -0.259776774578)] | Output: Array of points defining Profile 2. Each point in is organized as (X, Y) [mm] |
mask | mask.png | Output: Filename for scan overlay for UI rendering |
leftpoint1 | (2.54721088435, -0.112809776873) | Output: Location of left point on Profile 1 (X, Y) [mm] |
rightpoint1 | (6.31983673469, 1.05287165696) | Output: Location of right point on Profile 1 (X, Y) [mm] |
leftpoint2 | (2.54721088435, -0.599049738613) | Output: Location of left point on Profile 2 (X, Y) [mm] |
rightpoint2 | (6.31983673469, 0.0660026953761) | Output: Location of right point on Profile 2 (X, Y) [mm] |
centerpoint1 | (10.12, 1.49889042827) | Output: Location of center point on Profile 1 (X, Y) [mm] |
centerpoint2 | (5.64517006803, 0.121794203458) | Output: Location of center point on Profile 2 (X, Y) [mm] |
meta_passedanalysis | True | Output: result of pass/fail settings made by user [bool] |
meta_sdkversion | 3.7.102.0 | GSM version used to run this routine |
Field | Name | Data Type | Size | Example | Comments |
---|---|---|---|---|---|
1 | Signature | char[32] | 32 | “Binary TrueMap Data File v2.0\r\n\0” | Needs to be “Binary TrueMap Data File v2.0\r\n\0”. |
2 | Comment | char[] | Unknown | “The comment field goes here.”\0 | Starting at the 33 byte in the file, read until the next null char (‘\0’). This field is at least one byte in length because it contains a null char. |
3 | Width | int | 4 | 256 | Number of columns in the heightmap (x-axis). |
4 | Height | int | 4 | 256 | Number of rows in the heightmap (y-axis). |
5 | X Length | float | 4 | 1.5 | Length along the x-axis in mm. |
6 | Y Length | float | 4 | 1.2 | Length along the y-axis in mm. |
7 | X Offset | float | 4 | 0.0 | X-axis minimum value in mm. |
8 | Y Offset | float | 4 | 0.0 | Y-axis minimum value in mm. |
9 | Z height matrix | float[Width * Height] | 4 * Width * Height | The Z height values in mm representing the surface in row-major order. |
Notes:
- int types are signed 4-byte values.
- float is a 4-byte floating point number.
- A value of -1e10 represents a non-measured point on the surface. (Not used by GelSight Mobile).