文章目录

  • 1.flir相机
    • 1.1.安装官方SDK
      • 1.1.1.安装官方SDK的作用
      • 1.1.2.安装步骤
    • 1.2.编译安装ros驱动
      • 1.2.1.ros驱动的作用
      • 1.2.2.编译ros驱动
    • 1.3.ros驱动测试相机
  • 2.Livox AVIA激光雷达
    • 2.1.安装Livox-SDK
    • 2.2.编译livox_ros_driver驱动
    • 2.3.测试livox并采集ros包
  • 3.xsense(IMU/GPS)
    • 3.1.安装驱动
    • 3.2.测试驱动
  • 4.采集rosbag包

1.flir相机

1.1.安装官方SDK

1.1.1.安装官方SDK的作用

  • SDK是一个官方软件包,其中包括几个上位机,可以直接连接相机读取相机发来的数据。
  • 安装SDK后,有一部分头文件和库文件被安装到系统目录下,这样在编译相机驱动的ros功能包的时候,就能找到这些头文件和库文件。

1.1.2.安装步骤

  • 到官网下载SDK软件包
    https://flir.app.boxcn.net/v/SpinnakerSDK/folder/68522911814

如果下载老版本的SDK,则在archive(归档)文件夹里;而其他的三个文件夹则是最新版本的SDK在不同平台上的SDK。

  • 选择SDK适配的平台
    如果事先知道自己所用的平台(arm64, amd64等),则可以直接下载对应的版本。如果不知道或者下载了平台不匹配的版本,那么在安装SDK的时候会有报错提示系统不匹配,这时候也会提示你当前使用的电脑是什么平台,这时候再去安装对应平台的SDK即可。
    一般的电脑都是amd64,如何查看系统架构可以参考 查看Linux系统架构类型的5条常用命令。

  • 安装
    比如这里下载的是archive下的spinnaker-1.26.0.31-Ubuntu18.04-amd64-pkg.tar.gz文件,首先解压,然后运行sudo sh install_spinnaker.sh进行安装,过程中遇到的所有问题都选择yes即可。

  • 不确定的步骤:安装完成后最好重启一下电脑,可以先不重启测试一下后边编译ros驱动是否成功。应该不重启也可以

  • 测试SDK上位机

    • 首先改变usb缓存大小为1000M
      原因参考:Understanding USBFS on Linux。原因就是Linux默认给所有的USB设备设置的缓存大小都是16M,对于高分辨率相机或者多相机来说这个显然不够,所以这里官方推荐设置缓存为1000M。
    sudo sh -c 'echo 1000 > /sys/module/usbcore/parameters/usbfs_memory_mb'
    
    • 可以再确认一下,终端输出1000,就OK了。
    cat /sys/module/usbcore/parameters/usbfs_memory_mb
    
    • 插入摄像头(注意camera带宽很大,因此必须使用电脑 USB3.0接口),查看摄像头挂载在哪里
    #查看usb设备
    lsusb
    #假设摄像头输出为:
    Bus 002 Device 005:  xxxxxx
    
    • 给摄像头 所有用户读写(666) 权限(注意每次插拔都要重新给权限)
    sudo chmod 666 /dev/bus/usb/002/005
    

    注意权限的数字表示含义:
    -rw-rw-rw- (666) ——所有用户都有文件读、写权限。
    -rwxrwxrwx (777) ——所有用户都有读、写、执行权限。

此时打开系统软件,可以看到三个和这个SDK相关的上位机,其中SpinView就是可以直接查看相机数据的上位机。

TODO:补充图片

1.2.编译安装ros驱动

1.2.1.ros驱动的作用

最后想使用相机进行slam,则需要驱动程序接受并解析相机的数据。一遍slam都配合ros使用,此时运行相机的ros驱动程序就可以直接把相机数据用ros数据格式发送出来,给slam使用。

1.2.2.编译ros驱动

  • 下载驱动程序到camera_driver/src
  • catkin_make
    这个过程中可能会报错找不到某某cmake文件,此时是因为缺少某个ros功能包,对应的安装即可,如下所示:
# 报错:
Could not find a package configuration file provided by"camera_info_manager" with any of the following names:camera_info_managerConfig.cmakecamera_info_manager-config.cmake# 解决:
# 注意加ros-melodic前缀,另外ros中功能包名中间都是 - 而不是 _
sudo apt install ros-melodic-camera-info-manager

