Skip to content

DDS Integration general #1058

@leshy

Description

@leshy

How do we actually integrate DDS In general?

Unfortunate way

Do we just have G1Connection?

class G1Connection(Module):
    cmd_vel: Out[Twist]
    lidar: Out[PointCloud2]

... does dds comms internally, the way go2 connection does webrtc

In the case above we are sad, DDS isn't integrated as a proper dimos transport

Fortunate way

Does DDS between robots/manufacturers generally use the same format for common messages, like are those PointCloud2, Image types from ROS? can we have a generic DDSTransport that will accept these common messages across robots?

In case above we could treat third party robots just as dimos modules, subscribe to their topics, let our local_planner send Twist to them?

something like

local_planner.cmd_vel.transport = DDSTransport("/twist", robot_ip, or_however_you_configure_this, qos=something)

or like https://github.com/dimensionalOS/dimos/blob/dev/dimos/robot/unitree_webrtc/unitree_go2_blueprints.py#L114
we can map out known robot topics in a blueprint something like this (the way we do in unitree for detections)

    .transports(
        {
            ("cmd_vel", LocalPlanner): DDSTransport
                "/ddstopic", Twist, robot_ip
            ),
     ...
     )

if we use this DDS transport for our own modules
https://github.com/dimensionalOS/dimos/blob/dev/docs/concepts/modules.md

camera.color_image.transport = DDSTransport("/color_image")
detector.image.connect(camera.color_image)

dds transports here internally parses DDS messages into standard dimos Images within modules
would this /color_image topic be the same format as other robots DDS camera topics?

Robot specific messages

I'm sure robots will have their own specific DDS messages, how do we integrate those smoothly?

Ros

Ros uses DDS internally, rclpy is it's interface towards it. rclpy is annoying since it requires full ros installation and ubuntu.
Is it possible to go further and speak DDS to actual ROS? without rclpy dependency? this would allow us to easily talk to ros dockers

Docs

https://github.com/dimensionalOS/dimos/blob/dev/docs/concepts/transports.md (has some formatting issues, PR appreciated)
https://github.com/dimensionalOS/dimos/blob/dev/docs/concepts/lcm.md

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions