1.环境搭建

1.1.安装包

ubuntu 安装 liblas

ubuntu18.04 安装octomap库

CMakeLists.txt中还要求使用VTK库,这个好像是OpenCV显示用的库,搜了一下感觉安装比较麻烦,我没装也没有报错。

1.2.ceres版本问题

报错‘integer_sequence’ is not a member of ‘std’

解决:视觉十四讲第六章:编译ceres时:error: ‘integer_sequence’ is not a member of ‘std‘错误

注意看这篇博客下面的评论,由于我现在电脑上使用的是ceres2.0.0,这个版本的ceres要求使用C++14编译,而源码的工程中是使用c++11编译,所以这里也可以按照博客下面评论说的那样,把编译标准改成C++14,问题解决。

1.3.lz4 编译冲突

报错error: conflicting declaration ‘typedef struct LZ4_streamDecode_t LZ4_streamDecode_t’

解决:ubuntu 18.04 lz4 编译冲突

1.4.roslaunch命令出错

报错:运行launch文件的时候,出现如下错误:

RLException: Roslaunch got a 'No such file or directory' error while attempting to run:xterm -e /opt/ros/melodic/lib/rviz/rviz -d /home/cc/interactive_tool/rviz_cfg/interactive_tool.rviz __name:=rviz __log:=/home/cc/.ros/log/cfa36604-2ff0-11ec-ab7b-1cbfcec2966b/rviz-3.logPlease make sure that all the executables in this command exist and have
executable permission. This is often caused by a bad launch-prefix.
The traceback for the exception was written to the log file

解决
[ROS] 编辑launch文件时,使用launch-prefix = “xterm-e“出错

学习:launch-prefix参数设置什么?
暂时就认为这个参数后面接一个命令,但是不是ros相关的命令,比如这里用的就是操作系统新开一个窗口的命令。然后后面正常书写ros相关的命令,最后的执行效果就是先执行操作系统相关的命令,比如这里新开一个窗口,然后再执行ros相关的命令。

仍然存在的问题:按照上面博客中的修改之后,启动roslaunch的时候出现下面的警告。这里InteractiveLayer这个节点挂掉了,原因是给他传入的数据路径不对,因为当前自己还没有数据,所以这里不要紧。但是报错-x可能在gnome-terminal后续版本中移除这个警告,还没解决。

# 参数“-x”弃用并可能在 gnome-terminal 的后续版本中移除。
# 使用“-- ”以结束选项并将要执行的命令行追加至其后。

补充:这个问题现在又解决了,不过这次只是警告-x弃用并可能在gnome-terminal的后续版本中移除,并没有红色的错误。仔细排查之后发现是原来的launch文件中后面的args选项中忘了加-d的前缀。加上-d的前缀之后就不报错了。

shell脚本中打开新终端,新tab

2.ros的工作空间结构还需要再熟悉

比如如下的别人写好的功能包,这个目录下是一个完整的功能包。


所以下载下来之后,正确的使用方法如下:

mkdir catkin_workspace/src
cd catkin_workspace/src
catkin_init_workspace  # 一定不要忘记这一句!这一句会在src目录下创建一个CMakeLists.txt,这个文件和功能包没关系,只是声明这是一个工作空间
copy下载的功能包文件夹到这个目录下
cd ..
catkin_make
rosrun xxx xxxxx

也就是说,别人写好的功能包是放在一个完整的文件夹下的,这个文件夹的名字就是功能包的名字。然后使用者只需要把这个功能包文件夹拷贝到自己的catkin_workspace/src目录下,然后catkin_make就会编译这个功能包,然后就可以rosrun运行了。

一定注意

  • 总文件夹下的只有build/devel/src三个文件夹,其他什么都没有,没有CMakeLists.txt!
  • catkin_init_workspace是在src文件夹下执行!
  • catkin_make是在总文件下执行!

参考这个,最后下载的rivz的官方相关实例功能包的路径放置如下:


3.程序问题

3.1.边的构造到底是怎么来的?

相邻两帧之间的位姿关系是边吗?但是下一帧的位姿不是根据这一帧的位姿和观测关系计算出来的吗?

3.2.紧耦合和松耦合

