Ubuntu 20.04编译GPMP2过程记录

news2024/11/24 11:58:45

前言

GPMP2是董靖博士等人在16-17年提出的结合GTSAM因子图框架与Gaussian Processes完成motion planning的一项工作。前身源于Barfoot教授的课题组提出的STEAM(Simultaneous Trajectory Estimation and Mapping)问题及其相关工作。在提出董靖博士提出GPMP2后,borglab则不断在这个基础上延伸,包括: GPSLAM(再次回归SLAM领域), VIMP(同样是Motion Planning问题,但在GPMP2上引入变分推断Varational Inference), 以及与Learning from Demonstration相结合一些工作。

本文大致与GPMP2官方仓库中的ReadMe一致,但是为了更好地学习GPMP2, 本文集中于为使用GPMP2提供的Python接口方面的编译问题进行总结。


编译过程

  1. 下载GTSAM, Ubuntu20.04直接使用最新版本(4.3a0)

    git clone https://github.com/borglab/gtsam
    

    这里我直接将gtsam安装与home目录下

  2. 安装GTSAM, 为了把GPMP2应用起来,需要先编译GTSAM的Python Wrapper。这样可以免去额外再安装wrap的步骤,参考链接为: Link
    安装相关依赖:

    cd ~/gtsam
    pip3 install -r ~/gtsam/python/requirements.txt
    

    安装Python-wrapper:

    cmake .. -DGTSAM_BUILD_PYTHON=1 -DGTSAM_PYTHON_VERSION=3.8.10 -DGTSAM_WITH_TBB=OFF
    

    这里我没有TBB,所以加上了这一选项.
    编译与安装:

    make
    make python-install
    

    执行完上面的步骤,可以进入python3中通过import gtsam查看是否安装成功。

  3. 下载GPMP2并进行安装:
    下载GPMP2:

    git clone https://github.com/borglab/gpmp2
    

    第二步中只是为Python3安装GTSAM模块,为了安装GPMP2需要返回GTSAM目录内进行安装,下面是GPMP2中ReadMe部分内容:

    cd gtsam
    mkdir build && cd build
    cmake -DGTSAM_ALLOW_DEPRECATED_SINCE_V42:=OFF .. #disable deprecated functionality for compatibility
    make -j4 check # optional, run unit tests  
    sudo make install
    

    添加库搜索路径到bashrc中:

    echo 'export LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH}' >> ~/.bashrc
    echo 'export LD_LIBRARY_PATH=/usr/local/share:${LD_LIBRARY_PATH}' >> ~/.bashrc
    source ~/.bashrc
    

    启动CMake中的Python相关选项,安装GPMP2:

    cd gpmp2 && mkdir build && cd build
    cmake -DGPMP2_BUILD_PYTHON_TOOLBOX:=ON ..
    make -j8 # build
    make python-install # install the python package
    

测试GPMP2运行效果:

  1. 进入gpmp2/python/examples文件夹内运行:python3 Arm2FactorGraphExample.py

  2. 效果如下:
    目标位置
    planning过程

卸载GTSAM的命令为:

cd gtsam/build
xargs rm -rf < install_manifest.txt

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

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

相关文章

1400*B. Two Buttons(BFS)

解析&#xff1a; 每次一个点有两种情况&#xff0c;-1 和 *2 两种情况&#xff0c;直接 BFS 即可。 #include<bits/stdc.h> using namespace std; const int N2e55; int n,m,vis[N],cnt[N]; void bfs(){queue<int>q;vis[n]1;q.push(n);while(q.size()){auto tq.f…

使用低代码实现一个表单页面 ------ XinBuilder

平台介绍 如果你不是一个前端开发&#xff0c;但是想要实现出一个前端页面。 那么就可以通过低代码的方式&#xff0c;拖拽和配置出你想要的页面。 而XinBuilder就是简单的一套低代码平台&#xff0c;你可以在上面拖拽出自己想要使用的组件并进行配置。使用方式也很简单。 这…

13. ShardingSphere-Proxy 数据库代理

Spring Cloud 微服务系列文章&#xff0c;点击上方合集↑ 1. 简介 ShardingSphere-Proxy是ShardingSphere分布式数据库中间件的一部分&#xff0c;它提供了数据库代理功能。通过引入ShardingSphere-Proxy&#xff0c;可以在无需改动应用程序代码的情况下&#xff0c;实现分库…

什么是商业智能(BI),就看这篇文章足够了

01、什么是商业智能BI&#xff1f; 商业智能BI - 派可数据商业智能BI可视化分析平台 首先要了解什么是商业智能BI&#xff08; Business Intelligence &#xff09;&#xff1f;百度商业智能BI有很多很多官方的定义&#xff0c;各种解释&#xff0c;实际上从这么多年的经验出发…

AI 大模型

随着人工智能技术的迅猛发展&#xff0c;AI 大模型逐渐成为推动人工智能领域提升的关键因素&#xff0c;大模型已成为了引领技术浪潮研究和应用方向。大模型即大规模预训练模型&#xff0c;通常是指那些在大规模数据上进行了预训练的具有庞大规模和复杂结构的人工智能模型&…

【2023款奔驰改款E260 L运动型:豪华与性能的完美结合】

在汽车市场中&#xff0c;奔驰一直以其卓越的品质和卓越的性能赢得了消费者的喜爱。而2023款奔驰改款E260 L运动型&#xff0c;更是将豪华与性能完美结合&#xff0c;让人无法抗拒。首先&#xff0c;让我们来看一下这款车的外观设计。新款E260 L运动型的前脸设计更加犀利&#…

css 语法笔记

