FAQ
Short answers to common questions about LumiScan Object Finder. Each entry links to the page with the details.
Each entry has a fixed anchor (for example #faq-pixel-formats). Problems, error messages and status codes are described step by step in Troubleshooting.
|
Requirements and setup
On which platforms does the Object Finder run, and which Data Layer does it use?
- Answer
-
On ctrlX OS (ctrlX CORE or ctrlX IPC) it uses the ctrlX Data Layer; on a PC with Windows 11 or Ubuntu 24.04 it uses LumiScan Keryx, the Data Layer of HD Vision Systems for PCs. The node addresses, types and the way the methods are called are the same on both, so a program written against one works against the other. Only the names of the results of a method call differ, for example
DL_TOO_MANY_OPERATIONSon the ctrlX Data Layer andTooManyOperationson LumiScan Keryx. - More
Which image source does the Object Finder need?
- Answer
-
The application does not talk to a camera itself. It reads the image node of another application that runs on the same device - the same ctrlX CORE or ctrlX IPC, or the same PC (remote Data Layer access is not supported), normally LumiScan Cam Driver, for example
hdvisionsystems/lumiscan-cam-driver/camera1/output/image. Any application works if its image node providesdata(raw, uncompressed uint8 pixel data),width,heightandpixel-type(GenICam pixel format name). - More
Teaching objects
How do I teach an object from the live camera?
- Answer
-
Use
system/create-object, which is application-wide, so an object taught once is findable by every module:-
Put the part in front of the camera, in the lighting the installation will use.
-
Set
system/create-object/input/input-image-address,input/object-id(for examplescrew-m6) andinput/crop/startX,startY,width,height(width and height greater than 0). -
Write to
system/create-object/executeand check thatoutput/status-codeis1. -
The picture is saved as
<object-id>.png,output/object-pathnames the file, andsystem/objectslists the new object. An existing object with the same id is overwritten.
-
- More
How tightly should I crop when teaching an object?
- Answer
-
Leave about 5 pixels of background around the part; more buys nothing. A crop that stops at the silhouette hides the outline from the detector: the object is either refused as a failed run naming it, or accepted but keyed only on the part’s interior detail. A loose crop that takes in a workbench edge or a neighbouring part makes matching less reliable, because background inside the picture is background the detector then expects to see.
- More
How do I switch to another object directory?
- Answer
-
Write
system/set-object-dir/input/object-dirand write tosystem/set-object-dir/execute. Do not writesystem/object-dirdirectly: that changes the value shown but not the directory the application reads. The directory must already exist inside the configuration directory; absolute paths and paths climbing out with..are refused with status-2. A rejected call changes nothing, and the choice is saved. - More
Finding and tuning
How do I run a search and read the result?
- Answer
-
Set
<module>/find-object/input/input-image-addressandinput/object-id, write to<module>/find-object/execute(a blocking call) and readoutput/status-code.input/object-idis required: an empty value is refused with-2. Each run searches for one object; to sort mixed parts, run once per object and compare the scores. On1, readoutput/result:matchesis sorted by score, somatches[0]is the best. Each match gives the top left cornerx,y, thewidthandheightof the template that matched, thescore(0 to 1) and theobject_id. The rectangle is axis aligned; there is no rotation in the result. - More
How do I choose the confidence threshold?
- Answer
-
Measure rather than guess. Set
input/confidence-thresholdlow (0.4), run against real parts, note the scores inoutput/result, and set the threshold a little below the worst score a genuine part produces. The default is0.6; a threshold at or above0.9will usually reject everything. If genuine scores hover near the threshold or images are noisy, setinput/preprocess/blur-sigma-xto1.0(blur is off by default) and measure again. - More
How can I make the search faster?
- Answer
-
-
Restrict the area with
input/crop; this costs no precision. -
Raise
input/preprocess/bin-size. On a 1920x1080 image with a 128x128 object,2measured about 6x and4about 14x faster. Positions quantise tobin-sizepixels, and an object binned too far is refused. -
Search for fewer objects; each
executereprocesses the whole image. -
Keep the settings stable between runs: the detector is compiled on the first run and rebuilt whenever an input changes, which costs far more than a detection.
-
Raising
input/pyramiddoes not make the search faster; measured, it is slightly slower.
-
- More
Can the Object Finder search every frame a camera streams?
- Answer
-
Yes, as an experimental feature. A module subscribes to one camera’s stream and searches each frame with the inputs of
find-object(all butinput/input-image-address), publishing one result per frame on<module-id>/control/subscribe/output/stream/result:-
Make sure the Cam Driver’s stream runs.
-
Write the camera’s stream folder, for example
hdvisionsystems/lumiscan-cam-driver/camera1/control/publish/output/stream, to<module-id>/control/subscribe/input/address. -
Set
control/subscribe/input/enabletotrueand write tocontrol/subscribe/execute. Writingenablealone starts nothing. -
Wait until
control/subscribe/output/stream/activeistrue. -
What
control/subscribe/executeapplies is saved in<module-id>.json, so a module that streamed streams again after a restart. For a PLC, switch oncontrol/subscribe/input/keep-latest-outputand readfind-object/output/result.
-
- More
-
Finding Objects on an Image Stream (Experimental), Streams (Experimental)
Status codes and errors
How do I know whether an operation worked, and where is the reason for a failure?
- Answer
-
Check the sign of
output/status-code: greater than 0 is success,0means the operation has not run since the application started, less than 0 means it failed and produced nothing. The reason is onoutput/status-text, which starts withok:orerror:; invalid inputs are reported together, each naming the input and its value. A failed write toexecuteanswers only with a status code (over REST, a bare400), so readoutput/status-textafterwards; the text is also in the application log: on ctrlX OS in the ctrlX Logbook or withjournalctl, on a PC in the application’s console output.-1(busy) means another operation of the same module was still running; nothing was done. - More
Troubleshooting
Problems and error messages are described step by step in Troubleshooting:
Modules, licensing and support
Which licence do I need, and how many modules does it cover?
- Answer
-
One licence covers ten modules; the eleventh module acquires a second licence of the same key, and a module is refused with status
-11when no licence on the device covers it. Purchase routes:-
Bought from HD Vision Systems: the licence is on a LumiScan Key (Windows 11 or Ubuntu 24.04). One LumiScan Key is needed per device running the software at the same time; keys can be exchanged between devices.
-
Bought in the ctrlX Store for Windows 11: ctrlX WORKS plus a LumiScan Key.
-
Bought in the ctrlX Store for ctrlX OS (ctrlX CORE or IPC): a ctrlX licence, no key.
-
- More
Where can I find more answers or get support?
- Answer
-
See the site-wide LumiScan FAQ. Contact HD Vision Systems customer success at customer.success@hdvisionsystems.com or +49 6221 6721905; for licences, licenses@hdvisionsystems.com.
- More