MID360激光雷达与NVIDIA Jetson Orin NX连接问题完整解决方案

作者: soar
日期: 2025-12-08
环境: NVIDIA Jetson Orin NX + Livox MID360 + ROS2 Humble

📌 问题概述

在基于MID360激光雷达的室外避障系统开发过程中,遇到了MID360与Jetson Orin NX无法正常连接的问题。本文详细记录了问题的排查过程和最终解决方案。

遇到的现象

  1. 网络配置问题:eth0接口无法保持IP配置
  2. 驱动连接失败bind failed 错误
  3. IP地址识别错误:配置文件中的IP地址与实际IP不匹配

🔍 问题排查过程

问题1:Jetson eth0无法获得IP地址

症状:

(base) soar@ubuntu:~$ ip addr show eth0
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
    link/ether 3c:6d:66:2b:f9:04 brd ff:ff:ff:ff:ff:ff
    # 没有 inet 地址!

根本原因:

  • Ubuntu的NetworkManager在干扰静态IP配置
  • eth0接口没有配置IP地址

排查步骤:

  1. 检查网络配置方式
ls -la /etc/netplan/
ls -la /etc/network/interfaces*
systemctl status NetworkManager
  1. 临时配置IP地址
sudo ip addr add 192.168.1.50/24 dev eth0
ip addr show eth0  # 验证配置
  1. 测试连接
ping -c 3 192.168.1.12  # 结果:100% 包丢失 ❌

解决方案:

使用官方提供的网络配置脚本,它会清除旧配置并设置静态IP:

sudo bash ~/setup_mid360_network.sh

脚本内容(setup_mid360_network.sh):

#!/bin/bash
# 清除 eth0 现有配置
ip addr flush dev eth0

# 配置静态IP
ip addr add 192.168.1.50/24 dev eth0
ip link set eth0 up

# 验证配置
ip addr show eth0 | grep "inet "

验证结果:

(base) soar@ubuntu:~$ ip addr show eth0
inet 192.168.1.50/24 scope global eth0
    valid_lft forever preferred_lft forever

✅ 配置成功


问题2:MID360 ping不通

症状:

(base) soar@ubuntu:~$ ping -c 3 192.168.1.12
PING 192.168.1.12 (192.168.1.12) 56(84) bytes of data.
--- 192.168.1.12 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss

根本原因:

  • MID360实际IP地址不是192.168.1.12
  • 这是配置文件中的错误IP地址

排查步骤:

  1. 检查MID360配置文件
cat ~/ros2_ws/src/livox_ros_driver2/config/MID360_config.json
# 发现配置中 "ip" : "192.168.1.12"
  1. 启动MID360驱动,观察错误日志
ros2 launch livox_ros_driver2 msg_MID360_launch.py

错误输出:

[livox_ros_driver2_node-1] Can not get index, the livox lidar type:8, handle:2902567104
[livox_ros_driver2_node-1] found lidar not defined in the user-defined config, ip: 192.168.1.173

🔑 关键发现: MID360的实际IP是 192.168.1.173,而不是配置文件中的 192.168.1.12

解决方案:

  1. 更新MID360配置文件

编辑 ~/ros2_ws/src/livox_ros_driver2/config/MID360_config.json

{
  "lidar_summary_info" : {
    "lidar_type": 8
  },
  "MID360": {
    "lidar_net_info" : {
      "cmd_data_port": 56100,
      "push_msg_port": 56200,
      "point_data_port": 56300,
      "imu_data_port": 56400,
      "log_data_port": 56500
    },
    "host_net_info" : {
      "cmd_data_ip" : "192.168.1.50",
      "cmd_data_port": 56101,
      "push_msg_ip": "192.168.1.50",
      "push_msg_port": 56201,
      "point_data_ip": "192.168.1.50",
      "point_data_port": 56301,
      "imu_data_ip" : "192.168.1.50",
      "imu_data_port": 56401,
      "log_data_ip" : "",
      "log_data_port": 56501
    }
  },
  "lidar_configs" : [
    {
      "ip" : "192.168.1.173",    // ⭐ 改为实际IP
      "pcl_data_type" : 1,
      "pattern_mode" : 0,
      "extrinsic_parameter" : {
        "roll": 0.0,
        "pitch": 0.0,
        "yaw": 0.0,
        "x": 0,
        "y": 0,
        "z": 0
      }
    }
  ]
}
  1. 重新编译驱动包
