aloam学习笔记(一)

news2024/11/16 1:41:09

开始学习aloam框架,记录一下最开始运行aloam中出现的各种问题以及解决方式。

1.aloam地址

GitHub - HKUST-Aerial-Robotics/A-LOAM: Advanced implementation of LOAM

2.安装aloam的一些依赖

主要是两个ceres和pcl库

2.1安装ceres

ceres官方地址:Installation — Ceres Solver

ceres库地址:https://ceres-solver.googlesource.com/ceres-solver

在ceres库地址中选择自己想要的版本,我最开始选的是默认的版本,是最新的2.1.0。然后发现carkin_make的时候报错误,再网上一搜显示是说ceres版本太新了,有一些依赖项目没有更新。最后只好删除了2.1.0版本,重新安装了2.0.0版本。这里有几个点需要注意一下:

一、ceres的安装步骤:

tar zxf ceres-solver-2.1.0.tar.gz
mkdir ceres-bin
cd ceres-bin
cmake ../ceres-solver-2.0.0
make -j4
make test
# Optionally install Ceres, it can also be exported using CMake which
# allows Ceres to be used without requiring installation, see the documentation
# for the EXPORT_BUILD_DIR option for more information.
make install

源码安装,最好单独设立一个文件夹,里面全部是第三方源码库的安装文件。值得注意的是,当敲下最后一行命令:

sudo make install

在系统路径:/usr/local/include中就会出现ceres的库文件。表明ceres安装到系统中去了,之后在调用ceres的时候,find_package就会在系统的路径中搜索ceres库文件。

二、关于查找ceres的版本

查找ceres的版本就只需要在安装ceres源码版本的文件ceres-solver-2.0.0中打开package.xml文件里面有现实安装的版本号:

三、删除ceres

因为最开始下载安装的是最新版本的ceres,不能够运行aloam,所以需要安装之前版本的软件。这里就需要进行删除之前下载安装的版本。
ceres库的头文件安装在"/usr/local/include/ceres/"目录下,库文件安装在"/usr/local/lib/"目录,所以删除了这两个文件夹下的CERES文件就行了,具体命令如下:

sudo rm -rf /usr/local/include/ceres /usr/local/lib/libceres.a

关于ceres值得注意的部分就是这些。

2.2安装pcl

因为有ros,所以之前就安装了pcl。因为是ubuntu18.04,安装的是ros-melodic版本,所以melodic的pcl应该自带的是1.8版本的?我之前担心不太能用,所以又安装了一个1.12版本的。

以下是一些值得注意的点:

一、安装pcl:

主要是跟着一个视频来的:
05-PCL教程-基础应用-在兼容POSIX的(如Ubuntu)系统中编译PCL源码并安装卸载_哔哩哔哩_bilibili

讲的很全面。

官方链接在这里:

Compiling PCL from source on POSIX compliant systems — Point Cloud Library 0.0 documentation

跟着上面一步一步的走,应该不会有很多的问题。

最后在网上找的一个测试源码,证明安装好了。

CMakeLists.txt内容:

cmake_minimum_required(VERSION 2.6)
project(pcl_test)

find_package(PCL 1.12 REQUIRED)

include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})

add_executable(pcl_test pcl_test.cpp)

target_link_libraries (pcl_test ${PCL_LIBRARIES})

install(TARGETS pcl_test RUNTIME DESTINATION bin)

 源码部分:

#include <iostream>
#include <pcl/common/common_headers.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/console/parse.h>
 
 
int main(int argc, char **argv) {
    std::cout << "Test PCL !!!" << std::endl;
    
    pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);
    uint8_t r(255), g(15), b(15);
    for (float z(-1.0); z <= 1.0; z += 0.05)
    {
      for (float angle(0.0); angle <= 360.0; angle += 5.0)
      {
	pcl::PointXYZRGB point;
	point.x = 0.5 * cosf (pcl::deg2rad(angle));
	point.y = sinf (pcl::deg2rad(angle));
	point.z = z;
	uint32_t rgb = (static_cast<uint32_t>(r) << 16 |
		static_cast<uint32_t>(g) << 8 | static_cast<uint32_t>(b));
	point.rgb = *reinterpret_cast<float*>(&rgb);
	point_cloud_ptr->points.push_back (point);
      }
      if (z < 0.0)
      {
	r -= 12;
	g += 12;
      }
      else
      {
	g -= 12;
	b += 12;
      }
    }
    point_cloud_ptr->width = (int) point_cloud_ptr->points.size ();
    point_cloud_ptr->height = 1;
    
    pcl::visualization::CloudViewer viewer ("test");
    viewer.showCloud(point_cloud_ptr);
    while (!viewer.wasStopped()){ };
    return 0;
}

 显示结果:

证明安装完成。

二、选择制定版本的pcl

