Skip to content

Run G1 GR00T with independent sim2 sensors and a desk scene - #4983

Closed
Nabla7 wants to merge 17 commits into
pim/feat/sim2-body-observationsfrom
pim/feat/sim2-g1-observations
Closed

Nabla7 wants to merge 17 commits into
pim/feat/sim2-body-observationsfrom
pim/feat/sim2-g1-observations

Conversation

@Nabla7

@Nabla7 Nabla7 commented Nov 3, 2026 •

Copy link
Copy Markdown
Collaborator

Superseded by the Option E capability stack https://github.com/dimensionalOS/dimos/stack/5042 (#5033–#5041); this G1 draft and its review history remain available as the previous split-stream implementation.

@github-actions github-actions Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

go2 replay realtime (arm64)

Details
Benchmark suite Current: 3676009 Previous: 73bed07 Ratio
peak memory 1739.203 MB 1769.906 MB 0.98
peak threads 370 threads 378 threads 0.98
network (transport) 2736.311 MB 2723.992 MB 1.00
disk write 1.523 MB 1.508 MB 1.01
instructions 138.153 G 137.278 G 1.01

This comment was automatically generated by workflow using github-action-benchmark.

@codecov

codecov Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

❌ 17 Tests Failed:

Tests completed Failed Passed Skipped
7375 17 7358 55
View the top 3 failed test(s) by shortest run time
dimos.simulation.habitat.test_server::test_camera_info_round_trip
Stack Traces | 0.002s run time
def test_camera_info_round_trip():
        k = {"fx": 320.0, "fy": 320.0, "cx": 320.0, "cy": 180.0, "width": 640.0, "height": 360.0}
>       out = CameraInfo.lcm_decode(server.camera_info_msg(k, "camera_optical", 1.5))

k          = {'cx': 320.0, 'cy': 180.0, 'fx': 320.0, 'fy': 320.0, ...}

.../simulation/habitat/test_server.py:52: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../simulation/habitat/server.py:114: in camera_info_msg
    return bytes(m.lcm_encode())
        cx         = 320.0
        cy         = 180.0
        frame_id   = 'camera_optical'
        fx         = 320.0
        fy         = 320.0
        k          = {'cx': 320.0, 'cy': 180.0, 'fx': 320.0, 'fy': 320.0, ...}
        m          = <dimos_lcm.sensor_msgs.CameraInfo.CameraInfo object at 0xff35649f9e40>
        ts         = 1.5
.venv/lib/python3.12.../dimos_lcm/sensor_msgs/CameraInfo.py:119: in lcm_encode
    self._encode_one(buf)
        buf        = <_io.BytesIO object at 0xff35cfa37970>
        self       = <dimos_lcm.sensor_msgs.CameraInfo.CameraInfo object at 0xff35649f9e40>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <dimos_lcm.sensor_msgs.CameraInfo.CameraInfo object at 0xff35649f9e40>
buf = <_io.BytesIO object at 0xff35cfa37970>

    def _encode_one(self, buf):
        buf.write(struct.pack(">i", self.D_length))
        assert (
>           self.header._get_packed_fingerprint()
            == common_msgs.SampleHeader._get_packed_fingerprint()
        )
E       AssertionError

buf        = <_io.BytesIO object at 0xff35cfa37970>
self       = <dimos_lcm.sensor_msgs.CameraInfo.CameraInfo object at 0xff35649f9e40>

.venv/lib/python3.12.../dimos_lcm/sensor_msgs/CameraInfo.py:125: AssertionError
dimos.simulation.habitat.test_server::test_cloud_round_trip_keeps_points_and_colour
Stack Traces | 0.002s run time
def test_cloud_round_trip_keeps_points_and_colour():
        pts = np.array([[1.0, 2.0, 3.0], [-4.0, 0.5, 0.25]], dtype=np.float32)
        colors = np.array([[255, 0, 0], [0, 128, 64]], dtype=np.uint8)
>       out = PointCloud2.lcm_decode(server.cloud_msg(pts, colors, "world", 1.5))

colors     = array([[255,   0,   0],
       [  0, 128,  64]], dtype=uint8)
pts        = array([[          1,           2,           3],
       [         -4,         0.5,        0.25]], dtype=float32)

.../simulation/habitat/test_server.py:62: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../simulation/habitat/server.py:160: in cloud_msg
    return bytes(m.lcm_encode())
        colors     = array([[255,   0,   0],
       [  0, 128,  64]], dtype=uint8)
        data       = array([[          1,           2,           3,  2.3418e-38],
       [         -4,         0.5,        0.25,  4.6007e-41]], dtype=float32)
        frame_id   = 'world'
        m          = <dimos_lcm.sensor_msgs.PointCloud2.PointCloud2 object at 0xff35cfbe0840>
        points     = array([[          1,           2,           3],
       [         -4,         0.5,        0.25]], dtype=float32)
        rgb_u32    = array([16711680,    32832], dtype=uint32)
        ts         = 1.5
        view       = <memory at 0xff35d10daf80>
.venv/lib/python3.12.../dimos_lcm/sensor_msgs/PointCloud2.py:112: in lcm_encode
    self._encode_one(buf)
        buf        = <_io.BytesIO object at 0xff35cfa36520>
        self       = <dimos_lcm.sensor_msgs.PointCloud2.PointCloud2 object at 0xff35cfbe0840>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <dimos_lcm.sensor_msgs.PointCloud2.PointCloud2 object at 0xff35cfbe0840>
buf = <_io.BytesIO object at 0xff35cfa36520>

    def _encode_one(self, buf):
        buf.write(struct.pack(">ii", self.fields_length, self.data_length))
        assert (
>           self.header._get_packed_fingerprint()
            == common_msgs.SampleHeader._get_packed_fingerprint()
        )
E       AssertionError

buf        = <_io.BytesIO object at 0xff35cfa36520>
self       = <dimos_lcm.sensor_msgs.PointCloud2.PointCloud2 object at 0xff35cfbe0840>

.venv/lib/python3.12.../dimos_lcm/sensor_msgs/PointCloud2.py:118: AssertionError
dimos.simulation.habitat.test_server::test_color_image_round_trip
Stack Traces | 0.002s run time
def test_color_image_round_trip():
        rgb = np.arange(8 * 12 * 3, dtype=np.uint8).reshape(8, 12, 3)
>       out = Image.lcm_decode(server.image_msg(rgb, "rgb8", "camera_optical", 1.5))

rgb        = array([[[  0,   1,   2],
        [  3,   4,   5],
        [  6,   7,   8],
        [  9,  10,  11],
        [ 12,  13,...19],
        [ 20,  21,  22],
        [ 23,  24,  25],
        [ 26,  27,  28],
        [ 29,  30,  31]]], dtype=uint8)

.../simulation/habitat/test_server.py:39: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../simulation/habitat/server.py:97: in image_msg
    return bytes(m.lcm_encode())
        array      = array([[[  0,   1,   2],
        [  3,   4,   5],
        [  6,   7,   8],
        [  9,  10,  11],
        [ 12,  13,...19],
        [ 20,  21,  22],
        [ 23,  24,  25],
        [ 26,  27,  28],
        [ 29,  30,  31]]], dtype=uint8)
        channels   = 3
        encoding   = 'rgb8'
        frame_id   = 'camera_optical'
        m          = <dimos_lcm.sensor_msgs.Image.Image object at 0xff35d043c3a0>
        ts         = 1.5
        view       = <memory at 0xff35d10daa40>
