Fixtures¶
Introduction¶
The concept of fixtures is central to JsSetup. A fixture is a physical object that is scanned by a ScanHead. The resulting profile data is used to calculate the alignment (i.e. the position and rotation) of the ScanHead by comparing the profile data to the geometry of the fixture description.
To perform an alignment, you need to have a fixture description as well as the physical object of that shape.
The fixture description is a JSON file that contains the geometry of the fixture in terms of circles and lines, in the coordinate system of the machine center (e.g. belt or chain).
JsSetup comes with a number of fixture descriptions - these serve solely as examples. You can create your own fixture descriptions to match the physical object you are scanning.
Alignment per Camera-Laser-Pair¶
JsSetup supports alignments per Camera-Laser-Pair. This means that if you have a ScanHead with two cameras and one laser, such as the JS-50 WX, you will need to perform two alignments: one for each camera. Similarly, for a JS-50 X6B, you will need to perform six alignments: one for each laser. There are some helper functions in JsSetup to make this process easier.
The Pinchot API additionally supports alignment per ScanHead, this functionality is deprecated and therefore not exposed in JsSetup.
Fixture Location¶
JsSetup looks for fixture descriptions in the following location:
C:\ProgramData\JoeScan\JsSetup\fixtures
This is the default location, but it can be changed by editing the FixturesPath
key in the config.json
file (for details, see here).
Default Fixture¶
Each ScanSystem has a Default Fixture, chosen at the time the ScanSystem was created. The Alignment Editor Workspace initially uses this fixture for all alignments, however, it can be overridden on a per-Scanhead basis. While in the Alignment Editor, simply choose a different fixture as needed, and JsSetup will use and remember the selected fixture for this ScanHead.
Fixture Description Format¶
The fixture description is a JSON file that contains the following root level elements:
Name
: The name of the fixture. This is the name that will be displayed in the fixture dropdown menu. It must be unique.Units
: The units of the fixture. This can be eitherMillimeters
orInches
. Note that this is the unit in which the feature description are specified. This can be different from the ScanSystem the fixture is used in, the features are automatically converted to the ScanSystem's unit.Features
: An array of features that make up the fixture. See below for details.
Features¶
JsSetup supports the following feature types:
CircleFeature
: A circle with a given radius and center point.LineFeature
: A line with a given start and end point.
CircleFeature¶
A circle feature is specified as follows:
{
"Type": "CircleFeature",
"CenterX": 0.0,
"CenterY": 6.0,
"Radius": 1.0
}
LineFeature¶
A line feature is specified as follows:
{
"Type": "LineFeature",
"X1": 0.0,
"Y1": 0.0,
"X2": 0.0,
"Y2": 6.0
}
Example Fixture Descriptions¶
The following fixture description is for a 6" diameter circle:
{
"Name": "6in Circle",
"Units": "Inches",
"Features": [
{
"Type": "CircleFeature",
"CenterX": 0.0,
"CenterY": 0.0,
"Radius": 3.0
}
]
}
The following fixture description is for a squared cant with 8inch sides:
{
"Name": "8in Square Cant",
"Units": "Inches",
"Features": [
{
"Type": "LineFeature",
"X1": -4.0,
"Y1": -4.0,
"X2": 4.0,
"Y2": -4.0
},
{
"Type": "LineFeature",
"X1": 4.0,
"Y1": -4.0,
"X2": 4.0,
"Y2": 4.0
},
{
"Type": "LineFeature",
"X1": 4.0,
"Y1": 4.0,
"X2": -4.0,
"Y2": 4.0
},
{
"Type": "LineFeature",
"X1": -4.0,
"Y1": 4.0,
"X2": -4.0,
"Y2": -4.0
}
]
}
In a ScanSystem with a unit of Inches | In a ScanSystem with a unit of Millimeters |
---|---|
![]() |
![]() |
Composition¶
Fixture descriptions can be composed of any number of features, even of different types.
Editing Fixtures¶
Currently, fixtures can only be edited by manually editing the JSON file.
Fixture Loading
Fixtures are only discovered when JsSetup starts. If you add a fixture description to the fixtures folder while JsSetup is running, you will need to restart JsSetup to see the new fixture in the dropdown menu.