一般是有两个不同的pcl,一个是ros自带的pcl,一个是自己安装的源码版本的pcl。

如果想要使用ros自带的pcl,在项目的CMakeLists.txt中find_package语句前添加:

set(PCL_DIR "/usr/lib/x86_64-linux-gnu/cmake/pcl")   #该路径中存放*.cmake文件
find_package(PCL 1.8 REQUIRED)

如果想要使用自己安装的源码版本的pcl,同理在项目的CMakeLists.txt中find_package语句前添加:

set(PCL_DIR "/usr/local/share/pcl-1.12")   #该路径中存放*.cmake文件
find_package(PCL 1.12 REQUIRED)

这里还有一个message的命令可以用来测试是否指定的是自己需要版本的pcl库。

message("pcl_direction: " ${PCL_DIR})

 然后在cmake ..之后查看输出的消息就可以了。

可以看到如果人为set命令指定使用ros自带版本的pcl就会优先使用自己安装版本的pcl库。

还是pcl1.8版本太久远了,指定它进行测试的时候会出现一些库无定义问题。

3.安装运行aloam

直接根据官网的步骤来:

    cd ~/catkin_ws/src
    git clone https://github.com/HKUST-Aerial-Robotics/A-LOAM.git
    cd ../
    catkin_make
    source ~/catkin_ws/devel/setup.bash

这里有几个问题需要注意一下:

3.1关于pcl版本的问题

看aloam源码中docker部分写的是pcl用1.8的版本,然后我就直接在CMakeLists.txt里面指定了原ros自带的pcl版本,但直接报错不能编译通过。后来指定了自己安装的1.12版本的pcl就可以成功运行了,估计还是ros自带pcl库存在问题。

3.2关于roslaunch文件的问题

编译通过后,运行roslaunch文件出现了问题,按常规应该是

roslaunch A-LOAM aloam_velodyne_VLP_16.launch

但显示是无A-LOAM文件。

最后是在官方主页上看到了应该运行

 roslaunch aloam_velodyne aloam_velodyne_VLP_16.launch

有点奇怪,不知道为什么。。。

最后成功运行。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/129388.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

宝马335i手动挡和M3手动挡的对比

感受篇 *动力 两车的动力都堪称强悍&#xff0c;但发力感受差异非常大。335具备典型的涡轮车特征&#xff0c;动力来的比较突兀&#xff0c; 低速跟车时油门很难控制&#xff0c;给小了车走得慢&#xff0c;给大了就往前窜。转速拉到3000转以后335的动力刺激度非常高&#xff…

房产管理系统安全可靠性分析

数图互通房产管理 高校房产管理系统是基于公司自主研发FMCenter平台开发的应用系统。 一、系统安全性分析&#xff1a; 1.支持SSL传输协议&#xff0c;可以实现链路层的加密传输。 2.提供基于角色的授权体系&#xff0c;角色可自…

辞旧迎新,社科院与杜兰大学金融管理硕士项目引领你在金融的世界遇到更好的自己

不知不觉中2022年剩下最后的2天了&#xff0c;这一年中一半的时间是核酸&#xff0c;另一半是辛酸。当我们的理想快被生活磨灭的时候&#xff0c;记得把生活调成自己喜欢的频率&#xff0c;尽力而为。告别过去才能跟未来更好的相逢&#xff0c;新的一年我们的在职读研从社科院杜…

webdriver的尝试:三 【移动端的使用appium-配置】

文章目录appium安装appium与inspectorinspector配置配置信息获取inspector启动遇到的错误记录启动appium Selenium webdriver到移动端使用的是appium。 官方网站 介绍是&#xff1a;appium是一个app的自动化测试框架&#xff0c;使用webdriver协议。且可用于&#xff0c;原生…

【机器学习实战】二、随机森林算法预测出租车车费案例

随机森林算法预测出租车车费案例 一、导入第三方库 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import sklearn二、加载数据集 train pd.read_csv(train.csv,nrows1000000) # 加载前1000000条数据 test pd.read_csv(…

Java-抽象类与接口

前言 温故而知新 最近从头来看当初学过的语法知识点, 温故而知新, 发现当初还有许多未掌握的知识, 所以我建议大家也要多温故, 可能当初有好多知识点是没掌握到的. 这篇博客的重点就是介绍抽象类与接口, 并阐述他们的区别. 一. 抽象类 1. 概念 在面向对象的概念中, 所有的…

git基础

代码托管平台&#xff1a;git.acwing.com 一、git基本概念 工作区&#xff1a;仓库的目录。工作区是独立于各个分支的。 暂存区&#xff1a;数据暂时存放的区域&#xff0c;类似于工作区写入版本库前的缓存区。暂存区是独立于各个分支的。 版本库&#xff1a;存放所有已经提交…

