Could someone please give a natural language explanation of "ticks" in the framework

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 tick().

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.