ROS2网络信息查看

WSL / 树莓派 Ubuntu 网络信息查看与 ROS2 分布式通信检查笔记

这份笔记用于记录:
如何在 WSL Ubuntu 和树莓派 Ubuntu 中查看 IP、网段、网关、网卡,以及之后如何检查两端是否可以用于 ROS2 分布式通信。


1. 常用命令

以后主要记住这两个命令:

ip -br addr
ip route

也可以使用完整形式:

ip addr
ip route

其中:

  • ip -br addr:简洁查看网卡状态和 IP 地址
  • ip addr:详细查看网卡信息
  • ip route:查看默认网关和路由信息

2. 查看 WSL 的 IP 和网卡

例如你之前执行 ip addr 后看到:

7: eth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
    inet 192.168.154.239/24 brd 192.168.154.255 scope global noprefixroute eth4

重点看这一行:

inet 192.168.154.239/24 brd 192.168.154.255 ... eth4

可以得到:

信息结果
WSL IP192.168.154.239
子网前缀/24
广播地址192.168.154.255
网卡名eth4

解释:

inet:IPv4 地址
192.168.154.239:当前 WSL 的 IP 地址
/24:子网前缀,表示网段范围
brd 192.168.154.255:广播地址
eth4:这个 IP 所在的网卡

3. 怎么判断哪个网卡正在使用?

看网卡后面有没有这些标志:

UP
LOWER_UP

例如:

eth4: <BROADCAST,MULTICAST,UP,LOWER_UP>

说明 eth4 是正在工作的网卡。

而像下面这种:

eth0: <BROADCAST,MULTICAST> ... state DOWN
eth1: <BROADCAST,MULTICAST> ... state DOWN

说明这些网卡目前没有启用,不用管。

简单判断:

有 UP、LOWER_UP,并且下面有 inet IP 的网卡,就是当前主要使用的网卡。

4. 查看网关

执行:

ip route

例如你之前看到:

default via 192.168.154.114 dev eth4 proto kernel metric 35
192.168.154.0/24 dev eth4 proto kernel scope link metric 291
192.168.154.114 dev eth4 proto kernel scope link metric 35

重点看第一行:

default via 192.168.154.114 dev eth4

含义:

字段含义
default默认路由,访问外网时默认走这里
via 192.168.154.114默认网关
dev eth4通过 eth4 这个网卡出去

所以可以得到:

网关:192.168.154.114
默认网卡:eth4

5. 查看网段

你之前的 WSL IP 是:

192.168.154.239/24

其中 /24 表示子网掩码是:

255.255.255.0

所以网段是:

192.168.154.0/24

这个网段中:

网络地址:192.168.154.0
可用地址:192.168.154.1 ~ 192.168.154.254
广播地址:192.168.154.255

所以你当前的信息可以总结为:

项目内容
WSL IP192.168.154.239
网段192.168.154.0/24
网关192.168.154.114
网卡eth4

6. 为什么不能 ping 192.168.154.0

因为:

192.168.154.0

是网络地址,代表整个网段,不是一台具体设备。

所以不要用:

ping 192.168.154.0

7. 为什么之前 ping 192.168.154.1 失败?

很多教程中网关是:

192.168.1.1
192.168.0.1
192.168.31.1

但你的实际网关不是 .1,而是:

192.168.154.114

所以应该 ping:

ping -c 10 192.168.154.114

而不是:

ping -c 10 192.168.154.1

8. 当前网络检查结果

你已经测试过:

ping -c 10 192.168.154.114
ping -c 5 8.8.8.8
ping -c 5 baidu.com
sudo apt update

结果:

测试项目结果说明
ping 网关 192.168.154.114成功,0% 丢包局域网网关正常
ping 8.8.8.8成功,0% 丢包外网 IP 访问正常
ping baidu.com成功,0% 丢包DNS 域名解析正常
sudo apt update成功apt 软件源访问正常

结论:

WSL 的 mirrored 网络模式目前工作正常,不需要改回 NAT。

9. WSL mirrored 模式当前状态

你现在的状态可以理解为:

WSL IP:192.168.154.239
网段:192.168.154.0/24
网关:192.168.154.114
网卡:eth4
网络模式:mirrored

相比默认 NAT 模式:

默认 NAT 模式:常见 IP 是 172.xx.xx.xx
mirrored 模式:更接近真实局域网设备,更适合 ROS2 分布式通信

10. 树莓派到了之后怎么检查?

树莓派 Ubuntu 上也执行:

ip -br addr
ip route

假设树莓派显示:

wlan0 UP 192.168.154.88/24
default via 192.168.154.114 dev wlan0

那么可以得到:

项目内容
树莓派 IP192.168.154.88
树莓派网卡wlan0
树莓派网关192.168.154.114
树莓派网段192.168.154.0/24

如果 WSL 是:

192.168.154.239/24

树莓派是:

192.168.154.88/24

说明它们都在:

192.168.154.0/24

也就是同一个局域网。


11. 两端互相 ping

WSL 里 ping 树莓派:

ping 192.168.154.88

树莓派里 ping WSL:

ping 192.168.154.239

判断:

两边都能 ping 通:网络基本没问题,可以继续测试 ROS2。
一边能 ping 通,另一边不行:可能是防火墙或网络隔离问题。
两边都 ping 不通:可能不在同一个局域网,或者网络被隔离。

12. ROS2 分布式通信环境变量

WSL 和树莓派两端建议设置一致:

export ROS_DOMAIN_ID=30
export ROS_LOCALHOST_ONLY=0
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp

可以写入 ~/.bashrc

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
echo "export ROS_DOMAIN_ID=30" >> ~/.bashrc
echo "export ROS_LOCALHOST_ONLY=0" >> ~/.bashrc
echo "export RMW_IMPLEMENTATION=rmw_fastrtps_cpp" >> ~/.bashrc
source ~/.bashrc

注意:

WSL 和树莓派的 ROS_DOMAIN_ID 必须一致。
ROS_LOCALHOST_ONLY 不能是 1,否则只能本机通信。

检查命令:

echo $ROS_DOMAIN_ID
echo $ROS_LOCALHOST_ONLY
echo $RMW_IMPLEMENTATION

13. ROS2 本机测试

在 WSL 中打开第一个终端:

source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker

再打开第二个终端:

source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp listener

如果能看到类似:

I heard: [Hello World: 1]
I heard: [Hello World: 2]

说明 ROS2 本机通信正常。


14. ROS2 跨设备测试

树莓派上运行发布者:

source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker

WSL 上运行订阅者:

source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp listener

如果 WSL 能收到:

I heard: [Hello World: 1]
I heard: [Hello World: 2]

说明树莓派到 WSL 的 ROS2 topic 通信成功。

然后反过来测试:

WSL 上运行:

ros2 run demo_nodes_cpp talker

树莓派上运行:

ros2 run demo_nodes_cpp listener

这样可以确认双向通信。


15. 以后换网络时的检查流程

每次换 WiFi、换路由器、换学校网络,都按这个流程检查:

第一步:查看 WSL 网络

ip -br addr
ip route

记录:

WSL IP:
WSL 网卡:
WSL 网关:
WSL 网段:

第二步:查看树莓派网络

ip -br addr
ip route

记录:

树莓派 IP:
树莓派网卡:
树莓派网关:
树莓派网段:

第三步:判断是不是同一个网段

例如:

WSL:192.168.154.239/24
树莓派:192.168.154.88/24

都是:

192.168.154.0/24

说明在同一个网段。

如果是:

WSL:192.168.154.239/24
树莓派:192.168.1.88/24

那就不是同一个网段,可能无法直接发现 ROS2 节点。

第四步:互相 ping

WSL ping 树莓派:

ping 树莓派IP

树莓派 ping WSL:

ping WSL_IP

第五步:测试 ROS2 talker/listener

一端:

ros2 run demo_nodes_cpp talker

另一端:

ros2 run demo_nodes_cpp listener

16. 最简记忆版

以后只记这几条:

ip -br addr
ip route
ping 对方IP
echo $ROS_DOMAIN_ID
echo $ROS_LOCALHOST_ONLY
ros2 run demo_nodes_cpp talker
ros2 run demo_nodes_cpp listener

判断逻辑:

1. ip -br addr 看 IP 和网卡
2. ip route 看网关
3. 两端 IP 是否在同一网段
4. 两端是否能互相 ping
5. ROS_DOMAIN_ID 是否一致
6. ROS_LOCALHOST_ONLY 是否为 0
7. talker/listener 是否能通信

17. 当前你的记录

WSL IP:192.168.154.239
网段:192.168.154.0/24
网关:192.168.154.114
网卡:eth4
网络模式:mirrored

目前网络测试结果:

网关 ping 通
外网 IP ping 通
域名 ping 通
apt update 正常

结论:

当前 WSL 网络正常,可以保留 mirrored 模式,等待树莓派到货后继续测试跨设备 ROS2 通信。
ssh gyh@192.168.3.211


ip -br addr

hostname -I

添加新评论