- 博客(48)
- 资源 (3550)
- 收藏
- 关注
原创 什么是slam
下面是一个简单的概念上的SLAM程序示例,它在没有噪声和误差的理想情况下,使用Python进行2D空间的地图构建和定位。请注意,这个示例只是为了解释SLAM的基本概念,并不能在真实世界中使用。SLAM是Simultaneous Localization and Mapping(同时定位和地图构建)的简称,它是一种用于自动机器(如机器人和无人驾驶车辆)的技术,用于同时进行自我定位和环境映射。在一个未知的环境中,机器人需要边移动边建立地图,同时需要知道自己在这个被建立的地图中的位置。
2023-06-02 20:47:58
3
原创 QStandardItemModel QTableView 怎样填满整个widget
在上述示例中,我们首先创建一个QWidget作为主窗口,然后创建一个QVBoxLayout作为主窗口的布局管理器。接下来,将TableView添加到布局管理器中,并使用setStretchFactor()方法设置布局属性为拉伸。要将QTableView填满整个widget,您可以使用布局管理器将QTableView放置在widget中,并设置适当的布局属性。通过使用布局管理器,您可以根据需要将QTableView自动调整为widget的大小,并确保它填满整个widget的可用空间。
2023-05-31 16:45:18
5
原创 QTableView、QTreeView和QListView各自的区别
您可以根据数据的结构和需求选择适合的视图组件来展示数据,以提供更好的用户体验和功能。QTableView、QTreeView和QListView是Qt框架中用于显示数据的三种不同的视图组件。QTreeView是一个树形视图,用于显示层次结构的数据,类似于文件资源管理器的目录结构。QListView是一个列表视图,用于显示一维的列表数据,类似于文件列表或邮件列表。适用于需要显示和编辑具有规则结构的表格数据的场景,例如数据库查询结果、电子表格等。适用于需要显示一维的简单列表数据,例如联系人列表、文件列表等。
2023-05-31 16:11:24
451
原创 DbgHelp的使用方法
DbgHelp是一个Windows平台下的调试器辅助工具,它提供了一些函数和数据类型,可以帮助开发者在调试时获取更多的信息。
2023-05-05 09:59:10
15
原创 如何使用 QToolTip
QToolTip 是 Qt 框架中的一个类,它可以用于在鼠标悬停在控件上时显示提示信息。以上就是使用 QToolTip 的基本步骤。希望这个简短的教程能够帮助您解决使用 QToolTip 的问题。方法类似,但是允许在控件不可用时仍然显示提示信息。在需要显示提示信息的控件上,设置。在需要显示提示信息的控件上,开启。
2023-05-05 09:46:21
17
原创 如何在Qt中实现子控件和父控件的同步移动
在Qt中,可以通过重写子控件的moveEvent()函数来实现子控件和父控件的同步移动。这样,当子控件移动时,父控件也会同步移动。
2023-04-27 14:08:03
62
原创 重写Qt中的Widget移动事件
方法中,我们计算了Widget移动的距离,并更新了Widget的位置;使用以上示例代码,您便可以成功地重写Qt中的Widget移动事件了。方法中,我们记录了鼠标点击时Widget的位置;在这个示例代码中,我们创建了一个名为。的自定义Widget,并重写了其中的。方法中,我们释放鼠标并完成了移动。
2023-04-25 17:54:00
390
原创 qt设置小数点精度位数
在Qt中,我们可以使用QString::number()函数将float类型转换为QString类型以便在界面上显示。该函数默认显示6位小数,但我们也可以通过设置第二个参数来控制小数点位数。在上面的代码中,参数’f’表示将数值格式化为浮点数,2表示保留2位小数。
2023-04-25 14:41:25
42
原创 QDebug
当您使用Qt框架中的Qdebug时,它会在调试过程中输出信息。默认情况下,Qdebug语句在发布版本中不会被编译到可执行文件中。但是,在调试版本中,这些语句会被编译进去,以便您可以使用Qt Creator中的调试器进行调试。这将强制编译器在发布版本中包含Qdebug语句,但这可能会导致可执行文件变得更大。
2023-04-22 11:35:28
12
原创 ADSL技术简介
在具有最佳通道指数的通道的中频范围内,子通道的调制能力通常大于10位/ Hz,而在低频和高频通道中,DMT调制技术可以根据噪声情况自动降低调制能力,这将持续降低到约4bits / Hz。ADSL技术通过在电信运营商和用户之间生成多个并行业务通道:8Mbps下行访问通道和1Mbps上行访问通道,确保用户可以同时下载软件,浏览网页,观看音频和视频节目,甚至使用电话。下行通道进一步分为许多高速通道和低速通道,并在此时使用TDM(时分复用),由于ADSL上行和下行通道的不平衡,上行通道全部是低速通道。
2023-04-22 09:10:54
423
原创 水下机器人电动-液压混合推进系统中的推力分配
对于新型的电动-液压混合推进系统,由于系统中2种推进器的特性及作用不同,因此在推力分配过程中应考虑期望推力变化快慢、当前电动-液压推进系统推力等状态,以发挥出电动推进系统效率高、功率配置大和液压推进系统响应速度快的组合优势,并在一定程度上实现对2种推进系统的均衡使用。因此,为了提高ROV的运行效率和扩大其作业范围,有研究机构提出在这类ROV基础上增加液压推进器,构建新型的电动-液压混合推进系统,并分时利用液压源驱动液压推进器为ROV提供辅助推力,从而等效提高推进系统的功率密度,增强ROV的航行运动能力。
2023-04-21 22:39:16
26
原创 QT元对象系统
构建项目时,MOC工具读取C++源文件,当它发现类的定义里有Q—OBJECT宏时,它就会为这个类生成另外一个包含元对象支持代码的c++源文件,这个生成的源文件连同类的实现文件一起被编译和连接。Qt的元对象系统(Meta-Object System)提供了对象之间的通信与槽机制、运行时类型信息和动态属性系统。对于QOject及其子类,还可以使用qobject_cast()函数进行动态投射(dynamic cast)。除了信号与槽机制外,元对象还提供如下一些功能。元对象系统由以下三个基础组成。
2023-04-16 11:00:16
115
原创 Qt中的foreach关键字
如果只是想遍历容器中的所有项,可以使用foreach关键字。foreach是头文件中定义的一个宏。使用foreaach的代码比使用迭代器更简洁。对于QMap和QHash,foreach会自动访问“键–值”对里面的值,所以无需调用values(),注意foreach关键字遍历一个容器变量是创建了容器的一个副本,所以不能修改原来容器变量的数据项目。
2023-04-09 12:42:06
12
原创 简述#与##在define中的作用
宏定义中的##运算符可以把##前后的宏参数进行字符串化的连接,而并不依赖于参数的具体类型。宏定义中的#运算符可以把#后面的宏参数进行完整的字符串替换,这一过程称为字符串化。宏定义中的##运算符将前后的参数进行字符串连接。宏定义中的#运算符将其后面的参数转换成字符串;
2022-11-27 16:21:36
82
原创 简述#include<>和#include““的区别
通过#include和#include""都可以将指定文件中的内容引入到当前文件,但在搜索被引入文件时两者采用了不同的搜索策略。#include""首先在程序当前目录中进行搜索,然后再从编译器指定的路径处搜索。#include直接从编译器指定到路径处搜索。
2022-11-27 15:54:25
115
原创 用热敏电阻测温度STM32
adcx=Get_Adc_Average(ADC_Channel_3,20);//»ñȡͨµÀ5µÄת»»Öµ£¬20´Îȡƽ¾ù adcx_f=adcx*(3.3/4096);//adc²É¼¯µ½µçѹֵ r_f=(3.3-adcx_f)/(adcx_f/10000);//µç×èÖµ temp_f = (1/(log(r_f/Rp)/Bx+(1/T...
2022-11-15 10:30:07
1990
原创 c++中字符串与数值直接点转换
string类型的”15“,字符”1“后面跟着字符”5“,是由两个Latin-1编码的char,二进制模式为0011000100110101。数值类型的15如果保存为16位的short类型,则其二进制位模式为0000000000001111。要转换为数值的string中第一个出现非空白字符必须是数值中可能出现的字符。...
2022-08-14 11:12:19
169
原创 c++中构造string的时候需要注意的事情
当我们从const char*创建string的时候,指针指向的数组必须以空字符结束,拷贝操作遇到空字符的时候停止。如果我们还传递给构造函数一个计数值,数组就不必以空字符结尾。如果我们未传递计数值且数组也未以空字符结尾,或者给定计数值大于数组大小,则构造函数的行为是未定义的。...
2022-08-11 21:16:58
162
原创 在使用DMA方式读取单ADC单通道采集的数据时,发现只能正确的采集一次数据,后来的就一直与第一次的相同。
所以问题就出来,因为我只需要将每一个AD转换的值保存在一个16位的变量中,所以将DMA_BufferSize=1,这就导致我传输一次就结束了,而ADC_CR2的DDS位也没配置,默认是0,即传输完一次后就不会在接受新的DMA请求了。方法就很简单了,直接在ADC初始化的直接给ADC_CR2的DDS位置1void ADC_DMARequestAfterLastTransferCmd(ADC_Ty......
2022-07-17 18:41:26
2356
原创 python手写识别源码
"""network.py~~~~~~~~~~A module to implement the stochastic gradient descent learningalgorithm for a feedforward neural network. Gradients are calculatedusing backpropagation. Note that I have focused on making the codesimple, easily readable, and ea
2022-05-28 12:01:50
164
原创 STM32启动流程解析
相对于ARM上一代的主流ARM7/ARM9内核架构,新一代Cortex内核架构的启动方式有了比较大的变化。ARM7/ARM9内核的控制器在复位后,CPU会从存储空间的绝对地址0x000000取出第一条指令执行复位中断服务程序的方式启动,即固定了复位后的起始地址为0x000000(PC = 0x000000)同时中断向量表的位置并不是固定的。而Cortex-M3内核则正好相反,有3种情况:1、 通过boot引脚设置可以将中断向量表定位于SRAM区,即起始地址为0x2000000,同时复位后PC指针位于0x2
2022-05-23 17:49:34
1225
1
原创 不加入Q_OBJECT哪些功能会受影响
qobject_cast() - due to missing metadataQObject::tr() - due to missing metadataslots and invokables first declared in Class, when invoked or looked up by name - none of QMetaObject methods will work for these methods, neither will the Qt 4 connect - due
2022-04-25 12:11:29
205
原创 STM32之DMA实验
DM简介DMA,全称为:Direct Memory Access,即直接存储器访问。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传输数据的通路,能使CPU的效率大为提高。STM32F767最多有2个DMA控制器(DMA1和DMA2),共16个数据流(每个控制器8个),每一个DMA控制器都用于一个或多个外设的存储器...
2022-03-09 19:12:31
1208
原创 C++中的vector对象是如何增长的?一种容器
vectorvector 是标准顺序容器中的类型,顺序容器的意思大家可以理解为元素在加入顺序容器的时候的顺序与其在顺序容器中的顺序是一样的,改天给大家说一说关联容器。大家可以吧vector理解为一个可变大小的数组,我们可以添加、删除元素。它支持随机访问。不过它在尾部之外的位置插入或者删除元素还是比较慢的。容器中的元素是连续的,并且容器的大小是可变的,那我们在向vector中添加元素的时候发生...
2022-03-09 19:11:09
234
原创 STM32控制io输出,控制电平高低的引脚初始化方法
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9|GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; ..
2022-01-11 13:46:29
4594
1
原创 ADC的引脚状态初始化状态
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_4 ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; GPIO_InitStructure.GPIO_Speed = GPIO_Spe..
2021-12-27 21:18:58
489
原创 在触摸设备上运行qt程序
执行程序前,设置鼠标命令。、export QWS_MOUSE_PROTO=tslib:/dev/input/event1
2021-12-26 22:53:53
186
原创 关于LattePanda开发板安装Linux-Ubuntu-Debian重启的解决办法
dpkg --get-selections | grep linux-image显示系统中已经安装的内核
2021-12-26 22:53:00
551
原创 机器学习的分类
根据任务类型:监督学习任务:从已标记的训练数据来训练模型。 主要分为:分类任务、回归任务、序列标注任务。无监督学习任务:从未标记的训练数据来训练模型。主要分为:聚类任务、降维任务。半监督学习任务:用大量的未标记训练数据和少量的已标记数据来训练模型。强化学习任务:从系统与环境的大量交互知识中训练模型。根据算法类型:传统统计学习:基于数学模型的机器学习方法。包括 SVM 、逻辑回归、决策树等。这一类算法基于严格的数学推理,具有可解释性强、运行速度快、可应用于小规模数据集的特点。...
2021-12-21 22:18:08
3049
原创 c++中的无符号数与有符号数
当一个算数表达式中既有无符号数又有int值的时候,那个int值就会转换成无符号数。把int转换成无符号数的过程和把int直接赋值给无符号变量一样。unsigned u = 10;int i = -42;std::cout<<i + u <<std::endl;//输出-84std::cout<< u + i <<std::endl;//如果int占32位,输出4294967264在一个输出表达式里,两个(负)整数相加并得到了期望的结果。在第二个输出
2021-12-21 21:24:05
1518
原创 c语言的空字符结束符-strlen函数
strlen§ 返回p的长度,空字符不计算在内。char ca[] = {'c','+','+'};cout << strlen(ca) <<endlca虽然是一个字符数组,但是它不是以空字符作为结束的,因此上述程序将产生未定义的结果。
2021-12-06 08:31:13
963
原创 字、半字、字节、位
Word: data/instruction of 32-bit length.• Half word: data/instruction of 16-bit length.• Byte: data of 8-bit length.• Double word: data of 64-bit length
2021-12-04 11:41:35
211
原创 混用string对象和c风格字符串
任何出现字符串字面值的地方都可以用以空字符结束的字符数组来替代:string s("Hello World");char *str = s;//不能用string 对象初始化chark*const char *str = s.c_str();
2021-12-04 11:41:04
91
解决api-ms-win-crt-runtime-l1-1-0.dll 丢失问题 .7z
2023-05-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人