为了简化安装过程,这里统计需要安装的ros功能包如下,可以先安装这些功能包,然后再catkin_make。

sudo apt install ros-melodic-camera-info-manager ros-melodic-image-exposure-msgs ros-melodic-wfov-camera-msgs
  • 如果安装过程中出现找不到Spinnker.h头文件的问题,可以先把builddevel文件夹删除,然后重新编译。如果还出错,可以重启之后再尝试。(确保SDK已经安装成功的前提下)

1.3.ros驱动测试相机

  • 首先改变usb缓存大小为1000M

原因参考:Understanding USBFS on Linux。原因就是Linux默认给所有的USB设备设置的缓存大小都是16M,对于高分辨率相机或者多相机来说这个显然不够,所以这里官方推荐设置缓存为1000M。

sudo sh -c 'echo 1000 > /sys/module/usbcore/parameters/usbfs_memory_mb'

可以再确认一下,终端输出1000,就OK了。

cat /sys/module/usbcore/parameters/usbfs_memory_mb
  • 插入摄像头(注意camera带宽很大,因此必须使用电脑 USB3.0接口),查看摄像头挂载在哪里
# 查看usb设备
lsusb# 假设摄像头输出为
Bus 002 Device 005:  xxxxxx
  • 给摄像头 所有用户读写(666) 权限(注意每次插拔都要重新给权限)
sudo chmod 666 /dev/bus/usb/002/005

注意权限的数字表示含义:
-rw-rw-rw- (666) —— 所有用户都有文件读、写权限。
-rwxrwxrwx (777) —— 所有用户都有读、写、执行权限。

  • 先启动驱动节点
roslaunch spinnaker_camera_driver camera.launch
  • 打开rqt查看图像
rqt_image_view
  • 重新配置相机参数(曝光、帧率等)
rosrun rqt_reconfigure rqt_reconfigure

如下图所示,设置了相机帧率如果不起作用的话,问题在于下面的曝光是自动曝光,而没有固定曝光时间expolure modecontineous就是自动曝光,这里设置成Off,然后把下面的expolure time设置成想要的曝光时间,比如2000,然后再调节相机帧率就可以起作用了。

TODO:补充图片

2.Livox AVIA激光雷达

2.1.安装Livox-SDK

注意这个是cmake工程,最后需要installinstall之后就可以把这个工程删除了,因为默认是安装到系统目录下的。

git clone https://github.com/Livox-SDK/Livox-SDK.git
cd Livox-SDK
cd build && cmake ..
make
sudo make install

2.2.编译livox_ros_driver驱动

cd livox_ros_driver/src
git clone https://github.com/Livox-SDK/livox_ros_driver.git
catkin_make
  • 注意:如果是编译r2live等使用livox_ros_driver的工程,则需要在编译这个工程之前先刷新一下livox_ros_driver的环境变量。即source DRIVER_PATH/livox_ros_driver/devel/setup.sh,否则在编译让r2live这种工程的时候会报错找不到livox_ros_driver.cmake

2.3.测试livox并采集ros包

  • 用网线连接livox的数据扩展坞,然后可以在ubuntu网络设置上看到有线连接。注意由于livox的输出在2网段,所以必须手动修改这个有线连接的IP地址也在2网段,这样才能收到数据。也就是livox和电脑通过网线连接组成一个局域网,livox的IP地址的网段是固定的2(IP是否固定?),所以也要修改自己的电脑在这个局域网中的IP地址网段也是2。
    另外注意修改完成后,把这个有线连接关闭再打开,刷新一下。
    对于ps:查看IP的问题,可以使用wireshark工具查看所有的数据包,安装:sudo apt install wireshark,使用:WireShark使用教程。
  • 运行ros节点查看rviz可视化结果:注意有多个launch文件,如果是单纯使用rviz查看livox扫描的实时效果,那么可以运行livox_lidar_rivz.launch文件。
roslaunch livox_ros_driver livox_lidar_rivz.launch