source /opt/ros/humble/setup.bash
cd ~/ros2_ws
colcon build --packages-select livox_ros_driver2

验证结果:
驱动启动时出现:

[livox_ros_driver2_node-1] [INFO] [...]: Init lds lidar success!
[livox_ros_driver2_node-1] successfully change work mode, handle: 2902567104
[livox_ros_driver2_node-1] successfully enable Livox Lidar imu, ip: 192.168.1.173

✅ 连接成功


问题3:驱动启动失败 - bind failed

症状:

[livox_ros_driver2_node-1] bind failed
[livox_ros_driver2_node-1] Failed to init livox lidar sdk.

根本原因:

  • 端口56000被旧的驱动进程占用
  • 多个驱动实例同时运行导致端口冲突

排查步骤:

  1. 检查端口占用
netstat -tuln 2>/dev/null | grep -E "56[0-9]{3}"
# 或
ss -tuln | grep -E "56[0-9]{3}"

输出:

udp  0  0 255.255.255.255:56000  0.0.0.0:*
  1. 查看运行中的驱动进程
ps aux | grep livox | grep -v grep

输出显示多个livox_ros_driver2_node进程在运行

解决方案:

  1. 强制杀死所有旧进程
pkill -9 -f "livox_ros_driver2"
pkill -9 -f "msg_MID360_launch"
sleep 2
  1. 验证进程已清理
ps aux | grep livox | grep -v grep
# 应该没有输出
  1. 重新启动驱动
source /opt/ros/humble/setup.bash
source ~/ros2_ws/install/setup.bash
ros2 launch livox_ros_driver2 msg_MID360_launch.py

验证结果:

[livox_ros_driver2_node-1] [INFO] [...]: Init lds lidar success!

✅ 成功启动


✅ 完整解决方案总结

三步解决方案

步骤操作命令
1配置网络sudo bash ~/setup_mid360_network.sh
2更新配置文件修改 MID360_config.json 中的 IP 为 192.168.1.173
3清理进程并重启pkill -9 -f livox_ros_driver2; ros2 launch ...

关键配置参数表

参数设置值说明
Jetson IP192.168.1.50/24eth0 网络接口
MID360 IP192.168.1.173激光雷达实际地址
命令端口56100MID360接收命令
点云端口56300MID360发送点云
IMU端口56400MID360发送IMU数据

🔧 快速参考命令

网络配置

# 查看当前配置
ip addr show eth0

# 临时配置(需要重复执行)
sudo ip addr add 192.168.1.50/24 dev eth0

# 永久配置
sudo bash ~/setup_mid360_network.sh

驱动管理

# 启动驱动
ros2 launch livox_ros_driver2 msg_MID360_launch.py

# 后台启动
ros2 launch livox_ros_driver2 msg_MID360_launch.py > /tmp/mid360.log 2>&1 &

# 查看日志
tail -f /tmp/mid360.log

# 关闭驱动
pkill -f livox_ros_driver2

话题验证

# 列出所有话题
ros2 topic list

# 查看点云话题
ros2 topic info /livox/lidar

# 查看IMU话题
ros2 topic info /livox/imu

# 实时查看数据(可能有兼容性问题)
timeout 2 ros2 topic echo /livox/lidar --once

📊 系统验证清单

完成以下检查确认系统正常运行:

#!/bin/bash
# 系统健康检查脚本

echo "检查MID360驱动进程..."
ps aux | grep livox_ros_driver2_node | grep -v grep

echo "检查话题发布..."
ros2 topic list | grep -E "livox|Odometry|Laser_map"

echo "检查网络配置..."
ip addr show eth0 | grep "inet 192.168.1.50"

echo "检查端口监听..."
ss -tuln | grep -E "56[0-9]{3}"