.venv/lib/python3.12.../dimos_lcm/sensor_msgs/Image.py:80: in lcm_encode
    self._encode_one(buf)
        buf        = <_io.BytesIO object at 0xff35cfa1ecf0>
        self       = <dimos_lcm.sensor_msgs.Image.Image object at 0xff35d043c3a0>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <dimos_lcm.sensor_msgs.Image.Image object at 0xff35d043c3a0>
buf = <_io.BytesIO object at 0xff35cfa1ecf0>

    def _encode_one(self, buf):
        buf.write(struct.pack(">i", self.data_length))
        assert (
>           self.header._get_packed_fingerprint()
            == common_msgs.SampleHeader._get_packed_fingerprint()
        )
E       AssertionError

buf        = <_io.BytesIO object at 0xff35cfa1ecf0>
self       = <dimos_lcm.sensor_msgs.Image.Image object at 0xff35d043c3a0>

.venv/lib/python3.12.../dimos_lcm/sensor_msgs/Image.py:86: AssertionError
dimos.simulation.habitat.test_server::test_depth_image_round_trip
Stack Traces | 0.002s run time
def test_depth_image_round_trip():
        depth = np.linspace(0.2, 4.5, 8 * 12, dtype=np.float32).reshape(8, 12)
>       out = Image.lcm_decode(server.image_msg(depth, "32FC1", "camera_optical", 1.5))

depth      = array([[        0.2,     0.24526,     0.29053,     0.33579,     0.38105,     0.42632,     0.47158,     0.51684,     0....    4.1832,      4.2284,      4.2737,      4.3189,      4.3642,      4.4095,      4.4547,         4.5]], dtype=float32)

.../simulation/habitat/test_server.py:46: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../simulation/habitat/server.py:97: in image_msg
    return bytes(m.lcm_encode())
        array      = array([[        0.2,     0.24526,     0.29053,     0.33579,     0.38105,     0.42632,     0.47158,     0.51684,     0....    4.1832,      4.2284,      4.2737,      4.3189,      4.3642,      4.4095,      4.4547,         4.5]], dtype=float32)
        channels   = 1
        encoding   = '32FC1'
        frame_id   = 'camera_optical'
        m          = <dimos_lcm.sensor_msgs.Image.Image object at 0xff35cfa06680>
        ts         = 1.5
        view       = <memory at 0xff35d10d9540>
.venv/lib/python3.12.../dimos_lcm/sensor_msgs/Image.py:80: in lcm_encode
    self._encode_one(buf)
        buf        = <_io.BytesIO object at 0xff35cfa34770>
        self       = <dimos_lcm.sensor_msgs.Image.Image object at 0xff35cfa06680>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <dimos_lcm.sensor_msgs.Image.Image object at 0xff35cfa06680>
buf = <_io.BytesIO object at 0xff35cfa34770>

    def _encode_one(self, buf):
        buf.write(struct.pack(">i", self.data_length))
        assert (
>           self.header._get_packed_fingerprint()
            == common_msgs.SampleHeader._get_packed_fingerprint()
        )
E       AssertionError

buf        = <_io.BytesIO object at 0xff35cfa34770>
self       = <dimos_lcm.sensor_msgs.Image.Image object at 0xff35cfa06680>

.venv/lib/python3.12.../dimos_lcm/sensor_msgs/Image.py:86: AssertionError
dimos.simulation.habitat.test_server::test_each_tf_link_keeps_its_own_pose
Stack Traces | 0.002s run time
def test_each_tf_link_keeps_its_own_pose():
        """Regression: the generated bindings share nested defaults between instances.
    
        Mutating ``Transform().translation`` in place made all three links serialize
        the last one's pose, which showed up as the whole map pointing up. Only a
        value check catches it -- the frame names were right the whole time.
        """
        links = [
            ("world", "base_link", (1.0, 2.0, 3.0), (0.0, 0.0, 0.0, 1.0)),
            ("base_link", "camera", (0.0, 0.0, 0.45), (0.0, 0.0, 0.0, 1.0)),
            ("camera", "camera_optical", (0.0, 0.0, 0.0), server.frames.OPTICAL_QUAT_XYZW),
        ]
        by_child = {
>           t.child_frame_id: t for t in TFMessage.lcm_decode(server.tf_msg(links, 1.5)).transforms
        }

links      = [('world', 'base_link', (1.0, 2.0, 3.0), (0.0, 0.0, 0.0, 1.0)), ('base_link', 'camera', (0.0, 0.0, 0.45), (0.0, 0.0, 0.0, 1.0)), ('camera', 'camera_optical', (0.0, 0.0, 0.0), (-0.5, 0.5, -0.5, 0.5))]

.../simulation/habitat/test_server.py:150: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../simulation/habitat/server.py:215: in tf_msg
    return bytes(m.lcm_encode())
        child      = 'camera_optical'
        links      = [('world', 'base_link', (1.0, 2.0, 3.0), (0.0, 0.0, 0.0, 1.0)), ('base_link', 'camera', (0.0, 0.0, 0.45), (0.0, 0.0, 0.0, 1.0)), ('camera', 'camera_optical', (0.0, 0.0, 0.0), (-0.5, 0.5, -0.5, 0.5))]
        m          = <dimos_lcm.tf2_msgs.TFMessage.TFMessage object at 0xff35cfb1de10>
        out        = [<dimos_lcm.geometry_msgs.TransformStamped.TransformStamped object at 0xff35cfe915c0>, <dimos_lcm.geometry_msgs.Transf...tamped object at 0xff35cfe91980>, <dimos_lcm.geometry_msgs.TransformStamped.TransformStamped object at 0xff35cfe90500>]
        parent     = 'camera'
        quat       = (-0.5, 0.5, -0.5, 0.5)
        t          = <dimos_lcm.geometry_msgs.TransformStamped.TransformStamped object at 0xff35cfe90500>
        transform  = <dimos_lcm.geometry_msgs.Transform.Transform object at 0xff35cfb1c9a0>
        ts         = 1.5
        xyz        = (0.0, 0.0, 0.0)
.venv/lib/python3.12.../dimos_lcm/tf2_msgs/TFMessage.py:34: in lcm_encode
    self._encode_one(buf)
        buf        = <_io.BytesIO object at 0xff3564969800>
        self       = <dimos_lcm.tf2_msgs.TFMessage.TFMessage object at 0xff35cfb1de10>
.venv/lib/python3.12.../dimos_lcm/tf2_msgs/TFMessage.py:44: in _encode_one
    self.transforms[i0]._encode_one(buf)
        buf        = <_io.BytesIO object at 0xff3564969800>
        i0         = 0
        self       = <dimos_lcm.tf2_msgs.TFMessage.TFMessage object at 0xff35cfb1de10>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <dimos_lcm.geometry_msgs.TransformStamped.TransformStamped object at 0xff35cfe915c0>
buf = <_io.BytesIO object at 0xff3564969800>

    def _encode_one(self, buf):
        assert (
>           self.header._get_packed_fingerprint()
            == common_msgs.SampleHeader._get_packed_fingerprint()
        )
E       AssertionError

buf        = <_io.BytesIO object at 0xff3564969800>
self       = <dimos_lcm.geometry_msgs.TransformStamped.TransformStamped object at 0xff35cfe915c0>

.venv/lib/python3.12.../dimos_lcm/geometry_msgs/TransformStamped.py:49: AssertionError
dimos.simulation.habitat.test_server::test_empty_cloud_is_valid
Stack Traces | 0.002s run time
def test_empty_cloud_is_valid():
        out = PointCloud2.lcm_decode(
>           server.cloud_msg(np.zeros((0, 3), np.float32), np.zeros((0, 3), np.uint8), "world", 1.0)
        )