注意:如果此时rviz看不到点云,未必是没有收到数据,可能是前方障碍物离livox太近扫描不出来,此时可以把livox对着空旷点的地方测试一下。并且看是否受到数据最正确的方法应该是使用rostopic echo /livox/lidar,此时会发现如果是上面那种看不到点云的情况,但是却有数据,并且采集到的点云数据基本都是0。

  • 采集ros包: livox_lidar_msg.launch是自定义的点云消息格式,r2live用的就是这种数据格式,所以如果采集ros包就需要运行这个launch文件。录包的时候直接使用 rosbag命令,注意驱动里面的topic主题。
rolaunch livox_ros_driver livox_lidar_msg.launch
rosbag record /livox/lidar /livox/imu

注意:如果要使用rqt查看这个自定义的点云数据的话,在打开rqt之前,要先source ./devel/setup.zsh刷新一下环境变量,这样rqt才能识别出自定义的这个消息类型。

3.xsense(IMU/GPS)

3.1.安装驱动

  • 首先把两个ros驱动源码ntrip_rosxsens_ros_mti_driver放到src目录下
  • catkin_make编译,同理这里也会出现很多包丢失的问题,这时直接安装缺失的ros包即可。
# 错误1:
Could not find a package configuration file provided by "nmea_msgs" withany of the following names:nmea_msgsConfig.cmake
# 解决:
sudo apt install ros-melodic-nmea-msgs# 错误2:fatal error: mavros_msgs/RTCM.h: 没有那个文件或目录#include <mavros_msgs/RTCM.h>
# 解决:
sudo apt install ros-melodic-mavros-msgs

3.2.测试驱动

  • 首先注意xsense的GPS是接到IMU上的,然后从IMU引出数据输出线。
  • 这里IMU使用的是USB转串口的接口,插入USB口后,先查看USB串口挂在到哪里
# 1.拔出串口USB
ls /dev/ttyUSB*
# 2.再插上
ls /dev/ttyUSB*
# 3.看新增了哪个串口
  • 对于MTI-680无法识别串口问题的解决方法,执行下面的命令后重复上面的步骤,查看串口(这步很重要,如果后面开驱动的时候报错Could not open port,基本就是因为没有执行下面两句)
sudo /sbin/modprobe ftdi_sio
echo 2639 0301 | sudo tee /sys/bus/usb-serial/drivers/ftdi_sio/new_id
  • 给IMU usb权限(注意每次插拔都要重新给权限)
sudo chmod 777 /dev/ttyUSBx  # x是具体的ttyUSB号
  • 开启IMU驱动,查看gnss输出,有输出后再开rtk驱动
roslaunch xsens_mti_driver xsens_mti_node.launch
  • 开启差分 rtk 驱动,下面参数表示设置位置初始值,用于查询附近基站。use_gnss为 true的情况下,在等待 IMU发布gnss topic。
roslaunch ntrip_ros xsens_ntrip_client.launch   //wifi by using<param name="use_gnss" value="true" />
<param name="latitude" value="35.42022519" />
<param name="longitude" value="119.50717994" />

注意:打开这个节点之后得到的才是真正的RTK数据,它是利用下面说的cors账号向基站发送请求得到RTK数据,所以必须联网。

ps:关于gnss/cors/ntrip/rctm

gnss数据
cors账号
NTRIP协议
RTCM差分电文

4.采集rosbag包

  • 首先开启上面的所有驱动,保证驱动全部正常打开
  • source ./devel/setup.zsh(为了识别livox自定义的点云消息),然后打开rqt查看各个话题的消息是否正常,比如是否有数据,数据频率是否正常
  • rosbag record topic1 topic2 ...开始录制,此时录制的ros包会以录制时间命名,然后保存到rosbag这个命令执行的时候所在的文件夹下
  • rqt_bag bag_name.bag查看录制的ros包,主要查看是否有数据中断(丢帧)的现象,比如录制过程中某个节点挂了,或者传感器出了问题收不到数据等。

