C++
文章平均质量分 79
红色小小螃蟹
这个作者很懒,什么都没留下…
展开
-
ROS2学习(五)进程内topic高效通信
下面的例子是在一个进程中创建两个节点,都是用intra_process,包括一个发不器的节点,和一个订阅器的节点,二者都使用了节点的进程内通信,并通过unique指针打印了其中地址。每次通信的时候,二则消息指针的地址都是一致的,即消息没有通过UDP传输,而是通过知己读写内存区块传输的。使用intra_process的节点,其中的topic可以同时支持进程内核进程外的通信,只不过进程外的通信仍然使用UDP作为媒介。对ROS2有一定了解后,我们会发现ROS2中节点和ROS1中节点的概率有很大的区别。原创 2023-08-06 19:49:46 · 881 阅读 · 0 评论 -
ROS2学习(四)进程,线程与节点的关系
单线程节点执行器会将所有已添加到维护队列的节点限制在一个线程内处理所有回调,而多线程节点执行器会按照设备的性能,动态分配线程为队列内的节点处理回调。在ROS2中,节点和进程的概念完全分开的,节点是独立于操作系统进程或者线程的概念的抽象定义,它虽然依旧承载着通信的功能,但是并不作为独立的进程运行,而是嵌入进程中,作为一个抽象的实体进行运作。节点,英文是node,在ROS2中,节点是一个抽象的实体,它可以代表某种或某类特定功能的抽象集合体,它可以存在于进程中,也可以存在于线程中。原创 2023-08-03 22:55:07 · 1358 阅读 · 0 评论 -
ROS2学习(三)colcon编译某个包并提供给其他包依赖使用
简单的ROS2的例子学习可能不会遇到这个问题。但是我们仍然难免会思考为什么ROS2官方提供的包比如rclcpp,这些包我们使用的时候可以直接添加依赖,使用find_package(rclcpp REQUIRED),就可以找到。我们自己编译的包是否也可以提供给其他包使用。 如果稍微大一些的工程,会有很多人开发,那么就有可能自己开发的包是一个共通的包,希望提供您给其他人使用,如何才能做的那? 本文通过一个例子来说明如何解决这种依赖问题。例子是在一个ROS2的工程中做了两个包一个commo原创 2023-07-27 23:46:36 · 1427 阅读 · 1 评论 -
理解特殊成员函数的生成(构造,析构,拷贝构造函数等)
移动操作仅在需要的时候生成,如果生成了,就会对非static数据执行逐成员的移动,那意味着移动构造函数根据rhs参数里面对应的成员移动构造出新的部分,移动赋值运算符根据参数里面对应的非static成员移动赋值。如果你声明一个拷贝构造函数,但是没有声明拷贝赋值运算符,如果写的代码用到了拷贝赋值,编译器会帮助你生成拷贝赋值运算符重载。默认构造函数仅在类完全没有构造函数的时候才会生成(防止编译器为某个类生成构造函数,但是你希望的那个构造函数是由参数的)。与上面的拷贝操作对应的是移动操作的并不是独立的。原创 2023-07-22 17:37:17 · 171 阅读 · 0 评论 -
ROS2学习(二、写一个简单的C++例子)
在安装完ROS2后,就开始接触ros2的很多概念,东西很多,包括编译,中间件,节点等与ros1都有一些区别。如果没有ROS1的基础,直接接触这些概念,可能更难理解。最简单的开始,就是先写一个简单的程序熟悉一下,把所有东西用一下,然后在理解所使用的每一个点的概念,这样更容易理解。就如同所有语言学习前先写一个“hello, world”一样。ROS2 也从“hello,world”开始。本文就实现了一个定时器,通过定时器,触发固定频率的发出“hello world”.原创 2023-07-21 00:18:56 · 725 阅读 · 0 评论 -
函数 重载,重写,重入
最近被问到函数的重载,重写和重入有什么区别,突然一问这些概念,有点懵了,这里梳理总结一下这三个概念。其实重载,重写和重入完全是不同维度的概念,但是名字比较像,所以经常被拿来比较。尤其是重载和重写是最容易被比较的。这两个概念也是针对C++的,对于C语言的语法,重载和重写都是不支持的。下面也会详细说一下为什么C不支持。原创 2023-06-04 22:28:15 · 560 阅读 · 0 评论 -
OPENCV 寻找图形最大内接矩形
轮廓的最大外接矩形,Opencv有提供的现成的算法,最大内接圆也有提供的算法。但是没有现成的内接矩形的算法。本文使用C++实现了取轮廓最大内接矩形的方式,供大家参考。实现的基本思路是:处理图片为灰度图其实实现的代码,直接就读入的是一张灰度图图片这一步省略了。当然如果实现起来,opencv也很容易实现。坐标转换寻找轮廓的边缘,找到轮廓的主方向的角度。通过仿射转换,主方向作为x轴。统计有效栅格。.........原创 2022-08-07 12:10:41 · 6258 阅读 · 9 评论 -
Opencv 统计灰度图所有灰度值
一个简单的尝试,统计灰度图中共有哪些像素值。 思路:建立256大小的数组,以像素值为下标,遍历所有像素,对应像素值位置加1, 所有不为0的位置的下标即为图片中存在的像素值。...原创 2022-06-12 18:13:19 · 2235 阅读 · 0 评论 -
Ubuntu18.04 使用doxygen生成注释文档
在程序开发的过程中,经常遇到的是与别人交接程序,直接看别人代码是很头疼的一件事情,更何况现在有一些人写的程序非常的烂,几百行一个的函数,瞎起名字的变量,简直是代码自带加密功能,对人非常不友好。本人以前的公司,要求的比较严格,系统设计详细设计各种文档都是比较全的,设计完成后再写代码,给别人解释程序的时候,将详细设计文档发给别人就可以了。可以避免直接看代码的问题。在现在的工作时遇到的问题就是开发的周期非常短,提出需求来就马上要功能,根本没有设计一说,时间长了搞得非常难受,尤其多人参与一个模块的项目。下面原创 2022-03-13 00:17:55 · 2290 阅读 · 0 评论