目标检测与跟踪(16)-- Jetson Xavier NX 网络配置与 ROS 多机通信实战
摘要:本文详细介绍了在 Jetson Xavier NX(Ubuntu 20.04)上配置有线网络固定 IP 并实现开机自启的完整流程,重点讲解了使用 NetworkManager 设置静态 IP 且网关留空的配置方法。同时,文章提供了 ROS 1 多机通信环境的搭建步骤,包括主机与从机的环境变量配置、双向 hosts 解析以及通信测试。此外,还补充了可选的文件传输方案——FileZilla 服务器的搭建与配置。最后,针对配置过程中可能遇到的常见问题给出了解决方案,确保设备能够稳定接入局域网,为机器人开发项目提供可靠的网络基础。
本文详细记录了在 Jetson Xavier NX(Ubuntu 20.04)上配置有线网络固定 IP,并搭建 ROS 1 多机通信环境的完整过程,特别适用于使用透传模块(AP/STA)或直连交换机进行机器人开发的场景。同时提供配置方法,方便仅需局域网通信的场合。

一、问题背景
在使用 Jetson Xavier NX 开发机器人项目时,经常需要将设备通过有线网络接入局域网,并与上位机(例如 PC)进行 ROS 通信。同时,可能需要通过透传模块(如 Wi-Fi 模块)连接外部网络或热点。在本案例中,我们遇到以下问题:
-
设备启动后有线网卡(
eth0)无法自动获取 IP(DHCP 失败)。 -
手动配置的静态 IP 在重启后丢失,需要重新执行
ip addr add命令。 -
需要实现 ROS Master 与 Slave 之间的稳定通信,且要求从机仅与主机通信,无需访问外网(网关留空)。
二、网络配置(固定 IP + 开机自启)
2.1 检查网络接口状态
首先确认有线网卡是否被系统识别。
ip link show
输出应包含 eth0,且状态为 UP。若未 UP,可执行:
sudo ip link set eth0 up
查看当前 IP 信息:
ip addr show eth0
如果无 IP,则需手动配置。
2.2 使用 NetworkManager 设置静态 IP(永久生效)
推荐使用 nmcli 命令行工具配置网络,配置后重启仍保持。
2.2.1 查看当前连接
nmcli connection show

示例输出:
NAME UUID TYPE DEVICE eth0 ca410540-fa9e-47c0-bdee-8db43c90d916 ethernet eth0 Wired connection 1 c9b6474f-bcbe-33d6-a433-e9684154872d ethernet -- ...
我们修改正在使用的 eth0 连接。
2.2.2 修改连接为手动(静态)IP
假设目标 IP 为 192.168.1.101,子网掩码 255.255.255.0(即 /24),网关根据需求设置(本例留空,仅与同网段通信)。
sudo nmcli connection modify eth0 \
ipv4.method manual \
ipv4.addresses 192.168.1.101/24 \
ipv4.gateway "" \
ipv4.dns "" \
ipv4.never-default yes
参数解释:
-
ipv4.gateway "":删除默认网关,不设置路由。 -
ipv4.dns "":清空 DNS,避免解析尝试。 -
ipv4.never-default yes:禁止将此连接设为默认路由,确保不会自动添加网关。
注意:若需要访问外网,请将网关设为路由器 IP(如
192.168.1.1),并设置 DNS,同时将never-default改为no。
2.2.3 重启连接使配置生效
sudo nmcli connection down eth0 && sudo nmcli connection up eth0
2.2.4 验证配置
查看 IP:
ip addr show eth0
查看路由表(应无默认路由):
route -n
测试局域网连通性(假设主机 IP 为 192.168.1.100):
ping 192.168.1.100 -c 4
若通,则配置成功。