flir相机、livox和xsense驱动安装与测试笔记相关推荐

  1. 星秒科技tof激光雷达PAVO的ros驱动安装与测试

    原链接:https://community.bwbot.org/topic/660 开发测试平台:小强机器人 下载链接:PAVO激光雷达windows资料包 星秒科技激光雷达pavo的供电是直流12v ...

  2. Autoware激光雷达与网络摄像机联合标定(四) Livox Horizon Autoware驱动安装

    前言 系统环境是Ubuntu 16.04,每完成一大步,将会把系统的完整镜像(VM Ware导出的虚拟机)发布到Github与Gitee,供使用.因为安装环境,本身是很耗费时间的,安装过程亦参考了网上 ...

  3. NVIDIA GeForce GTX 1060 驱动安装--------TensorFlow系列学习笔记(一)

    NVIDIA GeForce GTX 1060 驱动安装 1. 英伟达官网下载驱动程序 2. 禁用 nouveau 第三方驱动 3. 安装 NVIDIA GeForce GTX 1060 驱动 NVI ...

  4. 速腾聚创16线激光雷达rslidar-16的ros驱动安装与rviz点云显示

    原链接: https://community.bwbot.org/topic/520 运行测试平台:小强ROS机器人 速腾聚创16线激光雷达rslidar-16的供电是直流12v 3A,通信接口是rs ...

  5. Python | PyOpenGL安装和测试

    简介 最近需要OpenGL模拟一个相机图像.因此,安装并测试了基于python的OpenGL包--PyOpenGL. 这里记录一下安装和测试报错并改正的过程. 安装 PyOpenGL的安装非常的简单, ...

  6. 安装小觅相机(1030)驱动以及如何将Ubuntu18.04的内核降到4.15.0版本

    小觅相机驱动安装以及可能出现的问题 小觅相机的驱动安装非常的简单,因为他们的服务非常的好,还有非常完善的官网. 话不多说,小觅驱动安装链接如下: https://mynt-eye-s-sdk.read ...

  7. Ubuntu 18.04安装小觅相机(MYNT-EYE )驱动

    一.驱动安装 //  这一过程一次就可以,除非改动了相机的代码,需要重新编译一下 git clone https://github.com/slightech/MYNT-EYE-S-SDK.git c ...

  8. Baumer相机baumer相机USB相机使用时出现USB驱动安装失败,导致相机无法使用

    Baumer相机baumer相机USB相机使用时出现USB驱动安装失败,导致相机无法使用 项目场景 Baumer工业相机堡盟相机是一种高性能.高质量的工业相机,可用于各种应用场景,如物体检测.计数和识 ...

  9. TX2配置RealSense D455相机SDK和ros驱动

    TX2配置RealSense D455相机SDK和ros驱动 1 SDK安装 2 RealSense-ros安装 3 bug及解决 3.1 realsense-viewer显示usb2.1 3.2 C ...

最新文章

  1. 知名5G女教授邱锂力加盟MSRA,任职副院长!出走半生,回归上海
  2. ios点击大头针气泡不弹出_地图大头针气泡点击事件
  3. LeetCode Reconstruct Itinerary(欧拉回路)
  4. Spark- 使用第三方依赖解析IP地址
  5. Scanner方法中nextLine()和next()区别
  6. Hiring data scientists
  7. 新手如何拿下pytorch
  8. poj2253 Frogger(最短路变型或者最小生成树)
  9. Python怎么这么香(洛谷P2788题解,Java语言描述)
  10. 小程序 web socket_程序员的薪水和发展方向大全
  11. 计算机网络提供服务靠,计算机网络体系结构及协议之通信子网的操作方式和网络层提供的服务...
  12. 币安“碟中谍”,真相只有一个
  13. vim搜索设置高亮:set hlsearch
  14. JavaScript中charCodeAt函数
  15. 内部审计具体准则第28号—信息系统审计
  16. 【机器学习】10:朴素贝叶斯做文本分类
  17. android文档在线批注,文档批注
  18. 共享文件夹----详细教程
  19. 【spring事务管理】
  20. java 回调机制分为:异步回调 同步回调

热门文章

  1. 【算法入门到进阶】【学习目录】
  2. 上海财经大学本科毕业论文答辩PPT模板
  3. html 鼠标经过展开,CSS3效果:鼠标悬停背景展开效果
  4. 通过注册表删除软件自动生成的设备和驱动器
  5. 服务器502错误的原因分析
  6. 安利一个适合调试rt thread的串口助手软件
  7. 2021-2022-2 ACM集训队每周程序设计竞赛(1) - 问题 D: 点外卖 - 题解
  8. 导数极限的连续性与导数的函数值的关系
  9. SmartRF Packet Sniffer使用手册
  10. 读书印记 - 《菊与刀》