黑马Hive+Spark离线数仓工业项目--数仓主题应用层ST层构建(2)

服务域&#xff1a;回访主题分析 目标&#xff1a;掌握回访主题的需求分析 路径 - step1&#xff1a;需求 - step2&#xff1a;分析 实施 需求&#xff1a;统计不同维度下的回访主题指标的结果 分析 - 指标 - 回访工程师数量、回访人员数量、回访人员最大数量、回访人员最…

C++学习 Day.8 (重载运算符和类型转换运算符)ps:一大波参考博客来袭~~

this指针 详解请点这里 复制构造函数详解 点这里和这里 指针的指针的地址&#xff0c;指针自身的地址&#xff0c;指针指向的地址 点这里 实例化解释很好 引用和指针的区别 点这里和这里 引用详解&#xff1a;C&#xff1a;引用的简单理解 - Tom文星 - 博客园 (cnblogs.co…

SMC详解

SMC全称:Secure Monitor Call 目的&#xff1a;进入到EL3异常等级 应用场景&#xff1a;大于等于EL1异常等级下使用&#xff08;EL0下不能使用&#xff09; 官方介绍以及使用方式如下&#xff1a; 主要配置&#xff1a; (1) SCR_EL3.SMD&#xff1a; (2) HCR_EL2.TSC 主要功…

ArcGIS基础实验操作100例--实验20按像元修改栅格值

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 基础编辑篇--实验20 按像元修改栅格值 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&…

SpringCloud整合Seata(AT两阶段--场景: 下单减少库存)

文章目录零&#xff1a;前置操作 --- 搭建Seata服务一&#xff1a;介绍说明二&#xff1a;添加undolog表三&#xff1a;框架整合Seata相关依赖3.1&#xff1a;引入公共SEATA POM依赖3.2&#xff1a;业务服务引入SEATA公共组件依赖3.3&#xff1a;yml文件配置Seata客户端和注册信…

[C++]模板与STL简介

&#x1f941;作者&#xff1a; 华丞臧 &#x1f4d5;​​​​专栏&#xff1a;【C】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449;LeetCode 文章目录模板初阶…

AspNetCore中的日志组件

介绍 本文写作年代比较久远&#xff0c;最新日志文档请查看&#xff1a; .NET Core 和 ASP.NET Core 中的日志记录 | Microsoft Learn了解如何使用由 Microsoft Extension.Logging NuGet 包提供的日志记录框架。https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/l…

选择-C++选择分支

引言 你们喜欢吃"只因"肉? a > 喜欢 b > 还行 c > 不喜欢 请说出你的答案: 证明 真ikun 和假ikun 关键点 我现在 a 因为我是ikun 我是 唯一玩梗的CSDN技术型博主 哈哈所以夹带点私货 你们dddd(懂的都懂) 关注我,让你看到更多的C/C 的技术点和技术以外的梗…

CTF之MISC题目-简单流量

CTF系列文章 第一篇 CTF之密码学题目-classical && coding 第二篇 CTF之MISC题目-西游记 第三篇 CTF之MISC题目-简单流量 文章目录CTF系列文章前言一、题目是什么&#xff1f;二、解题步骤1.下载文件、解压2.使用wireshark3.解压flag.zip总结前言 这是一道关于网络数…

ElasticSearch-倒排索引

文章目录一、mysql数据库存在的问题1.1 模糊查询索引失效1.2 不能分词查询二、倒排索引一、mysql数据库存在的问题 1.1 模糊查询索引失效 假设要查询上图中title中包含"手机"的信息&#xff0c;那么sql语句是这样的 SELECT * FROM goods WHERE title LIKE %手机%;如…

功能更新 | 身份认证增强安全配置

在开始本文前&#xff0c;先给大家出个解谜题&#xff0c;密码在下一段文字里&#xff0c;由 9 个字组成&#xff0c;开动你的脑筋吧&#xff0c;我们在本文结尾会揭晓答案&#xff1a; 2022 年马上就要结束了&#xff0c;机遇与挑战并存的一年。昨天&#xff0c;北京郊区一些地…

企业电子招标采购系统源码及功能清单

​ ​ 一、立项管理 1、招标立项申请 功能点&#xff1a;招标类项目立项申请入口&#xff0c;用户可以保存为草稿&#xff0c;提交。 2、非招标立项申请 功能点&#xff1a;非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点&#xff1a;对草稿进行编…

从卖货到广告,跨境电商解锁变现新模式

一、经济全球化背景下&#xff0c;跨境电商作为外贸发展的新模式&#xff0c;可谓势头正盛。而 2022 年&#xff0c;在汇率波动、欧美通胀等不可抗逆因素的影响下&#xff0c;跨境电商大环境也面临着诸多挑战。对于消费者而言&#xff0c;全球通货膨胀持续走高&#xff0c;物价…