.../simulation/habitat/test_server.py:70: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../simulation/habitat/server.py:147: in cloud_msg
    return bytes(m.lcm_encode())
        colors     = array([], shape=(0, 3), dtype=uint8)
        frame_id   = 'world'
        m          = <dimos_lcm.sensor_msgs.PointCloud2.PointCloud2 object at 0xff35cfbe36c0>
        points     = array([], shape=(0, 3), dtype=float32)
        ts         = 1.0
.venv/lib/python3.12.../dimos_lcm/sensor_msgs/PointCloud2.py:112: in lcm_encode
    self._encode_one(buf)
        buf        = <_io.BytesIO object at 0xff35649a4b30>
        self       = <dimos_lcm.sensor_msgs.PointCloud2.PointCloud2 object at 0xff35cfbe36c0>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <dimos_lcm.sensor_msgs.PointCloud2.PointCloud2 object at 0xff35cfbe36c0>
buf = <_io.BytesIO object at 0xff35649a4b30>

    def _encode_one(self, buf):
        buf.write(struct.pack(">ii", self.fields_length, self.data_length))
        assert (
>           self.header._get_packed_fingerprint()
            == common_msgs.SampleHeader._get_packed_fingerprint()
        )
E       AssertionError

buf        = <_io.BytesIO object at 0xff35649a4b30>
self       = <dimos_lcm.sensor_msgs.PointCloud2.PointCloud2 object at 0xff35cfbe36c0>

.venv/lib/python3.12.../dimos_lcm/sensor_msgs/PointCloud2.py:118: AssertionError
dimos.simulation.habitat.test_server::test_tf_chain_puts_the_camera_looking_forward
Stack Traces | 0.002s run time
def test_tf_chain_puts_the_camera_looking_forward():
        """Composing the published chain must aim optical +z along world +x, not +z."""
        yaw = 0.0
        links = [
            ("world", "base_link", (0.0, 0.0, 0.0), (0.0, 0.0, np.sin(yaw / 2), np.cos(yaw / 2))),
            ("base_link", "camera", (0.0, 0.0, 0.45), (0.0, 0.0, 0.0, 1.0)),
            ("camera", "camera_optical", (0.0, 0.0, 0.0), server.frames.OPTICAL_QUAT_XYZW),
        ]
        by_child = {
>           t.child_frame_id: t for t in TFMessage.lcm_decode(server.tf_msg(links, 1.5)).transforms
        }

links      = [('world', 'base_link', (0.0, 0.0, 0.0), (0.0, 0.0, np.float64(0.0), np.float64(1.0))), ('base_link', 'camera', (0.0, 0.0, 0.45), (0.0, 0.0, 0.0, 1.0)), ('camera', 'camera_optical', (0.0, 0.0, 0.0), (-0.5, 0.5, -0.5, 0.5))]
yaw        = 0.0

.../simulation/habitat/test_server.py:185: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../simulation/habitat/server.py:215: in tf_msg
    return bytes(m.lcm_encode())
        child      = 'camera_optical'
        links      = [('world', 'base_link', (0.0, 0.0, 0.0), (0.0, 0.0, np.float64(0.0), np.float64(1.0))), ('base_link', 'camera', (0.0, 0.0, 0.45), (0.0, 0.0, 0.0, 1.0)), ('camera', 'camera_optical', (0.0, 0.0, 0.0), (-0.5, 0.5, -0.5, 0.5))]
        m          = <dimos_lcm.tf2_msgs.TFMessage.TFMessage object at 0xff35cfb29c30>
        out        = [<dimos_lcm.geometry_msgs.TransformStamped.TransformStamped object at 0xff35d04d4e40>, <dimos_lcm.geometry_msgs.Transf...tamped object at 0xff35d04d62c0>, <dimos_lcm.geometry_msgs.TransformStamped.TransformStamped object at 0xff35d04d6100>]
        parent     = 'camera'
        quat       = (-0.5, 0.5, -0.5, 0.5)
        t          = <dimos_lcm.geometry_msgs.TransformStamped.TransformStamped object at 0xff35d04d6100>
        transform  = <dimos_lcm.geometry_msgs.Transform.Transform object at 0xff35cfb282b0>
        ts         = 1.5
        xyz        = (0.0, 0.0, 0.0)
.venv/lib/python3.12.../dimos_lcm/tf2_msgs/TFMessage.py:34: in lcm_encode
    self._encode_one(buf)
        buf        = <_io.BytesIO object at 0xff356496a570>
        self       = <dimos_lcm.tf2_msgs.TFMessage.TFMessage object at 0xff35cfb29c30>
.venv/lib/python3.12.../dimos_lcm/tf2_msgs/TFMessage.py:44: in _encode_one
    self.transforms[i0]._encode_one(buf)
        buf        = <_io.BytesIO object at 0xff356496a570>
        i0         = 0
        self       = <dimos_lcm.tf2_msgs.TFMessage.TFMessage object at 0xff35cfb29c30>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <dimos_lcm.geometry_msgs.TransformStamped.TransformStamped object at 0xff35d04d4e40>
buf = <_io.BytesIO object at 0xff356496a570>

    def _encode_one(self, buf):
        assert (
>           self.header._get_packed_fingerprint()
            == common_msgs.SampleHeader._get_packed_fingerprint()
        )
E       AssertionError

buf        = <_io.BytesIO object at 0xff356496a570>
self       = <dimos_lcm.geometry_msgs.TransformStamped.TransformStamped object at 0xff35d04d4e40>

.venv/lib/python3.12.../dimos_lcm/geometry_msgs/TransformStamped.py:49: AssertionError
dimos.simulation.habitat.test_server::test_tf_round_trip_carries_the_optical_link
Stack Traces | 0.002s run time
def test_tf_round_trip_carries_the_optical_link():
        links = [
            ("world", "base_link", (1.0, 2.0, 0.0), (0.0, 0.0, 0.0, 1.0)),
            ("base_link", "camera", (0.0, 0.0, 0.45), (0.0, 0.0, 0.0, 1.0)),
            ("camera", "camera_optical", (0.0, 0.0, 0.0), server.frames.OPTICAL_QUAT_XYZW),
        ]
>       out = TFMessage.lcm_decode(server.tf_msg(links, 1.5))

links      = [('world', 'base_link', (1.0, 2.0, 0.0), (0.0, 0.0, 0.0, 1.0)), ('base_link', 'camera', (0.0, 0.0, 0.45), (0.0, 0.0, 0.0, 1.0)), ('camera', 'camera_optical', (0.0, 0.0, 0.0), (-0.5, 0.5, -0.5, 0.5))]

.../simulation/habitat/test_server.py:131: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../simulation/habitat/server.py:215: in tf_msg
    return bytes(m.lcm_encode())
        child      = 'camera_optical'
        links      = [('world', 'base_link', (1.0, 2.0, 0.0), (0.0, 0.0, 0.0, 1.0)), ('base_link', 'camera', (0.0, 0.0, 0.45), (0.0, 0.0, 0.0, 1.0)), ('camera', 'camera_optical', (0.0, 0.0, 0.0), (-0.5, 0.5, -0.5, 0.5))]
        m          = <dimos_lcm.tf2_msgs.TFMessage.TFMessage object at 0xff35cfb1c640>
        out        = [<dimos_lcm.geometry_msgs.TransformStamped.TransformStamped object at 0xff35d00a2cc0>, <dimos_lcm.geometry_msgs.Transf...tamped object at 0xff35d00a35c0>, <dimos_lcm.geometry_msgs.TransformStamped.TransformStamped object at 0xff35d00a2980>]
        parent     = 'camera'
        quat       = (-0.5, 0.5, -0.5, 0.5)
        t          = <dimos_lcm.geometry_msgs.TransformStamped.TransformStamped object at 0xff35d00a2980>
        transform  = <dimos_lcm.geometry_msgs.Transform.Transform object at 0xff35cfb1c280>
        ts         = 1.5
        xyz        = (0.0, 0.0, 0.0)
