持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第12天,点击查看活动详情
ROS 环境下使用velodyne激光雷达
系统版本:ubuntu 20.04 ROS版本:noetic 激光雷达型号:velodyne VLP-16
系统环境配置
安装ROS依赖
sudo apt install ros-noetic-velodyne
成功提示: 安装驱动
git clone https://github.com/ros-drivers/velodyne.git
成功提示: 将功能包考在ros 的工作空间下面,然后进行编译。
catkin_make
硬件连接
找个电源适配器,9-18v给雷达供电。雷达连接其连接器,网口接到ROS的工控机上即可
网口配置
将工控机的网口配置为
ipv4,方式设置为手动 ip地址、掩码以及网关设置成下图 其中地址 不能为 192.168.1.201 ,这个是雷达的地址
运行驱动程序
roslaunch velodyne_pointcloud VLP16_points.launch
通过rostopic list
查看当前消息名称
rostopic list
其中 /velodyne_points
就是 激光雷达发布的点云消息。
通过rviz可视化点云
终端输入rviz,打开该软件
rviz
Fiex Frame 写入 velodyne
添加 PointCloud2
Topic 选择 /velodyne_points
之后即可看到点云
ROS 环境下使用Flir Blackfly S 工业相机
系统版本:ubuntu 20.04 ROS版本:noetic 工业相机型号:BFS-U3-16S2C-CS
Flir Blackfly 官网:网址 Spinnaker C++ API 网址
Flir Blackfly S USB3 产品介绍
Blackfly S 采用业内先进的冰块外形传感器。 具有强大功能,可以轻松生成所需的精确图像,并加速应用程序开发。 包括对图像捕获和相机预处理的自动和精确手动控制。 Blackfly S 提供GigE、USB3、套装和板级版本。 精确图像 索尼CMOS传感器中的选择包括:全局快门、偏振和高灵敏度BSI传感器。
实物图如下: 使用的型号为:BFS-U3-16S2C-CS
其主要参数如下:
安装 Spinnaker
Spinnaker SDK的下载地址: 地址
但是只能找到2.x版本的
Spinnaker2及以上,安装后不再系统include文件夹中添加头文件,影响驱动“”对文件的索引。
注意安装完毕后,文件是在 /opt 文件夹中
如果用 flir_adk_ethernet
功能包 怎会出现 找不到头文件的情况。 如果能找到 Spinnaker1.x 版本的,这个功能包则可以用。
安装Spinnaker 在下载的文件夹找到install_spinnaker.sh
这个文件,然后在其路径下打开终端,输入
sudo sh install_spinnaker.sh
安装提示安装即可。
安装 spinnaker_sdk_camera_driver 功能包
由于安装的 2.x版本的 Spinnaker 所以 最好 选择 这个功能包 ,省去配置路径的很多麻烦。
该功能包对于 x86_64 的电脑 需要 安装如下依赖
- unwind-dev
- ros-noetic-cv-bridge
- ros-noetic-image-transport
通过如下指令安装 依赖
sudo apt install libunwind-dev ros-noetic-cv-bridge ros-noetic-image-transport
从github上下载功能包
git clone https://github.com/neufieldrobotics/spinnaker_camera_driver.git
放到ros的工作空间编译
catkin_make
好了,如果是 ubuntu 18.04 之前的版本应该没问题
但是我的是 ubuntu 20.04 版本的,编译报错了
提示 ,在 std_include.h 文件中找不到 cv.h文件
原因就是 ubuntu 20.04 的opencv版本是 v4的,版本不匹配造成的。
此时需要对功能包源码进行一定修改
打开 std_include.h 文件,删掉 第 9行
9 - #include <cv.h>
打开 capture.cpp 文件 ,修改 第 1000 行
if (LIVE_)namedWindow("Acquisition", CV_WINDOW_NORMAL | CV_WINDOW_KEEPRATIO);
if (LIVE_)namedWindow("Acquisition", WINDOW_NORMAL | WINDOW_KEEPRATIO);
将上面的改为下面的
修改 第 1049 行
int key = cvWaitKey(1);
int key = waitKey(1);
将上面的改为下面的
修改 第 1073 行
cvDestroyAllWindows();
destroyAllWindows();
将上面的改为下面的
修改 第 1101 行
cvDestroyAllWindows();
destroyAllWindows();
将上面的改为下面的
然后再编译即可成功!
增加USB3.0的带宽限制
默认的,在Linux系统中,USB-FS 仅有16MB的带宽对于所有的USB设备。对于高帧率相机来说这个带宽就太少了,并且如果相机的分辨率很高,或者同时接多个相机,那么都需要增大其带宽限制。
在安装 Spinnaker 的时候 会 自动的 设置 带宽。 如果想确定成功没有,可以打开 /etc/rc.local文件,如果没有这个文件,肯定没有设置成功。 有这个文件的话,打开,看最后有没有下面这句话:
sh -c 'echo 1000 > /sys/module/usbcore/parameters/usbfs_memory_mb'
如果有,那么设置应该成功了。还可以通过如下指令查看
cat /sys/module/usbcore/parameters/usbfs_memory_mb
设置成功,终端如下: 如果没有成功,可以执行
sudo sh configure_usbfs.sh
这个脚本。
也可以手动设置这个带宽,方法如下: 首先 添加 rc.local 文件,并附权
$ sudo touch /etc/rc.local
$ sudo chmod 744 /etc/rc.local
在最后添加下面这个句
sh -c 'echo 1000 > /sys/module/usbcore/parameters/usbfs_memory_mb'
然后保存,重启设备。用上面的检测方法检查下,失败的话用下面的
$ sudo sh -c 'echo 1000 > /sys/module/usbcore/parameters/usbfs_memory_mb'
如果用多个相机的话,那么可能要超过1000
硬件连接
修改相机id号
相机本身自己有一个8位的id号,在相机的下部。这个id号要填到 test_params.yaml 文件中
cam_ids:
master_cam:
改这两个值
启动驱动
roslaunch spinnaker_sdk_camera_driver acquisition.launch
然后可以查看当前 消息 名称
rostopic list
/camera_array/cam0/image_raw 就是图像的消息
rostopic hz /camera_array/cam0/image_raw
可以查看其频率
rviz查看图像
启动rviz
rviz
添加 image 功能菜单,然后Image Topic 选择/camera_array/cam0/image_raw
即可出现画面,如下:
今天的文章ubuntu20.04 ROS 环境下使用velodyne激光雷达与 Flir 工业相机分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/20907.html