当前位置: 首页 > news >正文

ubuntu20复现NBV探索

官网代码

后退地平线下一个最佳景观规划师

      这个代码有些久远,issue里面有人已经在ubuntu20里面使用了3dmr,但是他那个代码我也运行不成功,docker网络一直也不佳,所以还是自己重新修改源码靠谱。

最终实现的代码等有时间上传到github上。

最终实现的代码:下载后直接编译,我前面配置过环境所以都不缺,如果有什么缺的可以回复,我完善下。

GitHub - anning808/nbvplanner: A real-time capable exploration and inspection path planner (next best view planning)

catkin build

roslaunch interface_nbvp_rotors flat_exploration.launch

规划器的安装和执行

要运行当前版本,请编译包 nbvplanner。要获取它,请导航到 ros 工作区的源文件夹:

git clone https://github.com/ethz-asl/nbvplanner.git

cd nbvplanner git submodule init --

git submodule sync --recursive

git submodule update --recursive

cd ..

此外,请确保您拥有所有必要的库:

sudo apt-get install ros-noetic-octomap-*

sudo apt-get install python-catkin-tools

编译问题:

  1. rotors_gazebo_plugins/common.h 添加 #include <gazebo/sensors/Sensor.hh>

  2. gazebo_odometry_plugin.cpp 更改:

octomath::Vector3 p = to_check.top();
if ((p.x() > bounding_box_origin.x - bounding_box_lengths.x / 2) &&(p.x() < bounding_box_origin.x + bounding_box_lengths.x / 2) &&(p.y() > bounding_box_origin.y - bounding_box_lengths.y / 2) &&(p.y() < bounding_box_origin.y + bounding_box_lengths.y / 2) &&(p.z() > bounding_box_origin.z - bounding_box_lengths.z / 2) &&(p.z() < bounding_box_origin.z + bounding_box_lengths.z / 2) &&(!octomap_->search(p))) {octomap_->setNodeValue(p, 0);

改为 : 

ignition::math::Vector3<double> p = to_check.top();octomap::point3d point(p.X(), p.Y(), p.Z());if ((p.X() > bounding_box_origin.X() - bounding_box_lengths.X() / 2) &&(p.X() < bounding_box_origin.X() + bounding_box_lengths.X() / 2) &&(p.Y() > bounding_box_origin.Y() - bounding_box_lengths.Y() / 2) &&(p.Y() < bounding_box_origin.Y() + bounding_box_lengths.Y() / 2) &&(p.Z() > bounding_box_origin.Z() - bounding_box_lengths.Z() / 2) &&(p.Z() < bounding_box_origin.Z() + bounding_box_lengths.Z() / 2) &&(!octomap_->search(point))) {octomap_->setNodeValue(point, 0);

3.版本不同需要更换的内容,使用vscode全局搜索,全局替换(有部分不是全局修改)

最好选择一个个编译,一个一个改。

  • 全局替换:add_definitions(-std=c++11)  →add_definitions(-std=c++14)

  • 全局替换:GetPhysicsEngine() →Physics()

  • 全局替换:#include <gazebo/math/Vector3.hh> → #include <ignition/math.hh>

  • 全局替换:math::Vector3 → ignition::math::Vector3<double>

  • 全局替换:event::Events::DisconnectWorldUpdateBegin(updateConnection); → this->updateConnection.reset();

  • 全局替换:GetSimTime →SimTime

  • 全局替换:include_directories(${Eigen_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS}) → include_directories(${Eigen_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS} ../../../devel/include)

  • 全局替换:GetAngle(0).Radian(); → Position(0);

  • 全局替换:event::Events::DisconnectWorldUpdateBegin(update_connection_); → this->updateConnection.reset();

  • GetGlobalAxis →GlobalAxis

  • math::Quaternion → ignition::math::Quaternion<double>

  • GetWorldCoGPose →WorldCoGPose

  • pose_difference.rot.RotateVector →pose_difference.Rot().RotateVector

  • GetRelativeLinearVel → RelativeLinearVel

  • GetWorldPose → WorldPose

  • GetEntity → EntityByName

  • GetRelativeAngularVel → RelativeAngularVel

  • .rot. → .Rot().

  • .rot → .Rot()

  • GetInverse → Inverse

  • sdf::Vector3 → ignition::math::Vector3<double>

  • CV_LOAD_IMAGE_GRAYSCALE -> cv::IMREAD_GRAYSCALE

  • GetRelativeLinearAccel -> RelativeLinearAccel

  • GetWorldAngularVel -> WorldAngularVel

  • GetLength -> Length

  • 参考:

官方7-》8的迁移记录,可以换tag找其他版本

https://github.com/gazebosim/gazebo-classic/blob/gazebo8_8.0.0_beta1/Migration.md

gazebo7---->gazebo9代码迁移_event::events::disconnectworldupdatebegin(this->up-CSDN博客

编译nbv_planner遇到的问题_nbvplanner-CSDN博客

4.usr/bin/ld: 找不到 -lUUID::UUID sudo apt-get install uuid-dev 还是找不到就自己软链接:locate libuuid搜索位置 然后创建软链接 cd /usr/lib/ sudo ln -s x86_64-linux-gnu/libuuid.so libUUID::UUID.so

5.error: ‘class ignition::math::v6::Vector3<double>’ has no member named ‘x’ 类似很多vel.z的xyz的格式改为 vel→X()格式,但是不能全局替换,只能根据报错部分一点点替换改为大写的X()Y()Z()

6.将 interface_nbvp_rotors 的 CMakeLists.txt 从

include_directories(${Eigen_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS})

更改为

include_directories(${Eigen_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS} ../../../devel/include)

7.修改添加头文件 gazebo_imu_plugin.cpp里面的

gravity_W_ = world->Physics()->GetGravity();

imu_parameters.gravity_magnitude = gravity_W_.GetLength();

更换为
#include <gazebo/physics/World.hh>(添加到最前面)

(替换上面位置)  gravity_W_ = world_->Physics()->World()->Gravity();imu_parameters_.gravity_magnitude = gravity_W_.Length();

编译

catkin build 

成功!

几个运行问题:

对于模拟演示启动

运行失败noetic启动方式改变:

$(find rotors_description)/scripts/xacro.py

改为:

$(find rotors_description)/scripts/xacro

还有部分问题根据别人的回答解决:

​​​​​​​Error running demo launch file · Issue #30 · ethz-asl/nbvplanner · GitHub

https://orfaustria1.com/?_=/ethz-asl/rotors_simulator/issues/710#KJWqMdlUlBnsIvkdRR+uhIT4

运行:

roslaunch interface_nbvp_rotors flat_exploration.launch

成功!

相关文章:

ubuntu20复现NBV探索

官网代码 后退地平线下一个最佳景观规划师 这个代码有些久远&#xff0c;issue里面有人已经在ubuntu20里面使用了3dmr&#xff0c;但是他那个代码我也运行不成功&#xff0c;docker网络一直也不佳&#xff0c;所以还是自己重新修改源码靠谱。 最终实现的代码等有时间上传到gi…...

【51单片机仿真】基于51单片机设计的温湿度采集检测系统仿真源码文档视频——文末资料下载

演示 目录 1.系统功能 2.背景介绍 3.硬件电路设计 4.软件设计 4.1 主程序设计 4.2 温湿度采集模块程序设计 4.3 LCD显示屏程序设计 5.系统测试 6.结束语 源码、仿真、文档视频等资料下载链接 1.系统功能 该系统通过与AT89C51单片机、LCD1602显示屏和DHT11温湿度传感器…...

【Hadoop-驯化】一文学会hadoop访问hdfs中常用命令使用技巧

【Hadoop-驯化】一文学会hadoop访问hdfs中常用命令使用技巧 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免费获取相关内容文档关注&am…...

【Spring】Bean详细解析

1.Spring Bean的生命周期 整体上可以简单分为四步&#xff1a;实例化 —> 属性赋值 —> 初始化 —> 销毁。初始化这一步涉及到的步骤比较多&#xff0c;包含 Aware 接口的依赖注入、BeanPostProcessor 在初始化前后的处理以及 InitializingBean 和 init-method 的初始…...

决策树总结

决策树总结 决策树是一种广泛应用的机器学习算法&#xff0c;它模拟了人类进行决策时的逻辑思维过程&#xff0c;通过构建一棵树状结构来进行数据的分类或回归预测。决策树模型因其直观易懂、易于解释、能够处理多类问题以及无需进行复杂的特征缩放等优点&#xff0c;在数据挖…...

通俗易懂!495页看漫画学Python入门教程(全彩版)Git首发破万Star

前言 在编程的世界里&#xff0c;Python无疑是一颗璀璨的明星。从最初作为打发圣诞节闲暇时间的项目&#xff0c;到如今成为最受欢迎的程序设计语言之一&#xff0c;Python以其简洁、易学、强大的特点吸引了无数编程爱好者。然而&#xff0c;对于初学者来说&#xff0c;编程的…...

websocket实现简易聊天室

websocket实现简易聊天室 又做了一个关于websocket广播和在线人数统计的练习&#xff0c;实现一个简易的聊天室。 前端vue3 前端里的内容主要包含&#xff1a; 1.css的animation来实现公告从右到左的轮播。 2.websocket的onmessage里对不同消息的处理。 <template>&l…...

vulhub-wordpress

1.打开wordpress关卡&#xff0c;选择简体中文 添加信息——点击安装WordPress 安装完成——登录 点击外观——编辑主题 可以加入一句话木马&#xff0c;但是我写入的是探针文件 也可以去上传一个带有木马的主题 上传之后会自动解压 1.php就是里面的木马文件...

【机器学习算法基础】(基础机器学习课程)-10-逻辑回归-笔记

一、模型的保存与加载 逻辑回归是一种常见的机器学习算法&#xff0c;广泛用于分类问题。为了在不同的时间或环境下使用训练好的模型&#xff0c;我们通常需要将其保存和加载。 保存模型 训练模型&#xff1a;首先&#xff0c;你需要用你的数据训练一个逻辑回归模型。例如&…...

自动驾驶行业知识汇总

应届生月薪2W的自动驾驶开发、机器人、后端开发&#xff0c;软件开发该如何学习相关技术栈_哔哩哔哩_bilibili 两万字详解自动驾驶开发工具链的现状与趋势 (qq.com) 九章智驾 - 2023年度文章大合集 (qq.com) 九章 - 2022年度文章大合集 (qq.com)...

C#根据反射操作对象

前言 反射使用&#xff0c;让我们的程序可以动态增加一些功能&#xff0c;让原本固化的步骤逻辑变得动态&#xff0c;这是它的优点。当然使用反射首次加载会有性能损耗以及使用复杂&#xff1b;但是现在大家都在讲动态&#xff0c;使用好它应该是一个重要的编程理念提升。MVC、…...

打包python脚本(flask、jinja2)为exe文件

20240803 概述 在我很早时候学习python的时候&#xff0c;就利用过某个工具将其打包为exe文件&#xff0c;然后在没有python环境的机器上运行&#xff0c;这样可以减少安装python环境和各种库的过程。 最近在开发一个在虚拟机上运行的程序的时候就遇到了打包一些环境的问题&…...

嵌入式初学-C语言-练习三

#部分题目可能在之前的博客中有&#xff0c;请谅解&#xff0c;保证常见题型均被发出# 1.计算n以内所有正奇数的和 ? n值通过键盘输入 代码&#xff1a; 1 /*2 需求&#xff1a;计算n以内所有正奇数的和 ? n值通过键盘输入3 */4 #include <stdio.h>5 6 int main()7 …...

最新版Sonible Plugins Bundle v2024 winmac,简单智能,持续更新长期有效

一。Sonible Plugins Bundle v2024 win&mac Sonible Plugins Bundle是一款以创作者为中心的智能音频插件系列。这些工具的特点是易于使用&#xff0c;搭配高级处理和优质音质。pure:bundle的所有插件都由sonible的智能插件系列中使用的技术驱动&#xff0c;但在设计时考虑到…...

J032_实现简易版的B/S架构

一、需求描述 实现简易版的B/S架构 1.1 Server package com.itheima.tcp4;import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.Executors; import java.uti…...

【前端面试】五、框架

目录 1 Vue2 2 Vue3 3 React 4 Angular 1 Vue2 Vue2 是目前仍被广泛使用的前端框架之一&#xff0c;其特点包括响应式数据绑定、组件化开发等。 响应式系统&#xff1a;Vue2 使用 Object.defineProperty 来实现数据的响应式。每个组件实例在创建时&#xff0c;会将 dat…...

C语言 | Leetcode C语言题解之第316题去除重复字母

题目&#xff1a; 题解&#xff1a; char* removeDuplicateLetters(char* s) {int vis[26], num[26];memset(vis, 0, sizeof(vis));memset(num, 0, sizeof(num));int n strlen(s);for (int i 0; i < n; i) {num[s[i] - a];}char* stk malloc(sizeof(char) * 27);int stk…...

本地部署 Llama-3-EvoVLM-JP-v2

本地部署 Llama-3-EvoVLM-JP-v2 0. 引言1. 关于 Llama-3-EvoVLM-JP-v22. 本地部署2-0. 克隆代码2-1. 安装依赖模块2-2. 创建 Web UI2-3.启动 Web UI2-4. 访问 Web UI 0. 引言 Sakana AI 提出了一种称为进化模型合并的方法&#xff0c;并使用该方法创建大规模语言模型&#xff…...

Evaluating the Generation Capabilities of Large Chinese Language Models

文章目录 题目摘要相关工作CG-Eval实验 题目 评估大型中文语言模型的生成能力 论文地址&#xff1a;https://arxiv.org/abs/2308.04823 项目地址&#xff1a;http://cgeval.besteasy.com/ 摘要 本文介绍了 CG-Eval&#xff0c;这是有史以来第一个全面的自动化评估框架&#xf…...

YOLOv8添加注意力模块并测试和训练

YOLOv8添加注意力模块并测试和训练 参考bilibili视频 yolov8代码库中写好了注意力模块&#xff0c;但是yolov8的yaml文件中并没用使用它&#xff0c;如下图的通道注意力和空间注意力以及两者的结合CBAM&#xff0c;打开conv.py文件可以看到&#xff0c;其中包含了各种卷积块的…...

「Unity3D」自动布局LayoutElement、ContentSizeFitter、AspectRatioFitter、GridLayoutGroup

布局元素与布局控制器 布局元素实现ILayoutElement接口&#xff0c;布局控制器实现ILayoutController接口&#xff0c;后者根据前者的属性控制具体布局——有些布局控制器也是布局元素&#xff0c;即同时实现这两个接口&#xff0c;如LayoutGroup。 public interface ILayout…...

【Golang 面试 - 进阶题】每日 3 题(十六)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/UWz06 &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏…...

Redis2

为什么Redis要给缓存数据设置过期时间&#xff1f; 内存是有限的&#xff0c;如果缓存中的所有数据都是一直保存&#xff0c;很容易OOM Redis如何判断数据是否过期&#xff1f; 通过过期字典来保存数据的过期时间 过期删除策略 Redis采用的是定期删除惰性删除 Redis内存淘…...

C语言--函数

1. 函数定义 语法&#xff1a; 类型标识符 函数名&#xff08;形式参数&#xff09; {函数体代码 } &#xff08;1&#xff09;类型标识符 --- 数据类型&#xff08;函数要带出的结果的类型&#xff09; 注&#xff1a;数组类型不能做函数返回结果的类型&#xff0c;如果函…...

Shell 编程的高级技巧和实战应用

第一步&#xff1a;高级函数和模块化设计 1.1 高级函数设计 探讨函数的参数处理和默认值设置。示例&#xff1a;实现一个可以处理可选参数的函数。 #!/bin/bashgreet() {local name${1:-"World"} # 如果没有提供参数&#xff0c;使用默认值 "World"ech…...

VMWare虚拟机如何连接U盘

检查配置 1&#xff09;Win R键&#xff0c;输入services.msc&#xff0c;打开服务。 2&#xff09;将AMware USB Arbitration Services 服务开启&#xff0c;并设置为自动启动&#xff1b; 连接U盘 目前作者了解有两种连接方式&#xff0c;如有其他连接方式&#xff0c;欢…...

【学习笔记】后缀自动机(SAM)

前言 之前对后缀自动机的理解太浅薄了&#xff0c;故打算重新写一篇。 后缀自动机是什么 后缀自动机是一个字符串的所有后缀建起来的自动机。它把所有子串&#xff08;后缀的前缀&#xff09;用 O ( n ) O(n) O(n) 的空间装了起来。后缀自动机的边会构成一个 D A G DAG DA…...

Godot的节点与场景

要深入的理解节点与场景&#xff0c;我们需要跳出这两个概念来看他。说的再直白一些godot本质就是一个场景编辑器&#xff01; 场景的概念应该在我们平时看电影看电视时会经常提到&#xff0c;比如某一个打斗的场景&#xff0c;这个场景可能会被设在某一个街道&#xff0c;那么…...

C++ 学习(2) ---- std::cout 格式化输出

目录 std::cout 格式化输出简介使用成员函数使用流操作算子 std::cout 格式化输出简介 C 通常使用cout输出数据&#xff0c;和printf()函数相比&#xff0c;cout实现格式化输出数据的方式更加多样化&#xff1b; 一方面&#xff0c;cout 作为 ostream 类的对象&#xff0c;该类…...

前端拿不到Long类型成员变量,用@JsonSerialize(using = ToStringSerializer.class)序列化一下

EqualsAndHashCode(callSuper true) Data TableName("la_school_business") Schema(description "商务负责人表") public class SchoolBusiness extends BaseEntity {private static final long serialVersionUID -7124481085999629236L;/*** 商务负责人…...

网站流量查询网站统计查询/网站维护中是什么意思

字典 ~~不定时更新&#x1f383;&#xff0c;上次更新&#xff1a;2023/02/28 &#x1f5e1;常用函数&#xff08;方法&#xff09; 1. dic.get(key) --> 判断字典 dic 是否有 key&#xff0c;有返回其对应的值&#xff0c;没有返回 None 举个栗子&#x1f330; dic …...

网站开发是什么部门/如何搭建企业网站

在使用SVN过程中可能有时因为一些原因,不想再使用SVN了,我们想取消与SVN的关联,让Android项目恢复到原始状态,不想有哪些花花绿绿的颜色了,怎么办呢,操作起来很简单 把Android Studio切换到Project模式,有个.idea文件夹,在该文件夹下找到vcs.xml文件,打开该文件,把里面的内容替…...

北京网站首页排名公司/企业培训课程

心态炸裂 昨晚忙活到半夜照着攻略&#xff0c;一顿操作&#xff0c;中间虽然有几个小错误还都纠正过来了&#xff0c;成功搭建好了博客。结果今天下午想着去给博客换个好点的theme&#xff0c;结果照着一顿操作&#xff0c;各种报错&#xff0c;关键是我也不懂也找不到如何解决…...

福州网站制作计划/守游网络推广平台登陆

【下载一键安装软件包】 百度云地址&#xff1a;https://pan.baidu.com/s/1TZqGKtE-46gxW96Ptfp4gA 网址&#xff1a;https://lnmp.org/ 【步骤】 通过第三方远程工具将软件包传入后,使用tar命令解压,进入解压后的文件夹,执行install.sh,如果是无人值守的请在官网生成无人值守脚…...

wap网站制作软件/上海疫情又要爆发了

1. 基本心态 这些优点共同叠加&#xff0c;那是100分&#xff0c;我要做的是&#xff0c;自测他测评估下自己的分数&#xff0c;但是&#xff0c;但是&#xff0c;但是&#xff0c;不要追求完美&#xff0c;而是依据这个100分的目标去不断优化自己&#xff0c;这是一个长期的复…...

做网站 怎么选择公司/2022真实新闻作文400字

最近看Google图书&#xff0c;令人感到困惑的无非是无法自由的地下载其图片。以至于网上充斥着Google图书下载器。查看源代码&#xff0c;着实让人困惑不已。还好有IE Developer Tools&#xff0c;才大致将其UI结构搞的一知半解。至于图片的下载这倒是需要在仔细研究下。顺便做…...