Mid-360S_在虚拟机快速启动指南总结与部署踩坑总结
AI-摘要
阿狄 GPT
AI初始化中...
介绍自己
生成本文简介
推荐相关文章
前往主页
前往tianli博客
Livox Mid-360S 在 Ubuntu 虚拟机部署踩坑总结与360s快速启动脚本
这次从零到跑通 Livox Mid-360S,中间反复踩了网络、端口、配置、RViz 显示等坑。
本文记录最终可复现流程,避免重复折腾。
1. 环境信息
- 宿主机:Windows + VMware
- 虚拟机:Ubuntu 20.04
- ROS:Noetic
- 设备:Livox Mid-360S
- 开发链路:
Livox SDK2 + livox_ros_driver2
2. 关键结论(先看这个)
- Mid-360S 必须使用新版工具链:
Livox SDK2+livox_ros_driver2。 bind failed的常见原因是端口冲突:quick_start和roslaunch不能同时跑。- 节点在跑但没有
/livox/...话题,通常是主机 IP / 雷达 IP / 端口配置不匹配。 - RViz 有话题但看不到图,通常是
Fixed Frame设错(应改为livox_frame)。
3. 本次实际网络参数(已验证)
- 雷达 IP:
192.168.1.1xx(xx为设备SN码的最后两位!!!) - 主机 IP:
192.168.1.50/24 - 使用网卡:
enxc817f52c4cb8(我电脑没网卡接口,是USB 转网口,你们按照自己的来)
4. 已踩坑记录
4.1 bind failed
现象:
Create detection socket failedInit lds lidar failed
根因:
- 56000 检测端口被其他 Livox 进程占用。
处理:
pkill -f livox_lidar_quick_start || true
pkill -f livox_ros_driver2_node || true
pkill -f livox_lidar_publisher2 || true
4.2 驱动节点只发布 /rosout
现象:
rosnode info /livox_lidar_publisher2仅有/rosoutrostopic list没有/livox/lidar
根因:
- 配置文件中的主机接收 IP 和雷达真实目标地址不一致,导致没有有效点云流进入发布链路。
4.3 RViz 没有点云
现象:
- PointCloud2 Topic 看似正常,但界面无点云
- 出现 Transform 错误
处理:
Global Options -> Fixed Frame改为livox_frame
5. 最终成功判据
以下全部满足即为跑通:
rostopic list | grep -i livox
出现:
/livox/imu/livox/lidar
并且:
rosnode info /livox_lidar_publisher2
能看到节点发布上述话题(不再只有 /rosout)。
6. 后续启动流程(可直接复用)
建议按顺序开 4 个终端。
终端 1:ROS Master
source /opt/ros/noetic/setup.bash
source ~/livox_ws/devel/setup.bash
roscore
终端 2:配置网卡
IFACE="enxc817f52c4cb8"
sudo ip link set ens33 down 2>/dev/null || true
sudo ip addr flush dev "$IFACE"
sudo ip addr add 192.168.1.50/24 dev "$IFACE"
sudo ip link set "$IFACE" up
ip -br addr show dev "$IFACE"
ping -c 2 192.168.1.104
终端 3:启动驱动(Mid-360S)
source /opt/ros/noetic/setup.bash
source ~/livox_ws/devel/setup.bash
pkill -f livox_lidar_quick_start || true
pkill -f livox_ros_driver2_node || true
pkill -f livox_lidar_publisher2 || true
roslaunch livox_ros_driver2 msg_MID360s.launch
终端 4:打开 RViz
source /opt/ros/noetic/setup.bash
rviz
RViz 设置:
Global Options -> Fixed Frame = livox_frameAdd -> By topic -> /livox/lidar
7. 常用排障命令
# 看 livox 话题
rostopic list | grep -i livox
# 看节点发布关系
rosnode info /livox_lidar_publisher2
# 看检测端口是否占用
sudo ss -lunp | grep 56000
# 抓 UDP 包确认数据流
sudo timeout 5 tcpdump -ni enxc817f52c4cb8 -vv udp
8. 参考文档(官方)
- Mid-360S FAQ:https://www.livoxtech.com/mid-360s/faq
- Livox SDK2:https://github.com/Livox-SDK/Livox-SDK2
- livox_ros_driver2:https://github.com/Livox-SDK/livox_ros_driver2
- Mid-360S Product Information(PDF):https://terra-1-g.djicdn.com/65c028cd298f4669a7f0e40e50ba1131/Mid-360S/PI/Livox_Mid-360s_Product_Information.pdf
- Mid-360S 用户手册(中文 PDF):https://terra-1-g.djicdn.com/65c028cd298f4669a7f0e40e50ba1131/Mid-360S/UM/Livox_Mid-360s_User_Manual_zh-cn.pdf
- Mid-360S 下载页:https://www.livoxtech.com/mid-360s/downloads
如果后续要接 FAST-LIO/建图,建议先把当前流程固化为两个脚本:
net_up_mid360s.sh(配网)和 start_mid360s_ros.sh(驱动+检查),可明显降低重复操作带来的故障概率。
9.固化脚本简化启动流程
mkdir -p ~/robot/scripts
cat > ~/robot/scripts/net_up_mid360s.sh << 'EOF'
#!/usr/bin/env bash
# Livox Mid-360S:USB 网卡静态 IP + 可选关掉 VMware NAT 网卡,避免抢路由
# 用法:chmod +x ~/robot/scripts/net_up_mid360s.sh && ~/robot/scripts/net_up_mid360s.sh
# 改下面变量即可适配你的机器(或用环境变量 MID360_IFACE / MID360_HOST_IP / MID360_LIDAR_IP)
set -euo pipefail
IFACE="${MID360_IFACE:-enxc817f52c4cb8}"
HOST_IP="${MID360_HOST_IP:-192.168.1.50/24}"
LIDAR_IP="${MID360_LIDAR_IP:-192.168.1.104}"
NAT_IFACE="${MID360_NAT_IFACE:-ens33}"
echo "=== Mid-360S 配网 ==="
echo "IFACE=$IFACE HOST_IP=$HOST_IP LIDAR_IP=$LIDAR_IP"
sudo ip link set "$NAT_IFACE" down 2>/dev/null || true
sudo ip addr flush dev "$IFACE"
sudo ip addr add "$HOST_IP" dev "$IFACE"
sudo ip link set "$IFACE" up
echo "=== 当前地址 ==="
ip -br addr show dev "$IFACE"
echo "=== 路由 ==="
ip route || true
echo "=== ping 雷达 ==="
ping -c 3 "$LIDAR_IP" || true
EOF
cat > ~/robot/scripts/start_mid360s_ros.sh << 'EOF'
#!/usr/bin/env bash
# Livox Mid-360S ROS 驱动启动(需先有 roscore)
# 放在虚拟机:~/robot/scripts/start_mid360s_ros.sh
# 用法:chmod +x ~/robot/scripts/start_mid360s_ros.sh && ~/robot/scripts/start_mid360s_ros.sh
set -euo pipefail
export ROS_DISTRO="${ROS_DISTRO:-noetic}"
echo "=== 清理旧 Livox 进程(避免 bind failed)==="
pkill -f livox_lidar_quick_start 2>/dev/null || true
pkill -f livox_ros_driver2_node 2>/dev/null || true
pkill -f livox_lidar_publisher2 2>/dev/null || true
sleep 1
echo "=== 检查 roscore(localhost:11311)==="
if ! timeout 2 bash -c 'echo > /dev/tcp/127.0.0.1/11311' 2>/dev/null; then
echo "错误:11311 端口不通,请先在一个终端运行:"
echo " source /opt/ros/noetic/setup.bash && roscore"
exit 1
fi
source "/opt/ros/$ROS_DISTRO/setup.bash"
source "$HOME/livox_ws/devel/setup.bash"
echo "=== 启动 livox_ros_driver2(Mid-360S) xfer_format=0(RViz 用 PointCloud2)==="
exec roslaunch livox_ros_driver2 msg_MID360s.launch xfer_format:=0
EOF
chmod +x ~/robot/scripts/net_up_mid360s.sh ~/robot/scripts/start_mid360s_ros.sh
ls -la ~/robot/scripts/
这样就有了两个sh固化脚本
/home/l/robot/scripts/net_up_mid360s.sh
/home/l/robot/scripts/start_mid360s_ros.sh
后续启动流程
终端 1:ROS Master
source /opt/ros/noetic/setup.bash
roscore
终端 2:雷达 USB 网卡配网
~/robot/scripts/net_up_mid360s.sh
终端2:启动 Livox 驱动
~/robot/scripts/start_mid360s_ros.sh
终端3:启动看点云rviz
source /opt/ros/noetic/setup.bash
rviz
里把 Fixed Frame 设成 livox_frame,按需加 PointCloud2(话题按你实际为准,例如 /livox/lidar)。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小刘
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果