EGO-PLANNER安装问题记录以及如何在Ubuntu22.04LTS上安装ROS noetic_ubuntu20.04运行egoplanner-程序员宅基地

技术标签: ubuntu  运维  linux  

一、Ubuntu系统版本及ROS版本

笔者误操作升级系统版本到了Ubuntu22.04LTS,在这个版本中系统不支持ROS1的安装,笔者尝试用ROS2运行ego-planner,并未运行成功,从原理上讲,ROS2应该是可以运行ego-planner的,但是至少笔者没有找到正确的方法,而且由于ROS2使用的是colcon构建,与ROS的catkin构建并不相同,因此指令也大相径庭,按照教程使用颇为不变。

因此,倘若读者有升级Ubuntu系统的想法,笔者劝你看到本文之后尽快收手,在其他适配跟上之前不要盲目升级。如果你已经升级了,请看这里。

Ubuntu 22.04源码编译安装ROS Noetic_源码安装ros_Drknown的博客-程序员宅基地

这篇博文看起来简单,但是实际操作起来笔者踩了很多坑。

在添加源部分,笔者并未遇到问题。

但是在安装编译依赖项时,笔者就遇到问题了

1.安装编译依赖项

sudo apt-get install python3-rosdep python3-rosinstall-generator python3-vcstools python3-vcstool build-essential
sudo pip3 install -U rosdep rosinstall_generator vcstool
sudo pip3 install --upgrade setuptools

第一句指令可以正常运行,第二句报错

ModuleNotFoundError: No module named 'distutils.cmd'

但是笔者使用指令

# 更新一下源
sudo apt-get update
# 安装 python3-distutils
sudo apt-get install python3-distutils

发现python3-distutils已经正常安装,就是无法运行。经过测试,自动安装的python3-distutils支持的是Python3.10及以上,但是笔者系统内有Python3.7和3.9,系统默认选择了其他版本的Python,因此可以使用指令

sudo pip3.10 install -U rosdep rosinstall_generator vcstool
sudo pip3.10 install --upgrade setuptools

2.拉取ROS Noetic源码

rosinstall_generator desktop --rosdistro noetic --deps --tar > noetic-desktop.rosinstall
mkdir ./src
vcs import --input noetic-desktop.rosinstall ./src

这里的第一句指令是用于生成一个 ROS 工作区的 .rosinstall 文件,其中包括 ROS Noetic 的桌面完整安装以及所有依赖项。该文件可以用于使用 wstool 下载所有必要的软件包。但是由于网络原因,需要多次尝试才能下载下来,常常因为超时中断,笔者尝试在超时提供的网页链接上直接导出这个文件,但是其实格式不对,笔者直接把下好文件贴出来,这其实就是一个下载目录和下载链接,如果读者网络不好,可以直接取用。

https://download.csdn.net/download/reyssalee/87653433

第三句指令是用于将ROS安装文件(ROS install file)导入到ROS的软件包源代码目录(source code directory)中。具体来说,vcs import命令根据ROS安装文件中指定的各个软件包的信息,从指定的版本控制系统中下载相应的软件包源代码到本地的软件包源代码目录中。在这个命令中,--input参数指定了要导入的ROS安装文件的路径,而./src则是指定了软件包源代码目录的路径。原博主已经指出,如果网络不好,可以在所有的github前面加上k,笔者已经在上传的文档里加好了,这和墙内墙外关系不大,笔者尝试用墙外依旧报错,而用kgithub成功率很高。

但是单凭这个指令仍旧不能保证全部的包下载下来,依旧会有E报错,笔者是在后续的CMAKE报错中发现的,读者也可以在下载完之后,直接看自己的哪个文件夹是空的。

那么如何把需要下载的包补齐,可以回到noetic-desktop.rosinstall文档内,找到对应的链接,然后手动把这个包下载下来,放到他原本的目录下,这里用kgithub下载好像不太理想,使用github可以正常下载。

全部下载完成后,按照原博主的指令安装即可。

最后,一定要运行这个指令

source ~/ros_catkin_ws/install_isolated/setup.bash

如果不运行这个指令,ros是无法使用的,当然可能运行了这个指令也无法使用,读者可以打开~/.bashrs,确认里面是否添加了,如果没有,那么手动将上面的指令添加到最后一行即可。

二、ego-planner的安装

下载之后放在哪个目录都行,没有要求。

/src里有个CMakeLists.txt的链接,一开始会报错链接失效,这个无视即可,直接按照README.md里的指示运行catkin_make即可,但是笔者这里更推荐使用命令catkin_make -j1,会显示报错信息。

1.‘deque’ does not name a type

这里需要在报错文档的头文件里加上#include <deque>,即可解决

2.error: no match for ‘operator=’ (operand types are ‘Eigen::internal::enable_if<true, Eigen::IndexedView<Eigen::Matrix<double, -1, -1>, double, double> >::type’ {aka ‘Eigen::IndexedView<Eigen::Matrix<double, -1, -1>, double, double>’} and ‘double’) 238 | ) * (i - 2) * j * (j - 1) * (j - 2) * pow(ts, i + j - 5) / (i + j - 5);

这里在/ego-planner-master/src/planner/traj_utils/include/traj_utils/polynomial_traj.h的238行报错,将此处代码修改为

for (double i = 3; i < order; i += 1)
  for (double j = 3; j < order; j += 1)
  {
    mat_jerk.coeffRef(i, j) =
        i * (i - 1) * (i - 2) * j * (j - 1) * (j - 2) * pow(ts, i + j - 5) / (i + j - 5);
  }

3.报错缺少PCL相关文件

这里又回到了前面的ROS配置问题,Releases · ros-perception/perception_pcl · GitHub,在这里下载1.7.4版本,这是支持ROS1的,不要下最新版,最新版支持ROS2,编译会报错。将PCL文件下载到ros_catkin_ws里的src文件夹里,重新编译ROS,这样ROS里有了pcl之后,就可以正常编译ego-planner了。

但是在加入了PCL文件之后,cmake又会报错,这里缺少好几个依赖项,Tags · ros/geometry2 · GitHub,笔者只记得这一个依赖项了,缺少什么就上github上下载即可,上面都有。

后续笔者没有遇到其他错误,make完之后即可正常运行ego-planner。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/reyssalee/article/details/129969060

智能推荐

【计算机毕业设计】189电商平台-程序员宅基地

文章浏览阅读80次。如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统商品交易信息管理难度大,容错率低,管理人员处理数据费工费时,所以专门为解决这个难题开发了一个电商平台,可以解决许多问题。电商平台可以实现商家管理,商品订单管理,用户管理,商品管理,商品评价管理等功能。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。电商平台可以提高商品交易信息管理问题的解决效率,优化商品交

js处理xml文件,成execl格式_js浏览器环境excel转xml-程序员宅基地

文章浏览阅读344次。nginx配置映射,js读取xml文件,整理成规整excel格式的字符传_js浏览器环境excel转xml

springboot整合jett实现模板excel数据导出_spring boot 导出模板数据-程序员宅基地

文章浏览阅读648次。jett是使用Excel电子表格模板快速创建Excel电子表格报告的工具。_spring boot 导出模板数据

vmstat命令详解-程序员宅基地

文章浏览阅读231次。基础命令学习目录首页原文链接:https://www.cnblogs.com/wensiyang0916/p/6514820.htmlvmstat 1 1表示每秒采集一次vmstat 2 1 2表示2秒采集一次,1表示只采集一次r 表示运行队列(就是说多少个进程真的分配到CPU) 我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值..._vmstat 1 2

无源波分和彩光模块_无源波分技术及其在4G/5G前传中的应用-程序员宅基地

文章浏览阅读413次。1、无源波分前传方案简述无源波分采用WDM技术,将BBU/DU至不同RRU/AAU的电路采用不同的波长合路到一根光纤中传输。例如,一个4G宏站某个频段的S111站共3个RRU,BBU至RRU的收发端口数共6个,在BBU侧和RRU侧各采用1个6路的OTM(光终端复用器)就可以将BBU和RRU间的收发信号合路到一根光纤中传输,如图1所示。图1 无源WDM前传方案由于OTM是无源器件,故各业务端口光模块..._彩光模块 光纤 发射部分 bbu 波长较大

建边——邻接矩阵、vector、链式向前星_邻接矩阵4vector-程序员宅基地

文章浏览阅读635次。## 建边(图论的中一般都会牵涉到建边的问题,下面的这三种建边的方法视情况选取) - **1.1—邻接矩阵** ==**用邻接矩阵建边的时候,注意题目中可能会有重边!重边!重边!!!**==(根据情况选短的或长的那条),后面两种方法应该不会受重边的影响(目前还没有遇到过有影响的)```cint main(){ int sx,ex,len; //n个点,m条边 while(scanf("%d%d",&n,&m)!=EOF) { _邻接矩阵4vector

随便推点

史上最全的Android开发学习教程集锦【初学者】_android 项目学习-程序员宅基地

文章浏览阅读5.3w次,点赞39次,收藏399次。根据Google的报告,截止2017年5月为止,Android活跃用户已超过20亿,并还在持续增长中。Android系统在几个主要的市场上已超过了iOS系统,特别是在美国,欧洲和日本,然而苹果确实在中国市场找到了一席之地。未来的市场到底谁是“霸主”我们还无从得知,但Android现在的趋势已经超过iOS。这也是为什么越来越多的设计师投身于Android开发设计。本篇文章从不同角度给Android开..._android 项目学习

揭秘: 优秀CIO的OA选型标准_fanweioa-程序员宅基地

文章浏览阅读6.8k次。OA选型一直是企业信息化建设面临的难题,企业内部没有人懂OA系统,OA行业也没有什么权威机构和数据可以参考,OA系统厂商排名纯属自嗨,那么,到底该如何进行OA选型?看成功企业的选型标准!这些企业CIO在选型时积累的经验都具有极高参考价值,他们的OA选型标准就是你的OA选型指南。OA选型1、综合实力人员:完整的团队是OA项目实施落地的保障,对于企业OA选型来说至关重要,也是企业CIO主要考量标准之一..._fanweioa

Apache Ranger0.5编译-程序员宅基地

文章浏览阅读22次。1. 编译环境# CentOS7# java git gcc环境yum install git wget yum java-1.8.0-openjdk* gcc -y# maven环境wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin...

SpringMVC基础掌握--一图看懂三大处理器以及执行流程_springmvc处理器-程序员宅基地

文章浏览阅读1k次,点赞29次,收藏27次。Spring MVC所有的请求都经过Dispatcherservlet来统一分发。DispatcherServlet将请求分发给Controller之前,需要借助于Spring MVC提供的HandlerMapping定位到具体的Controller。HandlerMapping接口负责完成客户请求到Controller映射。Controllr接口将处理用户情求,这和Java Servlet扮演的角色是一致的。_springmvc处理器

ES6 模块暴露_es6暴露模块-程序员宅基地

文章浏览阅读31次。ES6 模块暴露。_es6暴露模块

Intellij IDEA远程debug教程_intell运行调试配置怎么设置-程序员宅基地

文章浏览阅读8.9k次,点赞3次,收藏14次。Intellij IDEA远程debug教程_intell运行调试配置怎么设置

推荐文章

热门文章

相关标签