.venv/lib/python3.12.../dimos_lcm/tf2_msgs/TFMessage.py:34: in lcm_encode
    self._encode_one(buf)
        buf        = <_io.BytesIO object at 0xff35649a7bf0>
        self       = <dimos_lcm.tf2_msgs.TFMessage.TFMessage object at 0xff35cfb1c640>
.venv/lib/python3.12.../dimos_lcm/tf2_msgs/TFMessage.py:44: in _encode_one
    self.transforms[i0]._encode_one(buf)
        buf        = <_io.BytesIO object at 0xff35649a7bf0>
        i0         = 0
        self       = <dimos_lcm.tf2_msgs.TFMessage.TFMessage object at 0xff35cfb1c640>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <dimos_lcm.geometry_msgs.TransformStamped.TransformStamped object at 0xff35d00a2cc0>
buf = <_io.BytesIO object at 0xff35649a7bf0>

    def _encode_one(self, buf):
        assert (
>           self.header._get_packed_fingerprint()
            == common_msgs.SampleHeader._get_packed_fingerprint()
        )
E       AssertionError

buf        = <_io.BytesIO object at 0xff35649a7bf0>
self       = <dimos_lcm.geometry_msgs.TransformStamped.TransformStamped object at 0xff35d00a2cc0>

.venv/lib/python3.12.../dimos_lcm/geometry_msgs/TransformStamped.py:49: AssertionError
dimos.web.test_lcm_codec::test_golden_vector[joint_state]
Stack Traces | 0.007s run time
vec = {'encoding': 'sensor_msgs.JointState.lcm.v1', 'name': 'joint_state', 'payload_b64': 'zO+opJK5Z+MAAAADAAAAAwAAAAMAAAADA...one]], 'std_msgs.Time': [['sec', 'int32_t', None], ['nsec', 'int32_t', None]]}, 'type': 'sensor_msgs.JointState'}, ...}

    @pytest.mark.parametrize("vec", VECTORS, ids=lambda v: v["name"])
    def test_golden_vector(vec: dict[str, Any]) -> None:
        msg = MESSAGES[vec["name"]]
        generated = schema_class_for(type(msg))
        assert vec["encoding"] == default_encoding(type(msg), "rx")
>       assert export_schema(generated) == vec["schema"]
E       AssertionError: assert {'fp': 'b4f25...s.JointState'} == {'fp': 'ccefa...s.JointState'}
E         
E         Omitting 1 identical items, use -vv to show
E         Differing items:
E         #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mfp#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[33m'#x1B[39;49;00m#x1B[33mb4f25117c0c33bba#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m != #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mfp#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[33m'#x1B[39;49;00m#x1B[33mccefa8a492b967e3#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m
E         #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mstructs#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: {#x1B[33m'#x1B[39;49;00m#x1B[33mcommon_msgs.SampleHeader#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: [[#x1B[33m'#x1B[39;49;00m#x1B[33mclock_id#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mstring#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mepoch#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint64_t#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mtime_ns#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint64...rt_length#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint32_t#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mheader#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mcommon_msgs.SampleHeader#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mname#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mstring#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, [#x1B[33m'#x1B[39;49;00m#x1B[33mname_length#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m]], ...]}}#x1B[90m#x1B[39;49;00m != #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mstructs#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: {#x1B[33m'#x1B[39;49;00m#x1B[33msensor_msgs.JointState#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: [[#x1B[33m'#x1B[39;49;00m#x1B[33mname_length#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint32_t#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mposition_length#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint32_t#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mvelo...s.Time#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mframe_id#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mstring#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m]], #x1B[33m'#x1B[39;49;00m#x1B[33mstd_msgs.Time#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: [[#x1B[33m'#x1B[39;49;00m#x1B[33msec#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint32_t#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mnsec#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint32_t#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m]]}}#x1B[90m#x1B[39;49;00m
E         
E         Full diff:
E         #x1B[0m#x1B[90m #x1B[39;49;00m {#x1B[90m#x1B[39;49;00m
E         #x1B[91m-     'fp': 'ccefa8a492b967e3',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+     'fp': 'b4f25117c0c33bba',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m     'structs': {#x1B[90m#x1B[39;49;00m
E         #x1B[92m+         'common_msgs.SampleHeader': [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'clock_id',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'string',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'epoch',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'int64_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'time_ns',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'int64_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'source_id',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'string',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'sequence',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'int64_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'frame_id',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'string',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+         ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         'sensor_msgs.JointState': [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'name_length',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'int32_t',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'position_length',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'int32_t',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'velocity_length',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'int32_t',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'effort_length',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'int32_t',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'header',#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'std_msgs.Header',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         ?                  ^^^#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'common_msgs.SampleHeader',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         ?                  ^^^^^^      ++++++#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'name',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'string',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                     'name_length',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'position',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                     'position_length',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'velocity',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                     'velocity_length',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'effort',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                     'effort_length',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         ],#x1B[90m#x1B[39;49;00m
E         #x1B[91m-         'std_msgs.Header': [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'seq',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'int32_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'stamp',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'std_msgs.Time',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'frame_id',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'string',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-         ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-         'std_msgs.Time': [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'sec',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'int32_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'nsec',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'int32_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-         ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m     },#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m     'type': 'sensor_msgs.JointState',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m }#x1B[90m#x1B[39;49;00m

generated  = <class 'dimos_lcm.sensor_msgs.JointState.JointState'>
msg        = JointState(ts=1757400000.5, frame_id='arm', name=['shoulder', 'elbow', 'wrist_é'], position=[0.1, -0.2, 0.3], velocity=[0.01, 0.02, 0.03], effort=[1.0, 2.0, 3.0])
vec        = {'encoding': 'sensor_msgs.JointState.lcm.v1', 'name': 'joint_state', 'payload_b64': 'zO+opJK5Z+MAAAADAAAAAwAAAAMAAAADA...one]], 'std_msgs.Time': [['sec', 'int32_t', None], ['nsec', 'int32_t', None]]}, 'type': 'sensor_msgs.JointState'}, ...}

dimos/web/test_lcm_codec.py:131: AssertionError
dimos.web.test_lcm_codec::test_golden_vector[point_cloud]
Stack Traces | 0.007s run time
vec = {'encoding': 'sensor_msgs.PointCloud2.lcm.v1', 'name': 'point_cloud', 'payload_b64': '9es9ocKFMXUAAAADAAAAGAAAAABov8vA...ne]], 'std_msgs.Time': [['sec', 'int32_t', None], ['nsec', 'int32_t', None]]}, 'type': 'sensor_msgs.PointCloud2'}, ...}

    @pytest.mark.parametrize("vec", VECTORS, ids=lambda v: v["name"])
    def test_golden_vector(vec: dict[str, Any]) -> None:
        msg = MESSAGES[vec["name"]]
        generated = schema_class_for(type(msg))
        assert vec["encoding"] == default_encoding(type(msg), "rx")
>       assert export_schema(generated) == vec["schema"]
E       AssertionError: assert {'fp': 'ddede....PointCloud2'} == {'fp': 'f5eb3....PointCloud2'}
E         
E         Omitting 1 identical items, use -vv to show
E         Differing items:
E         #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mfp#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[33m'#x1B[39;49;00m#x1B[33mddede614f08f054c#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m != #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mfp#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[33m'#x1B[39;49;00m#x1B[33mf5eb3da1c2853175#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m
E         #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mstructs#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: {#x1B[33m'#x1B[39;49;00m#x1B[33mcommon_msgs.SampleHeader#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: [[#x1B[33m'#x1B[39;49;00m#x1B[33mclock_id#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mstring#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mepoch#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint64_t#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mtime_ns#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint64...eld#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: [[#x1B[33m'#x1B[39;49;00m#x1B[33mname#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mstring#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33moffset#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint32_t#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mdatatype#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mbyte#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mcount#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint32_t#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m]]}}#x1B[90m#x1B[39;49;00m != #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mstructs#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: {#x1B[33m'#x1B[39;49;00m#x1B[33msensor_msgs.PointCloud2#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: [[#x1B[33m'#x1B[39;49;00m#x1B[33mfields_length#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint32_t#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mdata_length#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint32_t#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mheade...s.Time#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mframe_id#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mstring#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m]], #x1B[33m'#x1B[39;49;00m#x1B[33mstd_msgs.Time#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: [[#x1B[33m'#x1B[39;49;00m#x1B[33msec#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint32_t#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mnsec#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint32_t#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m]]}}#x1B[90m#x1B[39;49;00m
E         
E         Full diff:
E         #x1B[0m#x1B[90m #x1B[39;49;00m {#x1B[90m#x1B[39;49;00m
E         #x1B[91m-     'fp': 'f5eb3da1c2853175',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+     'fp': 'ddede614f08f054c',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m     'structs': {#x1B[90m#x1B[39;49;00m
E         #x1B[92m+         'common_msgs.SampleHeader': [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'clock_id',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'string',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'epoch',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'int64_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'time_ns',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'int64_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'source_id',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'string',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'sequence',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'int64_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'frame_id',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'string',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+         ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         'sensor_msgs.PointCloud2': [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'fields_length',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'int32_t',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'data_length',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'int32_t',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'header',#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'std_msgs.Header',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         ?                  ^^^#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'common_msgs.SampleHeader',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         ?                  ^^^^^^      ++++++#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'height',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'int32_t',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'width',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'int32_t',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'fields',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'sensor_msgs.PointField',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                     'fields_length',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'is_bigendian',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'boolean',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'point_step',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'int32_t',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'row_step',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'int32_t',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'data',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'byte',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                     'data_length',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'is_dense',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'boolean',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         'sensor_msgs.PointField': [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'name',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'string',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'offset',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'int32_t',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'datatype',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'byte',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'count',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'int32_t',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         ],#x1B[90m#x1B[39;49;00m
E         #x1B[91m-         'std_msgs.Header': [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'seq',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'int32_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'stamp',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'std_msgs.Time',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'frame_id',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'string',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-         ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-         'std_msgs.Time': [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'sec',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'int32_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'nsec',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'int32_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-         ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m     },#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m     'type': 'sensor_msgs.PointCloud2',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m }#x1B[90m#x1B[39;49;00m

generated  = <class 'dimos_lcm.sensor_msgs.PointCloud2.PointCloud2'>
msg        = <dimos_lcm.sensor_msgs.PointCloud2.PointCloud2 object at 0xff10a7b7c540>
vec        = {'encoding': 'sensor_msgs.PointCloud2.lcm.v1', 'name': 'point_cloud', 'payload_b64': '9es9ocKFMXUAAAADAAAAGAAAAABov8vA...ne]], 'std_msgs.Time': [['sec', 'int32_t', None], ['nsec', 'int32_t', None]]}, 'type': 'sensor_msgs.PointCloud2'}, ...}

dimos/web/test_lcm_codec.py:131: AssertionError
dimos.web.test_lcm_codec::test_golden_vector[tf_message]
Stack Traces | 0.008s run time
vec = {'encoding': 'tf2_msgs.TFMessage.lcm.v1', 'name': 'tf_message', 'payload_b64': 'wrihwzqJI+wAAAACAAAAAWi/y8AdzWUAAAAABG...tor3': [['x', 'double', None], ['y', 'double', None], ['z', 'double', None]], ...}, 'type': 'tf2_msgs.TFMessage'}, ...}

    @pytest.mark.parametrize("vec", VECTORS, ids=lambda v: v["name"])
    def test_golden_vector(vec: dict[str, Any]) -> None:
        msg = MESSAGES[vec["name"]]
        generated = schema_class_for(type(msg))
        assert vec["encoding"] == default_encoding(type(msg), "rx")
>       assert export_schema(generated) == vec["schema"]
E       AssertionError: assert {'fp': '92bdf...gs.TFMessage'} == {'fp': 'c2b8a...gs.TFMessage'}
E         
E         Omitting 1 identical items, use -vv to show
E         Differing items:
E         #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mfp#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[33m'#x1B[39;49;00m#x1B[33m92bdf2a9969ccb9e#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m != #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mfp#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[33m'#x1B[39;49;00m#x1B[33mc2b8a1c33a8923ec#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m
E         #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mstructs#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: {#x1B[33m'#x1B[39;49;00m#x1B[33mcommon_msgs.SampleHeader#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: [[#x1B[33m'#x1B[39;49;00m#x1B[33mclock_id#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mstring#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mepoch#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint64_t#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mtime_ns#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint64...n_msgs.SampleHeader#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mchild_frame_id#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mstring#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mtransform#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mgeometry_msgs.Transform#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m]], ...}}#x1B[90m#x1B[39;49;00m != #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mstructs#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: {#x1B[33m'#x1B[39;49;00m#x1B[33mgeometry_msgs.Quaternion#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: [[#x1B[33m'#x1B[39;49;00m#x1B[33mx#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mdouble#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33my#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mdouble#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mz#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mdouble#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mw#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33m...ansform#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m]], #x1B[33m'#x1B[39;49;00m#x1B[33mgeometry_msgs.Vector3#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: [[#x1B[33m'#x1B[39;49;00m#x1B[33mx#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mdouble#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33my#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mdouble#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mz#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mdouble#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m]], ...}}#x1B[90m#x1B[39;49;00m
E         
E         Full diff:
E         #x1B[0m#x1B[90m #x1B[39;49;00m {#x1B[90m#x1B[39;49;00m
E         #x1B[91m-     'fp': 'c2b8a1c33a8923ec',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+     'fp': '92bdf2a9969ccb9e',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m     'structs': {#x1B[90m#x1B[39;49;00m
E         #x1B[92m+         'common_msgs.SampleHeader': [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'clock_id',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'string',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'epoch',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'int64_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'time_ns',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'int64_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'source_id',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'string',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'sequence',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'int64_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'frame_id',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'string',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+         ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         'geometry_msgs.Quaternion': [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'x',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'y',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'z',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'w',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         'geometry_msgs.Transform': [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'translation',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'geometry_msgs.Vector3',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'rotation',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'geometry_msgs.Quaternion',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         'geometry_msgs.TransformStamped': [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'header',#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'std_msgs.Header',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         ?                  ^^^#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'common_msgs.SampleHeader',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         ?                  ^^^^^^      ++++++#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'child_frame_id',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'string',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'transform',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'geometry_msgs.Transform',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         'geometry_msgs.Vector3': [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'x',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'y',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'z',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         ],#x1B[90m#x1B[39;49;00m
E         #x1B[91m-         'std_msgs.Header': [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'seq',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'int32_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'stamp',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'std_msgs.Time',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'frame_id',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'string',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-         ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-         'std_msgs.Time': [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'sec',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'int32_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'nsec',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'int32_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-         ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         'tf2_msgs.TFMessage': [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'transforms_length',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'int32_t',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'transforms',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'geometry_msgs.TransformStamped',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                     'transforms_length',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m     },#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m     'type': 'tf2_msgs.TFMessage',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m }#x1B[90m#x1B[39;49;00m

generated  = <class 'dimos_lcm.tf2_msgs.TFMessage.TFMessage'>
msg        = TFMessage(2 transforms)
vec        = {'encoding': 'tf2_msgs.TFMessage.lcm.v1', 'name': 'tf_message', 'payload_b64': 'wrihwzqJI+wAAAACAAAAAWi/y8AdzWUAAAAABG...tor3': [['x', 'double', None], ['y', 'double', None], ['z', 'double', None]], ...}, 'type': 'tf2_msgs.TFMessage'}, ...}

