rslidar-sdk安装编译以及遇到的问题和解决

2023-11-19

rslidar_sdk的安装编译

可以参考官方提供的方法:rslidar_sdk

1.1 通过Git下载

git clone https://github.com/RoboSense-LiDAR/rslidar_sdk.git
cd rslidar_sdk
git submodule init
git submodule update

1.2 直接下载.tar.gz

可以从 rslidar_sdk_release 下载最新的 rslidar_sdk。 应该下载对应的 rslidar_sdk.tar.gz ,而非 source code 源码,源码不带子模块 rs_driver

2.1 安装和编译

  1. 安装依赖libyaml、libpcap、protobuf
sudo apt-get update
sudo apt-get install -y libyaml-cpp-dev

sudo apt-get install -y  libpcap-dev

sudo apt-get install -y libprotobuf-dev protobuf-compiler

这里通过 catkin_ws 来编译:

  1. 修改 CMakeLists.txt
#=======================================
# Compile setup (ORIGINAL,CATKIN,COLCON)
#=======================================
set(COMPILE_METHOD CATKIN)
  1. 编译
cd ~/catkin_ws/
catkin_make
source devel/setup.bash

3.1. 编译遇到的错误

主要是 libyaml 相关的一系列未定义的引用:

在这里插入图片描述

具体如下(部分,方便他人报错检索):

CMakeFiles/rslidar_sdk_node.dir/node/rslidar_sdk_node.cpp.o:在函数‘YAML::TypedBadConversion<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~TypedBadConversion()’中:
rslidar_sdk_node.cpp:(.text._ZN4YAML18TypedBadConversionINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev[_ZN4YAML18TypedBadConversionINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED5Ev]+0xf):对‘YAML::BadConversion::~BadConversion()’未定义的引用
CMakeFiles/rslidar_sdk_node.dir/node/rslidar_sdk_node.cpp.o:在函数‘YAML::TypedBadConversion<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~TypedBadConversion()’中:
rslidar_sdk_node.cpp:(.text._ZN4YAML18TypedBadConversionINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED0Ev[_ZN4YAML18TypedBadConversionINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED5Ev]+0x13):对‘YAML::BadConversion::~BadConversion()’未定义的引用
CMakeFiles/rslidar_sdk_node.dir/node/rslidar_sdk_node.cpp.o:在函数‘YAML::TypedBadConversion<int>::~TypedBadConversion()’中:
rslidar_sdk_node.cpp:(.text._ZN4YAML18TypedBadConversionIiED2Ev[_ZN4YAML18TypedBadConversionIiED5Ev]+0xf):对‘YAML::BadConversion::~BadConversion()’未定义的引用
CMakeFiles/rslidar_sdk_node.dir/node/rslidar_sdk_node.cpp.o:在函数‘YAML::TypedBadConversion<int>::~TypedBadConversion()’中:
rslidar_sdk_node.cpp:(.text._ZN4YAML18TypedBadConversionIiED0Ev[_ZN4YAML18TypedBadConversionIiED5Ev]+0x13):对‘YAML::BadConversion::~BadConversion()’未定义的引用
CMakeFiles/rslidar_sdk_node.dir/node/rslidar_sdk_node.cpp.o:在函数‘YAML::TypedBadConversion<bool>::~TypedBadConversion()’中:
rslidar_sdk_node.cpp:(.text._ZN4YAML18TypedBadConversionIbED2Ev[_ZN4YAML18TypedBadConversionIbED5Ev]+0xf):对‘YAML::BadConversion::~BadConversion()’未定义的引用
CMakeFiles/rslidar_sdk_node.dir/node/rslidar_sdk_node.cpp.o:rslidar_sdk_node.cpp:(.text._ZN4YAML18TypedBadConversionIbED0Ev[_ZN4YAML18TypedBadConversionIbED5Ev]+0x13): 跟着更多未定义的参考到 YAML::BadConversion::~BadConversion()

