Publishing ROS1 topics for Realsense D455 asset

Seeing as the latest version of Isaac Sim added new sensors like Sensor Assets — Omniverse IsaacSim latest documentation I want to publish the topics from the various cameras and IMU in the D455.

What would be the process to do so?

I have edited my robot USD and attached a D455 sensor.
Then I am trying to follow: 7.1.18. Publishing Camera’s Data — Omniverse IsaacSim latest documentation

        depth_camera_path = camera_path + "/Realsense/RSD455/Camera_Pseudo_Depth"
        step_size = 1 # int(60/freq)

        topic_name = camera_path + "_pointcloud"  # Set topic name to the camera's name
        queue_size = 1
        node_namespace = ""
        # This matches what the TF tree is publishing.
        frame_id = camera_path

        # Note, this pointcloud publisher will simply convert the Depth image to a pointcloud using the Camera intrinsics.

        # This pointcloud generation method does not support semantic labelled objects.

        rv = omni.syntheticdata.SyntheticData.convert_sensor_type_to_rendervar(
            sd.SensorType.DistanceToImagePlane.name
        )

        writer = rep.writers.get(rv + "ROS1PublishPointCloud")

        writer.initialize(
            frameId=frame_id,
            nodeNamespace=node_namespace,
            queueSize=queue_size,
            topicName=topic_name
        )

        camera = Camera(depth_camera_path)
        carb.log_warn("camera: {}".format(camera))
        render_product = camera._render_product_path        
        carb.log_warn("render_product: {}".format(render_product))
        writer.attach([render_product])

        # Set step input of the Isaac Simulation Gate nodes upstream of ROS publishers to control their execution rate

        gate_path = omni.syntheticdata.SyntheticData._get_node_path(
            rv + "IsaacSimulationGate", render_product
        )
        og.Controller.attribute(gate_path + ".inputs:step").set(step_size)

My camera is printed as:
2024-01-08 16:53:25 [13,065ms] [Warning] [keyper_with_ih] camera: <omni.isaac.sensor.scripts.camera.Camera object at 0x7f6a4cb0cd60>
But my render product is None.

Is there any example on how to use these pre built sensors?

1 Like

Hi my friend, why do you choose Camera_Pseudo_Depth to extract the camera signal ? I think Camera_OmniVision_OV9782_Right, Camera_OmniVision_OV9782_Left, Camera_OmniVision_OV9782_Color also can do exactly the same thing ?