紧耦合是两个节点之间只有一条边,也就是这个cost_function值来自于一条边,所以求雅克比矩阵的时候得到的就是一个矩阵,一个很大的矩阵。然后去优化这一条边。这样的好处是精度高一些,但是坏处是传感器依赖关系很强,如果一个传感器坏了,那么整个系统就都崩了。

松耦合是相邻的两个位姿之间有条边,每一条边都来自一个传感器,比如视觉里程计有一个边、轮速计有一个边,最后的cost_function就来自多条边,求雅克比矩阵的时候就有多个矩阵。

3.3.工程的组织?

比如在功能包的 src文件夹下新建了一个interactive_tool文件夹,并且主要的程序文件里都使用了interactive_tool的命名空间。这样做有什么好处?

3.4.功能包/src/tool/这个文件夹下的两个文件是测试用的吗?

这下面的两个文件并没有最后生成可执行文件,是在最开始写代码测试的时候使用的吗?

3.5.Hy_pannel.cpp文件的最后两句

rivz plugin 插件扩展机制 ROS探索总结(三十四)——rviz plugin

#include <pluginlib/class_list_macros.h>
PLUGINLIB_EXPORT_CLASS(interactive_tool::HyPannel,rviz::Panel )

这两句是不是把自己写的加载到rviz中?因为从头到尾没有看到自己写的这个面板类的实例化。

应该是这个问题,包括plugin_description.xml文件的描述,就是一个自己写的插件?

3.6.自己写的面板的位置?是被rviz自己确定的吗?

3.7.很多文件里都使用了命名空间,有什么好处?

防止命名重复?

hy_interactive_tool学习笔记相关推荐

  1. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  2. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  3. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  4. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  5. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  6. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

  7. 计算机基础知识第十讲,计算机文化基础(第十讲)学习笔记

    计算机文化基础(第十讲)学习笔记 采样和量化PictureElement Pixel(像素)(链接: 采样的实质就是要用多少点(这个点我们叫像素)来描述一张图像,比如,一幅420x570的图像,就表示 ...

  8. Go 学习推荐 —(Go by example 中文版、Go 构建 Web 应用、Go 学习笔记、Golang常见错误、Go 语言四十二章经、Go 语言高级编程)

    Go by example 中文版 Go 构建 Web 应用 Go 学习笔记:无痕 Go 标准库中文文档 Golang开发新手常犯的50个错误 50 Shades of Go: Traps, Gotc ...

  9. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

最新文章

  1. 机器学习Basics-第九期-CNN卷积神经网络详解
  2. python好用-Python里三个好用的调试神器
  3. 如何翻译英文PDF?如何翻译英文word文档?
  4. 一行Java代码实现混乱排序List集合
  5. 引用 Map 数据结构的排序问题
  6. 知识图谱在招聘推荐匹配的应用
  7. 【干货】如何利用NLP与知识图谱处理长句理解.pdf(附下载链接)
  8. ecshop备份数据 ecshop转移数据 ecshop更换主机
  9. 李宏毅机器学习——迁移学习
  10. word插入目录右边对不齐
  11. signalr判断对方是否和服务器断开_感情初期,如何快速判断对方是否合适,看这三件事...
  12. 微信浏览器 视频自动播放 解决方法
  13. 纯python实现线性回归——以各国人均GDP变化为例
  14. 大数据高频面试题之Hive的分区及其优势
  15. qtablewidget控件居中_单元格Edi期间QTableWidgetItem中的文本居中
  16. CentOS 7 安装微信小程序开发工具
  17. 【专家视点】公域流量的尽头:数字营销回归商业本质(20页精品PPT下载)
  18. jcp jsr_JCP成为“可怕的单一文化”
  19. android自定义打电话界面,两种Android打电话实现方法
  20. centos 7.x 安装python 3.6 并创建虚拟环境

热门文章

  1. 写计算机病毒吗,会写计算机病毒很牛吗
  2. [导入]升级PJBlog2.5到PJBlog2.6
  3. linux清除碎片命令,Linux磁盘碎片快速清理工具Kleandisk (2)
  4. IDEA 【强制推送】(Force Push)为灰色不能点击 解决办法
  5. 机器学习:美国50K工资分类(改)
  6. 2021年网络搭建与应用国赛样题6选路部分参考答案
  7. 古兰查询 之查询页面隐藏
  8. Java实现KMP代码
  9. apache2+php 初配置
  10. 部分固态硬盘性能测试