Hi all,
I created a project, in which I can use Bazel to build Isaac resources externally. Then I created many applications with nodes separated in different packages similar to Isaac’s standard packages. My C++ codelets are working with no problem receiving and transmitting messages.
I am now trying to add a PyCodelet to my application, succeeded to build everything with a py_binary and everything is working fine until the point where I wanted to send and receive protos.
Here is my build:
load("@com_nvidia_isaac//engine/build:isaac.bzl", "isaac_app", "isaac_py_app", "isaac_pkg")
py_binary(
name = "reident_py",
srcs = [
"__init__.py",
"reident_py.py",
],
data = [
"yolo_tracker.app.json",
"@com_nvidia_isaac//messages:detections_proto",
"@com_nvidia_isaac//packages/deepstream:libdeepstream_module.so",
"@com_nvidia_isaac//packages/viewers:libviewers_module.so",
"//packages/demux:libdemux_module.so",
"//packages/yolo_detector:libyolo_detector_module.so",
"//packages/tracker:libtracker_module.so",
# "//packages/reident_py:py_init",
"coco_config.json",
"loco_config.json",
"cocoloco_config.json",
"@yolov4_coco_model",
"@yolov4_loco_model",
"@yolov4_cocoloco_model",
],
deps = ["@com_nvidia_isaac//engine/pyalice"],
visibility = ["//visibility:public"],
)
isaac_pkg(
name = "reident_py-pkg",
srcs = ["reident_py"],
)
When I try to set the protos in the start function as:
class Reidentification(Codelet):
def start(self):
# Input and output messages for the Codelet. We'll make connections in the json file.
self.rx_det = self.isaac_proto_rx("Detections2Proto", "det_results") # Fresh detection results without IDs
self.rx_track = self.isaac_proto_rx("Detections2Proto", "last_track_results") # Last tracking bboxes
self.tx = self.isaac_proto_tx("Detections2Proto", "det_r_ids") # Matched detection results
I get the following error:
2020-11-07 23:58:57.355 ERROR external/com_nvidia_isaac/engine/alice/components/Codelet.cpp@229: Component 'reident_py/PyCodelet' of type 'isaac::alice::PyCodelet' reported FAILURE:
(<class 'AssertionError'>, AssertionError('proto message type "Detections2Proto" not registered',), <traceback object at 0x7f090e55ca48>)
2020-11-07 23:58:57.355 ERROR external/com_nvidia_isaac/engine/alice/backend/event_manager.cpp@42: Stopping node 'reident_py' because it reached status 'FAILURE'
The rest of my app works just fine, but of course without my node with PyCodelet. I tried many other proto types, nothing worked, same error. Does anyone have an idea why my protos cannot be registered?
Thanks!