ROS2本身就是一个分布式通信框架,局域网内多台机器上的节点默认即可实现互相通信,而实际控制节点是否可以互相通信是通过域ID(ROS_DOMAIN_ID)来控制的,同一域内的ROS2节点之间可以自由发现和发送消息,而不同域内的ROS2节点之间则不能。所有ROS2节点默认使用域 ID 0,所以默认即可互相通信;

export ROS_DOMAIN_ID=5

ID 0-101 和 215-232 可以安全使用在liunx

不同域之间不能通信

Untitled

相同域之间可以通信

Untitled

加密

创建秘钥仓库:

ros2 security create_keystore xxx_keys

创建节点:

ros2 security create_enclave xxx_keys /talker_listener/talker
ros2 security create_enclave xxx_keys /talker_listener/listener

终端

export ROS_SECURITY_KEYSTORE=~/xxx_keys
export ROS_SECURITY_ENABLE=true
export ROS_SECURITY_STRATEGY=Enforce