dimos/web/test_lcm_codec.py:131: AssertionError
dimos.msgs.test_lcm_definitions::test_dimos_lcm_packages_hold_only_dimos_lcm_messages
Stack Traces | 0.013s run time
def test_dimos_lcm_packages_hold_only_dimos_lcm_messages() -> None:
        missing = set()
        for path in MSGS.glob("*/*.py"):
            if path.name.startswith(("test_", "tool_", "_")):
                continue
            package, name = path.parent.name, path.stem
            if importlib.util.find_spec(f"dimos_lcm.{package}") is None:
                continue  # a dimos-only package, free to add to
            try:
                lcm_msg_type(f"{package}.{name}")
            except ImportError:
                missing.add(f"{package}.{name}")
        new = sorted(missing - KNOWN)
        packages = sorted({m.split(".")[0] for m in new})
>       assert not new, (
            f"{new} are not defined in dimos-lcm.\n"
            f"{packages} mirror ROS packages from dimos-lcm, which generates every language's "
            "bindings from them, so nothing new goes in there.\n"
            "New messages can be added temporarily, but not in a ROS package:\n"
            "  - first look for an existing ROS message that fits, often one already does\n"
            "  - the right way: add it to dimos-lcm, new ROS namespaces are welcome there\n"
            "  - meanwhile, a package dimos-lcm doesn't have, e.g. dimos/msgs/<yours>_msgs/\n",
            "but keep in mind, this breaks native module support so a lot of the system will not work with it and it will be removed eventually.\n",
        )
E       AssertionError: ("['sim_msgs.Contacts'] are not defined in dimos-lcm.
E         ['sim_msgs'] mirror ROS packages from dimos-lcm, which generates every language's bindings from them, so nothing new goes in there.
E         New messages can be added temporarily, but not in a ROS package:
E           - first look for an existing ROS message that fits, often one already does
E           - the right way: add it to dimos-lcm, new ROS namespaces are welcome there
E           - meanwhile, a package dimos-lcm doesn't have, e.g. dimos/msgs/<yours>_msgs/
E         ", 'but keep in mind, this breaks native module support so a lot of the system will not work with it and it will be removed eventually.
E         ')
E       assert not ['sim_msgs.Contacts']

missing    = {'nav_msgs.LineSegments3D', 'sensor_msgs.ImuInfo', 'sensor_msgs.JointCommand', 'sensor_msgs.MotorCommandArray', 'sensor_msgs.RobotState', 'shape_msgs.TriangleMesh', ...}
name       = 'GraspCandidateArray'
new        = ['sim_msgs.Contacts']
package    = 'manipulation_msgs'
packages   = ['sim_msgs']
path       = PosixPath('.../msgs/manipulation_msgs/test_grasp_candidate.py')

dimos/msgs/test_lcm_definitions.py:56: AssertionError
dimos.codebase_checks.test_docs_branding::test_docs_use_current_branding
Stack Traces | 0.017s run time
def test_docs_use_current_branding() -> None:
        """Fail if any file under docs/ spells the brand "DimOS" instead of "dimOS"."""
        hits = find_old_branding()
        if hits:
            listing = "\n".join(
                f"  - {p.relative_to(DIMOS_PROJECT_ROOT)}:{lineno}: {line.strip()}"
                for p, lineno, line in hits
            )
>           raise AssertionError(f'Found "DimOS" in docs/:\n{listing}\n\nThe brand is spelled "dimOS".')
E           AssertionError: Found "DimOS" in docs/:
E             - .../development/sim2/README.md:90: DimOS blueprints. Backend tests exercise native physics directly.
E             - .../development/sim2/README.md:168: Backend/sensor component checks: 20 passed. Deployed DimOS module/evaluation
E           
E           The brand is spelled "dimOS".

hits       = [(PosixPath('/home/runner/work/dimos/dimos/.../development/sim2/README.md'), 90, 'DimOS blueprints. Backend tests exe....../development/sim2/README.md'), 168, 'Backend/sensor component checks: 20 passed. Deployed DimOS module/evaluation')]
listing    = '  - .../development/sim2/README.md:90: DimOS blueprints. Backend tests exercise native physics directly.\n  - .../development/sim2/README.md:168: Backend/sensor component checks: 20 passed. Deployed DimOS module/evaluation'

