Using Python codelets from other Isaac applications

I’m trying to use a Python codelet defined in another application in an application defined elsewhere. The Python codelet runs fine from the application where it was originally developed. I created another application that will use Python and added the first application in the deps section of py_binary() in the BUILD file for the new application. I then added a subgraph node that references the original application to the new application’s JSON file.

At this point, I can build the new application with Bazel successfully and most of the nodes are able to run. However, when it gets to the point of starting the codelet defined in the other application, it gets to “Starting codelet …” and never gets to “Starting codelet DONE” like the other codelets do. Additionally Isaac Sight shows the component as “Starting” in the App Graph. I have also tried to put print statements in both main() of the original application and start() and tick() of the codelet and do not see those printed to the debug log when trying to start from the new application.

I do get the potentially relevant warning “Loaded a subgraph with no modules section. Did you forget to add one?” when I run the application, and the original Python application’s JSON file doesn’t have a modules section, but I’m unsure what I would refer to since I’m not depending on any C++ modules besides pyalice.

Is there anything that I am missing? Is it supported for one Python codelet to depend on another? I am using Isaac SDK 2019.3 and am running Ubuntu 18.04 on both the host computer and on an Nvidia TX2. Thanks.

4 Likes