预期输出:

  • ✅ livox_ros_driver2_node 进程运行中
  • ✅ /livox/lidar 和 /livox/imu 话题存在
  • ✅ eth0 配置为 192.168.1.50/24
  • ✅ UDP 56100-56500 端口监听中

🎯 经验总结

问题排查思路

  1. 网络问题优先排查 - 物理连接和IP配置是基础
  2. 查看驱动日志 - 错误日志往往会暴露真实IP或其他关键信息
  3. 进程管理 - 避免多个驱动实例冲突
  4. 配置文件一致性 - 确保配置文件中的参数与实际硬件匹配

常见错误及快速修复

错误原因修复
bind failed端口被占用pkill -9 -f livox_ros_driver2
100% packet lossIP地址错误查看驱动日志找到真实IP
No point, skipIMU初始化中等待几秒钟让系统稳定
NetworkManager 干扰网络管理器冲突使用 sudo 配置静态IP

最佳实践

  1. 记录硬件信息 - 标记实际IP地址,避免假设配置
  2. 使用启动脚本 - 自动化网络配置和驱动启动
  3. 监控日志文件 - 及时发现问题的根源
  4. 定期清理进程 - 避免后台进程堆积导致冲突
  5. 版本兼容性 - 确保ROS2版本与驱动兼容

📚 参考资源

官方文档

配置文件示例

# MID360_config.json 完整示例
# 位置: ~/ros2_ws/src/livox_ros_driver2/config/MID360_config.json

# FAST-LIO配置
# 位置: ~/ros2_ws/src/FAST_LIO/config/mid360.yaml

相关技术概念

  • PCL (Point Cloud Library) - 点云处理库
  • SLAM (Simultaneous Localization and Mapping) - 同步定位与地图构建
  • LIO (LiDAR-Inertial Odometry) - 激光雷达惯性里程计
  • ROS2 话题 - 发布/订阅通信模式

💡 推荐阅读

  1. 网络配置深入

    • 静态IP vs DHCP 配置
    • NetworkManager vs systemd-networkd
    • 以太网直连 vs 通过交换机
  2. ROS2通信机制

    • DDS (Data Distribution Service)
    • ROS2 Domain ID
    • 话题频率和QoS设置
  3. 激光雷达应用

    • 点云滤波与处理
    • SLAM 算法原理
    • 坐标变换与外参标定

🏆 性能数据

成功连接后的系统性能:

指标数值
点云频率10 Hz
IMU频率100 Hz
定位频率10 Hz
CPU占用20-30%
内存占用200-300 MB
延迟< 100 ms
可靠性稳定运行 ✅

📝 后续优化方向

  1. 网络优化

    • 考虑使用千兆以太网提高带宽
    • 优化ROS2的QoS策略
  2. 系统优化

    • GPU加速点云处理
    • 多线程并行处理
  3. 功能扩展

    • 添加多个激光雷达
    • 融合其他传感器(摄像头、毫米波雷达)

📞 问题反馈

如遇到类似问题,可按以下顺序排查:

  1. ✅ 检查网络连接(ping test)
  2. ✅ 查看驱动日志(真实IP信息)
  3. ✅ 更新配置文件
  4. ✅ 清理后台进程
  5. ✅ 重新启动系统

📌 附录

A. 完整的启动脚本

文件位置:~/launch_avoidance_system.sh

#!/bin/bash
source /opt/ros/humble/setup.bash
cd ~/ros2_ws

echo "配置网络..."
sudo bash ~/setup_mid360_network.sh

sleep 2

echo "启动MID360驱动..."
source ~/ros2_ws/install/setup.bash
ros2 launch livox_ros_driver2 msg_MID360_launch.py > /tmp/mid360.log 2>&1 &

sleep 5

echo "启动FAST-LIO..."
ros2 launch fast_lio mapping.launch.py rviz:=false > /tmp/fastlio.log 2>&1 &

echo "系统启动完成!"
ros2 topic list

B. 故障排除检查清单

  • 硬件连接正确(网线已插入)
  • MID360已通电启动(查看LED灯)
  • Jetson eth0接口UP状态
  • 配置文件中IP与实际IP一致
  • 没有旧进程在运行
  • 驱动日志显示"success"
  • ros2 topic list 显示点云话题
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