dimos/codebase_checks/test_docs_branding.py:43: AssertionError
dimos.sim2.sensors.camera.test_camera::test_camera_renders_recorded_body_poses_without_physics_state
Stack Traces | 0.046s run time
world = SceneConfig(instances=(Instance(id='left', model=RobotModel(_source_path=PosixPath('.../pytest-of-runner/pytest-0/pop..._prefix='door/'), xyz=(0.6, 0.4, 0), floating=False, drives=(), rpy=(0.0, 0.0, 0.0))), gravity_world=(0.0, 0.0, -9.81))

    @pytest.fixture
    def renderer(world):
        renderer = MujocoRenderer()
>       renderer.load(world, CameraConfig("left/camera"))

renderer   = <dimos.sim2.sensors.camera.renderers.mujoco.MujocoRenderer object at 0xffad0b215cd0>
world      = SceneConfig(instances=(Instance(id='left', model=RobotModel(_source_path=PosixPath('.../pytest-of-runner/pytest-0/pop..._prefix='door/'), xyz=(0.6, 0.4, 0), floating=False, drives=(), rpy=(0.0, 0.0, 0.0))), gravity_world=(0.0, 0.0, -9.81))

.../sensors/camera/test_camera.py:27: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../camera/renderers/mujoco.py:50: in load
    self.renderer = mujoco.Renderer(
        camera     = CameraConfig(frame_id='left/camera', source_id='camera', hz=15, width=320, height=240, fx=188.36, fy=188.36, cx=160, cy=120)
        scene      = SceneConfig(instances=(Instance(id='left', model=RobotModel(_source_path=PosixPath('.../pytest-of-runner/pytest-0/pop..._prefix='door/'), xyz=(0.6, 0.4, 0), floating=False, drives=(), rpy=(0.0, 0.0, 0.0))), gravity_world=(0.0, 0.0, -9.81))
        self       = <dimos.sim2.sensors.camera.renderers.mujoco.MujocoRenderer object at 0xffad0b215cd0>
        spec       = <mujoco._specs.MjSpec object at 0xffacf0722ab0>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <mujoco.rendering.classic.renderer.Renderer object at 0xffacf32f2900>
model = <mujoco._structs.MjModel object at 0xffad08850af0>, height = 240
width = 320, max_geom = 10000, font_scale = <mjtFontScale.mjFONTSCALE_150: 150>

      def __init__(
          self,
          model: mujoco.MjModel,
          height: int = 240,
          width: int = 320,
          max_geom: int = 10000,
          font_scale: mujoco.mjtFontScale = mujoco.mjtFontScale.mjFONTSCALE_150,
      ) -> None:
        """Initializes a new `Renderer`.
    
        Args:
          model: an MjModel instance.
          height: image height in pixels.
          width: image width in pixels.
          max_geom: Optional integer specifying the maximum number of geoms that can
            be rendered in the same scene. If None this will be chosen automatically
            based on the estimated maximum number of renderable geoms in the model.
          font_scale: Optional enum specifying the font scale for text.
    
        Raises:
          ValueError: If `camera_id` is outside the valid range, or if `width` or
            `height` exceed the dimensions of MuJoCo's offscreen framebuffer.
        """
        # Pre-initialize context attributes so __del__ -> close() is safe even if
        # __init__ raises below before they are assigned. See #3213.
        self._gl_context = None  # type: ignore
        self._mjr_context = None
    
        buffer_width = model.vis.global_.offwidth
        buffer_height = model.vis.global_.offheight
        if width > buffer_width:
          raise ValueError(f"""
    Image width {width} > framebuffer width {buffer_width}. Either reduce the image
    width or specify a larger offscreen framebuffer in the model XML using the
    clause:
    <visual>
      <global offwidth="my_width"/>
    </visual>""".lstrip())
    
        if height > buffer_height:
          raise ValueError(f"""
    Image height {height} > framebuffer height {buffer_height}. Either reduce the
    image height or specify a larger offscreen framebuffer in the model XML using
    the clause:
    <visual>
      <global offheight="my_height"/>
    </visual>""".lstrip())
    
        self._width = width
        self._height = height
        self._model = model
    
        self._scene = mujoco.MjvScene(model=model, maxgeom=max_geom)
        self._scene_option = mujoco.MjvOption()
    
        self._rect = mujoco.MjrRect(0, 0, self._width, self._height)
    
        # Create render contexts.
        # TODO(nimrod): Figure out why pytype doesn't like gl_context.GLContext
        if gl_context.GLContext is not None:
          self._gl_context = gl_context.GLContext(width, height)  # type: ignore
        if self._gl_context:
          self._gl_context.make_current()
>       self._mjr_context = mujoco.MjrContext(model, font_scale.value)
E       mujoco.FatalError: gladLoadGL error

buffer_height = 240
buffer_width = 320
font_scale = <mjtFontScale.mjFONTSCALE_150: 150>
height     = 240
max_geom   = 10000
model      = <mujoco._structs.MjModel object at 0xffad08850af0>
self       = <mujoco.rendering.classic.renderer.Renderer object at 0xffacf32f2900>
width      = 320

.venv/lib/python3.12.../rendering/classic/renderer.py:92: FatalError
experimental.gateway.tests.test_config::test_every_registered_blueprint_is_annotated
Stack Traces | 0.13s run time
def test_every_registered_blueprint_is_annotated() -> None:
        source = annotation_file.load()
        annotated = {name for robot in source["robots"].values() for name in robot["blueprints"]}
        missing = sorted(
            name
            for name in all_blueprints
            if name not in annotated and not annotation_file.HIDDEN_NAME.search(name)
        )
>       assert not missing, f"add these to experimental/gateway/annotations.yaml: {', '.join(missing)}"
E       AssertionError: add these to experimental/gateway/annotations.yaml: sim2-basic, unitree-g1-sim2
E       assert not ['sim2-basic', 'unitree-g1-sim2']

annotated  = {'a1z-planner-coordinator', 'alfred-keyboard-teleop', 'alfred-mls-nav', 'alfred-mls-nav-lidar', 'alfred-nav', 'coordinator-a1z', ...}
missing    = ['sim2-basic', 'unitree-g1-sim2']
source     = {'robots': {'a1z': {'blueprints': {'a1z-planner-coordinator': {'description': 'Motion planning and execution for a Gal...': {'label': 'Arms'}, 'dog': {'label': 'Dogs'}, 'drone': {'label': 'Drones'}, 'humanoid': {'label': 'Humanoids'}, ...}}

.../gateway/tests/test_config.py:255: AssertionError
dimos.web.test_lcm_codec::test_golden_vector[imu]
Stack Traces | 0.174s run time
vec = {'encoding': 'sensor_msgs.Imu.lcm.v1', 'name': 'imu', 'payload_b64': 'MasgXI3VeqgAAAAAaL/LwB3NZQAAAAAEaW11AAAAAAAAAAAA...nt32_t', None], ['stamp', 'std_msgs.Time', None], ['frame_id', 'string', None]], ...}, 'type': 'sensor_msgs.Imu'}, ...}

    @pytest.mark.parametrize("vec", VECTORS, ids=lambda v: v["name"])
    def test_golden_vector(vec: dict[str, Any]) -> None:
        msg = MESSAGES[vec["name"]]
        generated = schema_class_for(type(msg))
        assert vec["encoding"] == default_encoding(type(msg), "rx")
>       assert export_schema(generated) == vec["schema"]
E       AssertionError: assert {'fp': '19adc...sor_msgs.Imu'} == {'fp': '31ab2...sor_msgs.Imu'}
E         
E         Omitting 1 identical items, use -vv to show
E         Differing items:
E         #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mfp#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[33m'#x1B[39;49;00m#x1B[33m19adc8cfbbdf4e81#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m != #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mfp#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: #x1B[33m'#x1B[39;49;00m#x1B[33m31ab205c8dd57aa8#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m}#x1B[90m#x1B[39;49;00m
E         #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mstructs#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: {#x1B[33m'#x1B[39;49;00m#x1B[33mcommon_msgs.SampleHeader#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: [[#x1B[33m'#x1B[39;49;00m#x1B[33mclock_id#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mstring#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mepoch#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint64_t#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mtime_ns#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mint64..., None], [#x1B[39;49;00m#x1B[33m'#x1B[39;49;00mangular_velocity_covariance#x1B[33m'#x1B[39;49;00m#x1B[33m, #x1B[39;49;00m#x1B[33m'#x1B[39;49;00mdouble#x1B[33m'#x1B[39;49;00m#x1B[33m, [9]], [#x1B[39;49;00m#x1B[33m'#x1B[39;49;00mlinear_acceleration#x1B[33m'#x1B[39;49;00m#x1B[33m, #x1B[39;49;00m#x1B[33m'#x1B[39;49;00mgeometry_msgs.Vector3#x1B[33m'#x1B[39;49;00m#x1B[33m, None], ...]}}#x1B[39;49;00m#x1B[90m#x1B[39;49;00m != #x1B[0m{#x1B[33m'#x1B[39;49;00m#x1B[33mstructs#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: {#x1B[33m'#x1B[39;49;00m#x1B[33mgeometry_msgs.Quaternion#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m: [[#x1B[33m'#x1B[39;49;00m#x1B[33mx#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mdouble#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33my#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mdouble#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mz#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33mdouble#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[94mNone#x1B[39;49;00m], [#x1B[33m'#x1B[39;49;00m#x1B[33mw#x1B[39;49;00m#x1B[33m'#x1B[39;49;00m, #x1B[33m'#x1B[39;49;00m#x1B[33m...], #x1B[39;49;00m#x1B[33m'#x1B[39;49;00mstd_msgs.Header#x1B[33m'#x1B[39;49;00m#x1B[33m: [[#x1B[39;49;00m#x1B[33m'#x1B[39;49;00mseq#x1B[33m'#x1B[39;49;00m#x1B[33m, #x1B[39;49;00m#x1B[33m'#x1B[39;49;00mint32_t#x1B[33m'#x1B[39;49;00m#x1B[33m, None], [#x1B[39;49;00m#x1B[33m'#x1B[39;49;00mstamp#x1B[33m'#x1B[39;49;00m#x1B[33m, #x1B[39;49;00m#x1B[33m'#x1B[39;49;00mstd_msgs.Time#x1B[33m'#x1B[39;49;00m#x1B[33m, None], [#x1B[39;49;00m#x1B[33m'#x1B[39;49;00mframe_id#x1B[33m'#x1B[39;49;00m#x1B[33m, #x1B[39;49;00m#x1B[33m'#x1B[39;49;00mstring#x1B[33m'#x1B[39;49;00m#x1B[33m, None]], ...}}#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         
E         Full diff:
E         #x1B[0m#x1B[90m #x1B[39;49;00m {#x1B[90m#x1B[39;49;00m
E         #x1B[91m-     'fp': '31ab205c8dd57aa8',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+     'fp': '19adc8cfbbdf4e81',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m     'structs': {#x1B[90m#x1B[39;49;00m
E         #x1B[92m+         'common_msgs.SampleHeader': [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'clock_id',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'string',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'epoch',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'int64_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'time_ns',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'int64_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'source_id',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'string',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'sequence',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'int64_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'frame_id',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'string',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[92m+         ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         'geometry_msgs.Quaternion': [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'x',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'y',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'z',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'w',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         'geometry_msgs.Vector3': [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'x',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'y',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'z',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         'sensor_msgs.Imu': [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'header',#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'std_msgs.Header',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         ?                  ^^^#x1B[90m#x1B[39;49;00m
E         #x1B[92m+                 'common_msgs.SampleHeader',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         ?                  ^^^^^^      ++++++#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'orientation',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'geometry_msgs.Quaternion',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'orientation_covariance',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                     9,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'angular_velocity',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'geometry_msgs.Vector3',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'angular_velocity_covariance',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                     9,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'linear_acceleration',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'geometry_msgs.Vector3',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 None,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'linear_acceleration_covariance',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 'double',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 [#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                     9,#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m                 ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m             ],#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m         ],#x1B[90m#x1B[39;49;00m
E         #x1B[91m-         'std_msgs.Header': [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'seq',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'int32_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'stamp',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'std_msgs.Time',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'frame_id',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'string',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-         ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-         'std_msgs.Time': [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'sec',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'int32_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             [#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'nsec',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 'int32_t',#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-                 None,#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-             ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[91m-         ],#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m     },#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m     'type': 'sensor_msgs.Imu',#x1B[90m#x1B[39;49;00m
E         #x1B[90m #x1B[39;49;00m }#x1B[90m#x1B[39;49;00m

generated  = <class 'dimos_lcm.sensor_msgs.Imu.Imu'>
msg        = Imu(ts=1757400000.5, frame_id='imu', angular_velocity=↑ Vector Vector([        0.1        -0.2         0.3]), linear_a...· Vector Vector([          0           0         9.5]), orientation=Quaternion(0.000000, 0.000000, 0.600000, 0.800000))
vec        = {'encoding': 'sensor_msgs.Imu.lcm.v1', 'name': 'imu', 'payload_b64': 'MasgXI3VeqgAAAAAaL/LwB3NZQAAAAAEaW11AAAAAAAAAAAA...nt32_t', None], ['stamp', 'std_msgs.Time', None], ['frame_id', 'string', None]], ...}, 'type': 'sensor_msgs.Imu'}, ...}

dimos/web/test_lcm_codec.py:131: AssertionError
dimos.msgs.nav_msgs.test_OccupancyGrid::test_from_pointcloud
Stack Traces | 0.414s run time
def test_from_pointcloud() -> None:
        """Test creating OccupancyGrid from PointCloud2."""
        file_path = get_data("lcm_msgs") / "sensor_msgs/PointCloud2.pickle"
        with open(file_path, "rb") as f:
            lcm_msg = pickle.loads(f.read())
    
>       pointcloud = PointCloud2.lcm_decode(lcm_msg)

f          = <_io.BufferedReader name='.../lcm_msgs/sensor_msgs/PointCloud2.pickle'>
file_path  = PosixPath('.../lcm_msgs/sensor_msgs/PointCloud2.pickle')
lcm_msg    = b'\xf5\xeb=\xa1\xc2\x851u\x00\x00\x00\x04\x00\r\xb3\xc0\x00\x00\x00\x00h\x880A\x07Z\xd5\xff\x00\x00\x00\x06world\x00\x...\xf3>\x00\x00\x00\x00\x08P\xc5? @u\xbf\n\xa4\x92\xbd\x00\x00\x00\x00\xab\xaaj@\x9a\x99!\xc033\xf3>\x00\x00\x00\x00\x01'

.../msgs/nav_msgs/test_OccupancyGrid.py:202: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
.../msgs/sensor_msgs/PointCloud2.py:681: in lcm_decode
    msg = LCMPointCloud2.lcm_decode(data)
        cls        = <class 'dimos.msgs.sensor_msgs.PointCloud2.PointCloud2'>
        data       = b'\xf5\xeb=\xa1\xc2\x851u\x00\x00\x00\x04\x00\r\xb3\xc0\x00\x00\x00\x00h\x880A\x07Z\xd5\xff\x00\x00\x00\x06world\x00\x...\xf3>\x00\x00\x00\x00\x08P\xc5? @u\xbf\n\xa4\x92\xbd\x00\x00\x00\x00\xab\xaaj@\x9a\x99!\xc033\xf3>\x00\x00\x00\x00\x01'
        o3c        = <module 'open3d.cpu.pybind.core' from '.../dimos/dimos/.venv/lib/python3.12.../open3d/cpu/pybind.cpython-312-aarch64-linux-gnu.so'>
        o3d        = <module 'open3d' from '.../dimos/dimos/.venv/lib/python3.12.../site-packages/open3d/__init__.py'>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

cls = <class 'dimos_lcm.sensor_msgs.PointCloud2.PointCloud2'>
data = b'\xf5\xeb=\xa1\xc2\x851u\x00\x00\x00\x04\x00\r\xb3\xc0\x00\x00\x00\x00h\x880A\x07Z\xd5\xff\x00\x00\x00\x06world\x00\x...\xf3>\x00\x00\x00\x00\x08P\xc5? @u\xbf\n\xa4\x92\xbd\x00\x00\x00\x00\xab\xaaj@\x9a\x99!\xc033\xf3>\x00\x00\x00\x00\x01'

    @classmethod
    def lcm_decode(cls, data: bytes):
        if hasattr(data, "read"):
            buf = data
        else:
            buf = BytesIO(data)
        if buf.read(8) != cls._get_packed_fingerprint():
>           raise ValueError("Decode error")
E           ValueError: Decode error

buf        = <_io.BytesIO object at 0xffe6a8ae59e0>
cls        = <class 'dimos_lcm.sensor_msgs.PointCloud2.PointCloud2'>
data       = b'\xf5\xeb=\xa1\xc2\x851u\x00\x00\x00\x04\x00\r\xb3\xc0\x00\x00\x00\x00h\x880A\x07Z\xd5\xff\x00\x00\x00\x06world\x00\x...\xf3>\x00\x00\x00\x00\x08P\xc5? @u\xbf\n\xa4\x92\xbd\x00\x00\x00\x00\xab\xaaj@\x9a\x99!\xc033\xf3>\x00\x00\x00\x00\x01'

.venv/lib/python3.12.../dimos_lcm/sensor_msgs/PointCloud2.py:142: ValueError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@Nabla7
Nabla7 added this pull request to stack #4985 November 3, 2026 02:49
@Nabla7 Nabla7 changed the title [sim2 2/2] Prove body observations with G1, GR00T and mounted sensors Run G1 GR00T with independent sim2 sensors and a desk scene Nov 4, 2026
@Nabla7
Nabla7 removed this pull request from stack #4985 November 4, 2026 02:07
@Nabla7
Nabla7 added this pull request to stack #5004 November 4, 2026 02:07

This branch was previously deployed

1 inactive deployment
cachix — 6190d2cd Deployed Nov 4, 2026 by Nabla7 via cachix-build #15681
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant