Hi, just started in Isaac and I am primarily a python user. I am looking through the docks and I don’t really understand this “tick” concept that seems to pervade the SDK. Could someone give me a natural language explanation of ticks and their significance to the framework?
Sure, I’ll take a shot at least. An Isaac SDK codelet is not running all of the time in a tight loop (
while true:), but is instead called back at discrete times during its lifecycle.
start() is called first once to let you setup yourself up and configure how often you want
tick() to be called (regularly at a specific frequency or on the receipt of a message, for example). Then,
tick() will get called back regularly while your node is running. You can perform discrete units of work on each tick, but you don’t want to spend too much time here or you’ll starve out the next call of
For example, your codelet may be a"person" detector. On
start(), you may load in the weights for your model detector model and configure you want to be ticked on receipt of an image. In
tick(), you’ll fetch the latest image, run it through your model, publish the results, and the end the method. You’ll keep having
tick() called on every image that is received by your codelet until
stop() is called.
Alternatively, you may have a codelet that needs to print “Hello, World!” to the screen 10 times every second (10hz). In
start(), you could configure tick at 10hz, and
tick() will get called 10 times every second. If you do something expensive in
tick(), say spin in a while loop calculating square roots for a minute, then the next invocation of
tick() will obviously get delayed.