- 博客(537)
- 资源 (7)
- 收藏
- 关注
原创 斗破C++编程入门系列之八:函数的定义与调用
1.函数的定义函数定义的语法形式是:类型标识符 函数名(参数表)语句序列很多书籍会告诉会把函数讲的很复杂,其实没那么复杂,很多名词的定义只会增加C++的神秘感,但是真的有那么神秘吗?我们来看看代码//定义类型//名字int age;//年龄int level;//斗之气等级//函数:功能是升级斗之气等级//斗气等级提升w.show();//萧炎qDebug()
2024-08-18 12:40:57
450
原创 斗破C++编程入门系列之七:自定义数据类型
我们来看两种数据类型,枚举和结构体枚举类型 enum枚举类型是一个包含多个含义的类型。我们看一下代码:w.show();//枚举WIN,//赢LOSE,//输TIE,//平CANCEL//取消qDebug()
2024-08-17 18:11:23
309
原创 斗破C++编程入门系列之六:算法的基本控制结构之循环结构
成人礼后,加列家族的人并没有闲着,他们通过买断拍卖行的药材,来与萧家的坊市进行恶性竞争,还好这时还是药老相助,他与拍卖行的雅妃见面,成功拿到了所有的药材,并帮助萧父炼制了大量的凝血散,在萧父惊愕的表情中,三人的淡淡一笑,就好像老朋友见面一样简单。是不是感觉for循环有些别扭,有些时候也不要进牛角尖,C++也是语言,也有他固定的用法,只要记住这个样式使用就可以了,假如你自己去发明一个语言,相信发明的语言也是有固定句式和用法的,是不是?大家可以打印一下就知道是怎么回事了,现在让我们把它改成for循环的用法。
2024-08-17 08:39:13
320
原创 斗破C++编程入门系列之五:算法的基本控制结构之选择结构
在萧父购买的筑基灵液的帮助下,萧炎斗之气突破到了六段,在几个月之后的测验中,也顺利的达到了七段斗之气,并达到了参加成人礼的资格。在成人礼上,萧炎面对族人萧宁的挑战,也显得并不吃力,并在奋力一击下突破至斗之气八段,但是此时输不起的萧宁缺趁人之危,不但偷袭还服用了禁药增气散,萧炎是否能够化险为夷,请听下回分解。最后有个特殊的句式switch case,这个在C++中用的蛮多的,因为他可以让你的代码看起来清爽整洁。切换不同level等级,看看会打印出什么,注释掉break;选择结构很简单,就是if…
2024-08-16 23:03:18
341
原创 斗破C++编程入门系列之四:运算符和表达式
药老为了救因炼气而陷入昏迷的萧炎,将自己的斗气输入给萧炎,这也让萧炎成功突破之斗之气四段。而这也为萧炎突破斗之气五段打下了基础,与此同时为了能够为继续教萧炎如何炼药,药老需要萧炎去收集更多的药材,这时身无分文的萧炎耍起了了小聪明,竟然把药老之前炼制的筑基灵液拿去拍卖,而蒙在鼓里的萧父为了儿子,竟然不惜重金又从拍卖行又买了回来,萧炎深感父亲的良苦用心,发誓一定不辜负父亲的期盼。第一季☞第二季前2集☞特别篇1☞第二季3~12集☞特别篇2沙之澜歌☞第三季☞第四季☞三年之约☞缘起☞年番。
2024-08-14 00:29:39
565
原创 斗破C++编程入门系列之三:数据结构
有符号数以二进制补码形式存储,最高位为符号位,“0”表示正,“1”表示负。其实在我们大部分编程时,内存占用并不是那么夸张,我们使用int、double、bool就可以了,short、long、signed、unsigned可以不用管他,之所以他们存在是因为C++是一门为效率而生的语言,为了对内存的节省所以多出了这些数据类型。萧炎把药材交给药老来炼制,药老一边炼药一边辅导萧炎,由于萧炎的斗之气只有三级,在手心凝聚斗气之时,身体无法承受而口吐鲜血,萧炎能否挺过难关并学会炼药,请听下回分解。
2024-08-12 22:44:04
864
原创 斗破C++编程入门系列之二:Qt的使用介绍
我们以前学习C++,都是使用Visual Studio,打印结果在一些黑框框里,感觉自己变成编程大神还有很长的距离要走,为了给大家增强一些信心,我们这里使用Qt作为我们的开发工具,Qt可以快速地搭建界面,可以很快的看到我们要编程的效果。这里我使用的是Qt5.14.2的版本,虽然现在已经有了Qt6的更高版本,但是对于我们学习C++基础来说Qt5的版本已经足够。
2024-08-11 18:14:06
1418
原创 斗破C++编程入门系列之前言
所以这里我们引入了青年朋友比较喜欢的动漫《斗破苍穹》系列,根据不同的学习阶段逐渐提升,这样对自己的实际水平会有一个更好的理解和激励,好了让我们一起跟着萧炎哥哥一起提升我们的斗之气(C++)水平吧。关于英文,很多人包括我自己学了很久也没能学好,可能我自己的话比较笨吧,但是更多的我觉的是方法,没有正确的方法,英语学习起来也是事倍功半。斗气有十个阶别,斗者,斗师,大斗师,斗灵,斗王,斗皇,斗宗,斗尊,斗圣,斗帝,等级森严。人们不断修炼斗气令斗气的繁衍达到了巅峰,从此,每个人 的生活与斗气息息相关,密不可分。
2024-08-11 16:45:27
1983
原创 Cartographer重入门到精通(三):前后端参数解读(部分)
可能要阅读Cartograher数据处理的代码才会知道,Cartograher处理数据的方式是:只有当同时接收到所有的传感器数据之后,才会发布其中最早的一个传感器数据,所以如果激光数据频率比较低,会影响到其他数据的快速发布,所以分成10份是为了加速其他穿插在其中的传感器数据的使用。更快的获取数据,就可以更好的将一帧有畸变的激光数据转换为一帧连续的没有畸变且即时的数据。为了降低点云的计算量,我们通常会对点云进行降采样,然而一种简单随机的采样会使得远处稀疏的点云丢失,而近处的点云仍然冗余。
2024-07-21 20:57:29
823
原创 Cartographer重入门到精通(二):运行作者demo及自己的数据集
这里纯定位的“纯”是相对于建图来说,纯定位的时候地图是已知的,使用之前建立好的地图进行纯粹的定位功能,所以这个demo并不像建图一样占用大量的cpu。这也是carto的亮点,他可以在精度比较差的激光雷达上稳定运行,证明了carto算法的通用性和高效性,并不挑硬件和精度。这个demo是个大杀器,我们知道很多场景是不断变化的,那么我们之前建立的激光地图可能就会失效,那我们频繁的更新激光地图是不是太麻烦,所以我们人为的设置一些路标,就可以大大提高我们定位时的稳定性,实际测试效果也很好。使用生成的地图进行定位。
2024-07-13 17:15:55
1618
6
原创 rs232和can的区别
综上所述,RS232和CAN在通信方式、应用场景、传输距离、通信速度以及网络结构等方面存在显著差异,使得它们各自适用于不同的应用需求。CAN总线则广泛应用于汽车的控制系统、工业自动化控制等领域,因为它能够支持多主通信,即多个节点可以同时发送和接收信息。RS232主要用于计算机与外部设备的通信,如鼠标、打印机等,以及电子设备之间的数据传输。RS232和CAN的主要区别在于通信方式、应用场景、传输距离、通信速度以及网络结构。CAN总线网络结构中没有主从之分,每个设备都是平等的,支持多主和多从的通信方式。
2024-06-21 10:41:05
714
原创 Vue3-cloud-music前端探索
回调函数是handleThemeSwitchUpdateChange。ts中的自定义类对象mainStore。主题颜色切换使用了n-switch。
2024-06-06 09:37:38
238
原创 单个反光柱作为landmark,因输入角度异常导致ceres后端崩溃
使用ComputeUnscaledErrorWithoutRotation替换原先的ComputeUnscaledError。现在后端优化不会再抛出-nan的错误了。
2024-06-04 08:41:04
289
原创 Qt工程提升类后, CMake找不到头文件
https://blog.csdn.net/qq_45526401/article/details/134724277?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogOpenSearchComplete%7ERate-1-134724277-blog-137461528.235%5Ev43%5Epc_blog_bottom_relevance_base2&depth_1
2024-05-16 11:36:04
471
原创 .git文件过大清除
有时自己上传了大文件又删除就会造成.git文件过大。补充一下jar包在linux和windows下通用。bfg-repo-cleaner这个工具挺好的。
2024-05-10 11:46:24
109
原创 Error Code 12 Msg: Unable to find uri[model://ground_plane]
ubuntu16.04 安装turtlebot3仿真,运行之后发现报这个错误,然后没有小车。
2024-04-23 15:57:25
344
原创 You must call ros::init() before creating the first NodeHandle
在代码里我们先实例化了qnode类,所以在qnode的头文件中,我们先实例化了ros::NodeHandle nh,后调用了ros::init(),导致程序报错。你必须在创建NodeHandle之前先调用ros::init()函数。qnode.h中注释没有使用的NodeHandle变量。
2024-04-01 12:08:04
636
原创 linux 获取cpu和硬盘id
std::string get_harddisk_info()来获取硬盘id。直接代码,有的电脑cpuid可能没有,代码头文件没有理清但是满足编译需求。std::string getcpuid() 来获取cpu id信息。
2024-03-21 17:30:36
618
原创 ConnectedComponents类
std::map是一个关联容器,它要求元素的键是唯一的。如果尝试插入一个已经存在的键,emplace函数将不会进行插入操作,而是返回指向已经存在的元素的迭代器。就是把一个本来应该是网状的结构变成了单链,就好像你和朋友是小李,小李的朋友是小王,那我和小王也是朋友,用单链串起来就可以。所以这里的forest_其实是在维护一个单链关系,就像作者说的压缩路径,什么意思呢?我们可以通过检查返回的迭代器是否等于std::map::end来确定插入是否成功。这个类有个变量很有意思。
2024-03-17 20:22:52
60
原创 tf2使用注意事项
虽然感觉tf2_ros::TransformListener没有被使用,但是这个变量在程序运行时要一直存在的,如果被定义为临时变量就打错特错了。
2024-03-08 17:41:16
171
原创 qt如何配置ros环境
在Qt5.7的版本可以使用bash -i -c来启动qt,让Qt自己识别系统环境,不知道为什么Qt在之后的版本,这样使用都失效了。因为它会默认把CMAKE_PREFIX_PATH修改掉。网上还有安装ros插件版本的qt creator,感觉失去了一些灵活性。自己测试发现,只要在CMakeList.txt中加入ros的库信息即可。但是运行的时候还要配置ROS的一个变量ROS_MASTER_URI。具体位置在qt的Build Environment。这样编译是没有问题的。
2024-03-08 13:57:34
473
原创 CMakelist uninstall
大家可能都用过sudo make install,但是如何uninstall却不知道。要求build文件夹存在且install_manifest.txt文件夹还在。如果没有需要先编译安装后再卸载。
2024-03-01 10:39:42
316
原创 cartographer ceres后端优化
这里引用一篇文章作用一:用户可以选择使用Problem::AddParameterBlock显式添加参数块;在显式添加的时候ceres会内部进行额外的正确性检查。当Problem::AddParameterBlock()不存在时,Problem::AddResidualBlock()会隐式添加参数块,因此不需要显式调用Problem::AddParameterBlock()函数。ps:类似构造函数,显式构造函数。
2024-02-28 16:24:43
625
原创 gitee使用
注意:也不知道什么原因,第一次要git pull origin HEAD。参考网址:https://gitee.com/layene/gitee。
2024-01-03 10:15:20
429
原创 VIO和预积分(蒙圈的请过来,带你不蒙圈)
大佬的世界,你不会懂,就像一行行公式,人家觉得很简单,你却要读很多遍,不过还好,我们从普通人的世界来解读VIO和预积分。
2023-09-26 17:48:58
378
原创 Rviz插件分析(status_panel)
看不懂的先在上面学习一波,主要分为5个部分:PACKAGE SETUP (自身包的配置)、QT(QT环境的配置)、FILES(文件引入)、LIBRARY(生成库文件设置)、INSTALL(打包发布的配置)我们可能还注意到了插件的icons图标,放一个png在路径/icons/classes/*.png即可。这里StatusPanel继承了rviz::Panel类,覆写了2个函数。再来看看status_panel.h。先来看看CMakeList.txt。使用了2个Qt控件,用于接收和显示。
2023-09-22 16:27:33
292
Principles of Robot Motion Theory, Algorithms, and Implementations
2018-03-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