玩 Ubuntu 系统的筒子可能不一定玩激光雷达,但玩激光雷达的筒子肯定玩 Ubuntu 系统。这里给筒子们分享一下在 Ubuntu 系统中,通过 ROS 驱动启动 Ouster 激光雷达的操作。
那些熟悉 Ouster ROS 驱动的筒子们可以绕过,或者轻喷哈。
废话不多说,进入正题。
1. 安装 Ouster 官方 ROS 驱动
首先呢,当然是你的 Ubuntu 系统电脑中必须得安装有一个 ROS 系统(必须是ROS1咯),而且是更新不带报错得那种。鄙人电脑中装的是 Noetic 版本,Melodic 版本当然也支持(Melodic算是很经典的一个版本了,陪伴了一众筒子们从接触 ROS 到熟悉 ROS)。
ROS 已经在电脑中安装妥当的情况下,然后就可以下载编译 Ouster ROS 驱动了。目前貌似各家厂商都是将各自的驱动开源发布到 GitHub 上,Ouster 也不例外。Ouster 的官方 ROS 驱动可以从这个链接的网址获取:
GitHub - ouster-lidar/ouster-ros: Official ROS drivers for Ouster sensors
当然呢,在下载驱动之前,我的建议是先在电脑中安装好编译 Ouster 官方 ROS 驱动所需的一些依赖。可以通过在终端输入指令进行安装。
sudo apt install -y ros-$ROS_DISTRO-pcl-ros ros-$ROS_DISTRO-rviz
其中的 $ROS-DISTRO 就是你电脑中所安装的 noetic 或者 melodic 版本的 ROS1 了。通常来说,如果 ROS 安装的 desktop 桌面版的话,上边的 package 在安装 ROS 的时候就已经安装好了。
sudo apt install -y \
build-essential \
libeigen3-dev \
libjsoncpp-dev \
libspdlog-dev \
libcurl4-openssl-dev \
cmake
上边这些依赖,绝必是编译之前需要安装好的。否则当你一遍遍的编译驱动时,只会看到一遍遍的报错。
驱动安装好了之后,就可以开始下载 Ouster ROS 驱动了。官方 Github 上虽然也有如下步骤:
mkdir -p catkin_ws/src && cd catkin_ws/src
git clone --recurse-submodules https://github.com/ouster-lidar/ouster-ros.git
但是通过受到网络的影响,下载很缓慢,而且有时会频繁下载失败。我这里下载好了完整的驱动,压缩之后, 放在了附件中。那些屡次下载失败的筒子们,可以从这里获取后,解压一下,放在你在 Ubuntu 建好的 workspace 的 /src 路径下。
在 /src 中路径中拷贝好解压之后的 ouster-ros 文件夹,然后退回到你为 Ouster ROS 驱动建立的 workspace 路径。运行一下 source 命令,
source /opt/ros/<ros-distro>/setup.bash
如果你电脑中安装的是 Noetic ROS,请用 noetic 替换上边指令中的 <ros-distro>。Melodic 亦然。
接下来就是编译了,当然是通过 catkin_make 指令了。
catkin_make -DCMAKE_BUILD_TYPE=Release
编译需要一些时间,可以喝口水,上个卫生间。等回到电脑前之后,看到编译 100% 通过,那么恭喜你了,你可以接下来运行 ROS 驱动来启动 Ouster 激光雷达了。
2. 通过 Ouster 官方 ROS 驱动启动雷达
在运行 Ouster ROS 驱动,启动激光雷达之前,请首先确保激光雷达已经完成了必要的准备工作,包括接线、供电、网络连接可 ping 通。此外,需确保激光雷达能正常运行。根据以往经验,如果激光雷达在报错,那么用 ROS 驱动启动雷达,肯定也会出现报错。激光雷达的状态,可以参考我之前发布的《Ouster 激光雷达 Web 浏览器操作一览》,通过浏览器连接雷达查看。
准备工作就绪后,就可以开始运行 Ouster ROS 驱动了。
首先在 Ouster ROS 驱动的 workspace 路径,运行 source 命令:
source devel/setup.bash
运行结束后,输入这行命令:
roslaunch ouster_ros sensor.launch sensor_hostname:=激光雷达的IP地址
然后点击回车按钮执行命令。务必确保激光雷达的IP地址和连接激光雷达的电脑网卡在同一个网段且地址不能重复。
没有意外的话,略等片刻,应该就可以在 rviz 窗口看到点云了。
(2024年3月更新)
如果您通过这条 git 指令
git clone --recurse-submodules https://github.com/ouster-lidar/ouster-ros.git
下载的是 2023年10月31日发布的 ouster-ros 驱动版本或者之后发布的版本。我建议启动雷达时,可以通过指定这个 launch 文件 driver.launch 替代之前启动指令中使用的 sensor.launch。
driver.launch 文件启动雷达后,降低了对 ROS 系统的开支,可以说,对 ROS 系统中的运行也更加友好。
启动雷达时,新的指令可以使用
roslaunch ouster_ros driver.launch sensor_hostname:=<激光雷达IP地址>
当然,如果您继续使用之前的指令启动雷达也是没有问题的。至少到 2024年3月份,ouster-ros 驱动包中,仍然有 sensor.launch 这个文件,所以通过这个指令启动雷达,仍然可行。
roslaunch ouster_ros sensor.launch sensor_hostname:=<激光雷达IP地址>
但是,如果您电脑中下载编译的 ouster-ros 驱动是 2023年10月之前发布的版本,使用 driver.launch 文件启动雷达会报错,因为那时的 ouster-ros 驱动包中没有 driver.launch 这个文件。因此,如果直接拷贝指令而不加注意,会抱 launch 文件无法找到的错误。
(2024年10月更新)
2024年9月份发布的 ouster-ros 驱动增加了不少新功能。
个人认为,比较有用的两个新功能分别是:
- 支持对输出的点云数据设置一个范围。这个功能的好处是,可以只输出我们感兴趣的范围内的数据,这样可以大大减少后续的算法需要处理的数据量。比如,雷达的实际检测范围大约是 30cm ~ 130m, 但我们只关心 10m~50m范围内的目标物。那么我们对 launch 文件中的 min_range 和 max_range 赋值 10 和 50 即可。
- 支持播放 PCAP 点云数据包。PCAP 格式的文件是 OusterStudio 软件录制点云时得到的点云数据包,录制时同时得到的还有一个 json 格式的内参 metadata。对点云数据作二次开发或者播放点云数据时,通常不会用到 Ouster 提供可视化软件 OusterStudio,而是会用到ROS。之前的操作方法通常是将 PCAP 格式的点云数据转为 rosbag 格式,但是9月底发布的这个版本可以直接支持播放 Ouster 激光雷达录制的 PCAP 格式的点云数据包。
以下链接中的视频制作于9月底,视频中分享了关于 ouster-ros 驱动的下载安装、点云可视化基本功能、获取 metadata 内参、指定检测范围和播放 PCAP 点云数据包的步骤,供参考。
Quick Start Guide to the Latest Ouster-ROS Driver / 最新版 Ouster-ROS 驱动使用步骤_哔哩哔哩_bilibili