.abc {margin-left:20px; } .xyz {margin-left:20px; } 等同于 .abc, .xyz {margin-left: 20px; } 参考 CSS - 选择器_css最后一个元素选择器_伏城之外的博客-CSDN博客 CSS Selectors Reference

ElasticSearch - 基于 DSL 、JavaRestClient 实现数据聚合

目录 一、数据聚合 1.1、基本概念 1.1.1、聚合分类 1.1.2、特点 1.2、DSL 实现 Bucket 聚合 1.2.1、Bucket 聚合基础语法 1.2.2、Bucket 聚合结果排序 1.2.3、Bucket 聚合限定范围 1.3、DSL 实现 Metrics 聚合 1.4、基于 JavaRestClient 实现聚合 1.4.1、组装请求 1…

基于知识蒸馏的夜间低照度图像增强及目标检测

源自&#xff1a;应用光学 作者&#xff1a;苗德邻, 刘磊, 莫涌超, 胡朝龙, 张益军, 钱芸生. “人工智能技术与咨询” 发布 摘 要 为了实现夜间低照度图像的增强&#xff0c;提高目标检测模型在夜间低照度条件下的检测精度并减小模型的计算成本&#xff0c;提出了一种基…

NLP 项目:维基百科文章爬虫和分类 - 语料库阅读器

塞巴斯蒂安 一、说明 自然语言处理是机器学习和人工智能的一个迷人领域。这篇博客文章启动了一个具体的 NLP 项目&#xff0c;涉及使用维基百科文章进行聚类、分类和知识提取。灵感和一般方法源自《Applied Text Analysis with Python》一书。 在接下来的文章中&#xff0c;我将…

c++堆排序-建堆-插入-删除-排序

本文以大根堆为例&#xff0c;用数组实现&#xff0c;它的nums[0]是数组最大值。 时间复杂度分析&#xff1a; 建堆o(n) 插入删除o(logn) 堆排序O(nlogn) 首先上代码 #include<bits/stdc.h>using namespace std; void down(vector<int>&nums, int idx, i…

ThreeJS-3D教学四-光源

three模拟的真实3D环境&#xff0c;一个非常炫酷的功能便是对光源的操控&#xff0c;之前教学一中已经简单的描述了多种光源&#xff0c;这次咱们就详细的讲下一些最常见的光源&#xff1a; AmbientLight 该灯光在全局范围内平等地照亮场景中的所有对象。 该灯光不能用于投射阴…

【CAN信号解析】使用python-can/cantools解析CAN数据

文章目录 1. 如何解析CAN消息1.1 简介1.2 python-can库使用2. python-can库介绍2.1 完整解析流程2.2 简单示例3. 总结与坑4. 代码示例1. 解析一个DBC2. 生成一个DBC3. 解析.asc数据 保存为.csv格式1. 如何解析CAN消息 关于CAN的基础知识,可阅读如下链接: CAN协议详解CAN消息…

作为SiteGPT替代品,HelpLook的优势是什么?

在当今快节奏的数字化世界中&#xff0c;企业不断寻求创新方式来简化运营并增强客户体验。由于聊天机器人能够自动化任务、提供快速响应并提供个性化互动&#xff0c;它们在业务运营中的使用变得非常重要。因此&#xff0c;企业越来越意识到像SiteGPT和HelpLook这样高效的聊天机…

分享5个自动生成PPT的网站

1、Mindshow 之前公众号里分享过这款做PPT的AI工具&#xff0c;这次再拿出来分享一次。 没别的原因&#xff0c;确实好用。 而且也是目前能够和ChatGPT结合使用最好的PPT工具之一。 直接在ChatGPT生成PPT内容&#xff0c;转成Markdown格式复制进来一键排版&#xff0c;一份P…

MySQL ——多表连接查询

一、&#xff08;左、右和全&#xff09;连接概念 内连接&#xff1a; 假设A和B表进行连接&#xff0c;使用内连接的话&#xff0c;凡是A表和B表能够匹配上的记录查询出来。A和B两张表没有主付之分&#xff0c;两张表是平等的。 关键字&#xff1a;inner join on 语句&#xf…

更好用的的MybatisPlus:MybatisFlex(上)

更好用的的MybatisPlus&#xff1a;MybatisFlex&#xff08;上&#xff09; 前言 Mybatis 是我们常用的一个 ORM 框架&#xff0c;而 MybatisPlus &#xff08;以下简称 MP&#xff09; 则是对 Mybatis 进行了一层封装&#xff0c;便捷了我们的开发工作&#xff0c;但是由于其…

进程管理--进程调度基本概念

进程调度 进程调度的核心代码实现参考 kernel/sched/ 目录文件&#xff0c;主要包含以下几个部分&#xff1a; 调度算法&#xff1a;Linux 中实现了多种不同的进程调度算法&#xff0c;如 CFS&#xff08;Completely Fair Scheduler&#xff09;、O(1) 调度算法、实时调度算法…

RocketMQ Dashboard说解

RocketMQ Dashboard 是 RocketMQ 的管控利器&#xff0c;为用户提供客户端和应用程序的各种事件、性能的统计信息&#xff0c;支持以可视化工具代替 Topic 配置、Broker 管理等命令行操作。 介绍​ 功能概览​ 面板功能运维修改nameserver 地址; 选用 VIPChannel驾驶舱查看 …

python编程:加速计算机,优化性能的关键一步——清理临时文件夹Temp

引言&#xff1a; 随着时间的推移&#xff0c;您可能会注意到计算机的性能开始变慢。这可能是由于许多因素导致的&#xff0c;其中一个常见的问题是临时文件的积累。临时文件是由操作系统和应用程序生成的临时性文件&#xff0c;它们在使用后往往被遗忘或忽视。在本篇博客中&am…