3.2. 解决问题

  • 问题的核心是catkin 没有找到 libyaml
  1. 修改CMakeLists.txt 如下:

主要是重新链接libyaml

  target_link_libraries(rslidar_sdk_node yaml-cpp)

CMakeLists.txt中具体如下:

#========================
# Build Setup
#========================
#Protobuf#
if(NOT PROTOC MATCHES "NOTFOUND" AND Protobuf_FOUND)
  add_executable(rslidar_sdk_node
              node/rslidar_sdk_node.cpp
              src/manager/adapter_manager.cpp
              ${PROTO_FILE_PATH}/packet.pb.cc
              ${PROTO_FILE_PATH}/scan.pb.cc
              ${PROTO_FILE_PATH}/point_cloud.pb.cc
              )
  target_link_libraries(rslidar_sdk_node yaml-cpp)  ## 增加的内容
  target_link_libraries(rslidar_sdk_node                   
                      ${PCL_LIBRARIES}
                      ${YAML_CPP_LIBRARIES}
                      ${PROTOBUF_LIBRARY}
                      ${rs_driver_LIBRARIES}
                      )
else(NOT PROTOC MATCHES "NOTFOUND" AND Protobuf_FOUND)
  add_executable(rslidar_sdk_node
              node/rslidar_sdk_node.cpp
              src/manager/adapter_manager.cpp
              )
  target_link_libraries(rslidar_sdk_node yaml-cpp)  ## 增加的内容
  target_link_libraries(rslidar_sdk_node                   
                      ${PCL_LIBRARIES}
                      ${YAML_CPP_LIBRARIES}
                      ${rs_driver_LIBRARIES}
                      )

结果编译成功

在这里插入图片描述

  1. 若仍然报错,可以下载 yaml-cpp 进行编译

首先下载yaml-cpp, 链接地址如下: yaml-cpp
然后进入解压,进入文件夹编译:

mkdir build
cd build
cmake .. DYAML_BUILD_SHARED_LIBS=ON
make -j8
sudo make install

最后重新按照 3.2 来编译即可

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rslidar-sdk安装编译以及遇到的问题和解决 的相关文章

