前提:安装好了ros2,两台电脑在同一局域网下

本人用于树莓派上安装设备驱动以及控制,解决算力不够问题,把数据传回到配置高的电脑上处理后发布到话题控制(还在测,目前通信成功)

修改DDS配置

这相当于给两台电脑设置了相同的“聊天频道”,确保它们能互相发现。

  • 操作:在两台电脑的~/.bashrc文件末尾添加export ROS_DOMAIN_ID=0(0-101均可,需一致),然后执行source ~/.bashrc生效。

操作完成后确保两台电脑以下参数保持一致

1、DDS中间件

echo $RMW_IMPLEMENTATION    

输出为空(使用默认fastrtps)

默认为空,如果不为空需要统一

2、查看当前ROS_LOCALHOST_ONLY值

echo $ROS_LOCALHOST_ONLY

这个变量设置为1会强制所有通信只在本地回环(localhost)进行,导致无法跨网络通信,必须将其设置为0(或确保该变量未被设置)。

如果为1

# 临时修改为0(允许跨机器通信)

export ROS_LOCALHOST_ONLY=0

# 永久写入配置文件

echo 'export ROS_LOCALHOST_ONLY=0' >> ~/.bashrc
source ~/.bashrc

3、重启ros2服务

ros2 daemon stop
ros2 daemon start

测试

# 电脑A

ros2 run demo_nodes_cpp talker

 

# 电脑B 

ros2 run demo_nodes_py listener

就能看到一台在发送一台在接收数据

同理其他话题数据也就互通

 

Logo

更多推荐