提示:如果希望后续恢复 DHCP,可执行:
bash
sudo nmcli connection modify eth0 ipv4.method auto sudo nmcli connection down eth0 && sudo nmcli connection up eth0
三、ROS 1 多机通信配置
假设网络拓扑如下:
-
主机(Master):IP
192.168.1.100(例如台式机) -
从机(Slave):Jetson Xavier NX,IP
192.168.1.101
若 Jetson 作为 Master,则角色互换,但配置原理相同。

3.1 主机(Master)配置
在主机上编辑 ~/.bashrc:
gedit ~/.bashrc
添加以下内容:
export ROS_HOSTNAME=192.168.1.100
export ROS_MASTER_URI=http://192.168.1.100:11311
export ROS_IP=192.168.1.100
保存后执行 source ~/.bashrc。
3.2 从机(Slave)配置
在从机(Jetson)上编辑 ~/.bashrc:
gedit ~/.bashrc
添加:
export ROS_MASTER_URI=http://192.168.1.100:11311
export ROS_IP=192.168.1.101
注意:从机不需要设置
ROS_HOSTNAME,只需指定 Master 的 URI 和本机 IP。
保存后 source ~/.bashrc。
3.3 双向 hosts 解析(可选但推荐)
在主机的 /etc/hosts 中添加从机信息:
192.168.1.101 jetson
在从机的 /etc/hosts 中添加主机信息:
192.168.1.100 master-pc
这样可以避免因主机名解析引起的通信问题。
3.4 测试通信
-
在主机上启动
roscore。 -
在从机上运行
rostopic list,若输出话题列表(即使为空),则通信成功。 -
也可通过
ping测试网络连通性。
四、FileZilla 服务器搭建(可选)
为了方便传输文件,可在 Jetson 上搭建 FTP 服务器。
4.1 安装 FileZilla Server
由于 Ubuntu 官方源不含 filezilla-server,需手动下载 .deb 包:
wget https://dl3.cdn.filezilla-project.org/server/FileZilla_Server_1.7.3_x86_64-linux-gnu.deb
sudo dpkg -i FileZilla_Server_1.7.3_x86_64-linux-gnu.deb
sudo apt install -f # 解决依赖
4.2 启动服务并设置开机自启
sudo systemctl start filezilla-server
sudo systemctl enable filezilla-server
4.3 配置用户与共享目录
启动图形管理界面:
filezilla-server-gui
在界面中添加用户、密码和共享文件夹路径,并设置读写权限。
4.4 开放防火墙端口(如有)
sudo ufw allow 21/tcp
然后在主机上使用 FileZilla 客户端连接 192.168.1.101:21 即可。
五、常见问题与解决方案
Q1:手动配置 IP 后,重启丢失?
A:必须使用 NetworkManager 或 Netplan 永久配置,而非 ip addr add 临时命令。
Q2:DHCP 无法获取 IP?
A:检查路由器 DHCP 服务是否开启,网线是否接触良好,或改用静态 IP。
Q3:ROS 节点无法通信?
-
确保
ROS_MASTER_URI和ROS_IP设置正确。 -
检查防火墙(
sudo ufw disable临时关闭测试)。 -
检查物理连接和 IP 是否在同一子网。
Q4:网关留空后无法 ping 通外网,但能 ping 同网段主机?
A:这是预期行为,若无需外网访问,此配置为最佳实践。
Q5:FileZilla Server 安装后无法启动?
A:检查端口 21 是否被占用(如 vsftpd),可先停止其他 FTP 服务。
六、总结
本文详细介绍了 Jetson Xavier NX 在 Ubuntu 20.04 环境下配置固定 IP(开机自启)的完整流程,以及 ROS 1 多机通信的设置方法。特别提供了网关留空的配置技巧,适用于仅需局域网通信的机器人应用场景。同时,补充了 FileZilla 服务器的搭建作为文件传输的辅助工具。
通过上述配置,可以确保 Jetson 设备在每次启动后自动获得指定 IP,并与上位机稳定进行 ROS 通信,为后续的机器人开发和应用奠定坚实基础。
更多推荐



所有评论(0)