随机推荐

  • CentOS的Linux系统安装docker

    docker的官方网站教程 https docs docker com engine install centos prerequisites 参照官方教程 安装了 yum install y yum utils 搜索其他教程都安装了 yu
  • 字节流、字节流、转换流、打印流

    字节流 字节流 转换流 打印流 一 字符流 概述 字符流只能操作有文字的文件 纯文本文件 字符流的操作原理 字符输入流 先把字节从文件中读取出来 使用的字节流读的 根据文件的编码集把字节数变为对应的字符 把字符 读到内存中 解码的过程 字符
  • react组件状态同步-状态提升

    假设定义组件TemperatureInputSon import React from react class TemperatureInputSon extends React Component constructor props su
  • Linux安装部署Tomcat服务器

    Tomcat Tomcat 服务器是一个免费的开放源代码的Web 应用服务器 属于轻量级应用服务器 在中小型系统和并发访问用户不是很多的场合下被普遍使用 是开发和调试JSP 程序的首选 对于一个初学者来说 可以这样认为 当在一台机器上配置好
  • 【MATLAB第19期】基于贝叶斯Bayes算法优化CNN-LSTM长短期记忆网络的单列时间序列模型及多输入单输出回归预测模型

    基于贝叶斯Bayes算法优化CNN LSTM长短期记忆网络的单列时间序列模型及多输入单输出回归预测模型 前言 前面在 MATLAB第8期 讲解了基于贝叶斯Bayes算法优化LSTM长短期记忆网络的时间序列预测模型 即单输入数据时间序列预测
  • 从“玩枪”到“玩键盘”,退伍军人到程序员的华丽转型

    前言 我的生活平淡无奇 甚至可以说毫无希望 如果你了解我以前的生活 再看到我现在的境况 一定会惊讶 为什么一个人的变化会如此之大 叛逆 事情要从上学时候说起 我从小就是一个叛逆的孩子 贪玩 不爱学习 喜欢 舞枪弄棒 所以在学校的成绩一直都不
  • win10下安装vivado 2018.3之后ise14.7 的impact 无法使用

    软件版本号 操作系统win10 ise14 7 vivado 2018 3 ise14 7 在win10里面问题总结 1 ise14 7 闪退问题 比较好解决 论坛上比较多的解决方法 2 ise 14 7 windows 10 版本的ise
  • Extjs ToolBar动态更改图标

    使用setIconClass方法 Ext getCmp javaEye setIconClass javaEyeCss 其中 javaEye 是toolbar里的一个图标项 javaEyeCss 是css里定义的一个样式 形如 javaEy
  • PHP实现简易版区块链

  • 通过wireshark抓取telnet登陆密码

    笔者学校有一台设备 ip地址是 192 168 84 10 先打开wireshark捕获无线网卡 使用telnet登陆如图所示 按下回车 笔者这里输入的密码是 A603 现在回到wireshark停止抓包 并且在filter处输入如下的过滤
  • 将uboot,kernel,rootfs下载到开发板上

    1 为什么要下载 所谓下载 也称烧录 部署 1 1 什么是u boot Hi3518EV200 单板的 Bootloader 采用 U boot u boot是一种普遍用于嵌入式系统中的Bootloader Bootloader是在操作系统
  • input type=file 获取选择文件名称、路径方法及input上传按钮美化

    获取文件名 document getElementById upload files 0 name 获取文件路径 document getElementById upload value 页面效果 原生代码
  • Git使用教程总结

    第一篇 SVN VS GIT 转载 https blog csdn net daybreak1209 article details 78216798 svn 集中式 中央版本控制 n个版本 联网 局域网 同步 git 分布式 没有中央的概
  • Spring的多线程事务

    使用编程式事务手动管理多线程事务的生命周期 通过原子类 CountDown去控制多线程事务的全局提交或回滚 public class ThreadTransactionUtil 事务管理 private DataSourceTransact
  • CSS深入理解之line-height

    慕课学习 gt 前端开发 gt HTML CSS gt CSS深入理解之line height line height 一 line height的定义 行高line height 两行文字基线之间的距离 1 什么是基线 字符 x 下边缘
  • STM32中断标志:先清理后清理的区别

    先上总结 再闲聊爬坑过程 进入中断函数后 先清理中断标志 再执行其它动作 爬坑过程 各种教程中 都只解释中断的机制 使用 但对于中断标志的清理顺序 没多少官方准确的资料 今天在F429的代码里 又遇到问题 进中断后卡死跳不出来 各种排查没发
  • Gavin Wood Web3峰会最新演讲:波卡不是智能合约平台,而是平台的平台(全文)...

    在波卡上 每个平台都在用高性能 高效率和最优的方式做着自己擅长的事 而不必让它们的用户用底层平台的货币进行支付 从而将可定制性和灵活性提高了一个台阶 本文谨代表作者个人观点 不代表火星财经立场 该内容旨在传递更多市场信息 不构成任何投资建议
  • WingIDE-配色方案(个人喜好)

    依次选择 Edit gt Preferences gt User Interface gt Color Palette 然后选择自己喜欢的主题 我目前比较喜欢的是 Monokai 当然如果自己觉得不好看 可以依据自己喜好配色
  • VScode扩展商店不显示插件问题

    VScode扩展商店不显示插件问题 情况一 代理服务器异常 参考文章 https blog csdn net wodebokecsdn article details 89239769 文件 首选项 设置 应用程序 代理服务器 情况二 设备
  • rslidar-sdk安装编译以及遇到的问题和解决

    rslidar sdk的安装编译 可以参考官方提供的方法 rslidar sdk 1 1 通过Git下载 git clone https github com RoboSense LiDAR rslidar sdk git cd rslid