- 博客(52)
- 收藏
- 关注
原创 雷达的区别与联系
然而,需要注意的是,并不是所有的毫米波雷达都采用相控阵技术,因此不能简单地将毫米波雷达归类为相控阵雷达。雷达是一种利用无线电波进行目标探测和定位的电子设备,不同类型的雷达在结构、工作原理、性能特点以及应用领域等方面存在显著的区别与联系。豪米波雷达并不直接对应于上述提到的脉冲雷达、连续波雷达、相控阵雷达、合成孔径雷达(SAR)或激光雷达中的某一种,但它可以根据其工作原理和特性进行归类。发展目标:随着科技的进步和应用领域的拓展,各种类型的雷达都在朝着更高精度、更小体积、更低功耗和更广应用场景的方向发展。
2024-12-26 17:20:10
423
原创 飞行器控制系统——导航、制导与控制
根据感知、规划、控制这三层架构可以有如下的研究内容。感知层面,除了传统的导航滤波算法,可以做的研究有多源数据融合;目标识别、定位、检测;以及当下很火的slam。规划层面,将飞行器上升到一个无人智能体的概念后,可以研究任务分配、智能决策。有了任务输出后,根据任务决策,进行路径规划与优化,有了期望路径,可以去做跟踪控制。控制层面,除了传统经典控制方法,还可以研究自适应控制、鲁棒控制、最优控制等。另外一方面针对有些模型无法获取的情况,系统辨识也是一个不错的方向。
2024-12-20 13:34:21
1049
原创 C++ std::future与std::promise
当向std::promise设置值时抛出异常,如果没有妥善处理,可能会导致结果永远不会被设置,而等待的std::future将永远阻塞。在调用get()之前,先检查std::future::valid()和std::future::wait_for(),确保操作的安全性。使用std::future::wait_for()或std::future::wait_until()来控制等待时间,避免无限期阻塞。下面的示例展示了如何使用std::async启动一个异步任务,并通过std::future获取结果。
2024-12-20 09:57:14
895
原创 C++中的高阶函数:std::function
例如,std::function<void(int)>表示接收一个整数参数,并且不返回任何值的回调函数,std::function<std::string(const std::string&)>表示接收一个字符串参数,并且返回一个字符串的回调函数。std::function是一个通用的、多态的函数封装器,它的实例可以对任何可以调用的目标实体进行存储、复制和调用操作,包括普通函数、Lambda表达式、函数指针和带有operator()的类等。在这个例子中,我们首先使用了一个自由函数作为任务函数。
2024-12-13 14:49:31
2029
原创 无人机飞行模式(Ardupilot和MAVLink协议)(STABILIZE、ALTITUDE HOLD、LOITER、GUIDE、AUTO、LAND、RTL)
LOITER:LOITER模式是控制无人系统的一种更易访问的模式,一旦用户不向RC控制器提供输入,它便保持无人系统的当前位置,方向和高度。高度保持:一种更舒适的控制无人系统的模式,用户无需担心为无人系统保持固定的高度,因为自动驾驶仪会自动控制 PID控制器控制无人机的高度。LAND和RTL模式可用于违反导航安全和地理围栏的情况,例如,可以在自动驾驶仪上编程,如果电池电量低于一定水平,则无人系统需要立即降落或返回起始位置 自动。RTL模式,也称为返回发射,将迫使无人系统返回执行起飞的起始位置。
2024-07-17 20:10:41
1518
原创 简单说明GPL和LGPL协议
GPL协议的主要内容是只要在一个软件中使用(”使用”指类库引用,修改后的代码或者衍生代码)GPL 协议的产品,则该软件产品必须也采用GPL协议,既必须也是开源和免费。GPL协议的产品作为一个单独的产品使用没有任何问题,还可以享受免费的优势。但是如果修改LGPL协议的代码或者衍生,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用LGPL协议。因此LGPL协议的开源 代码很适合作为第三方类库被商业软件引用,但不适合希望以LGPL协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。
2024-05-06 09:30:23
2642
原创 std::function详解
std::function是一个函数包装模板,可以包装下列这几种可调用元素类型:函数、函数指针、类成员函数指针或任意类型的函数对象(例如定义了operator()操作并拥有函数闭包)。std::function对象可被拷贝和转移,并且可以使用指定的调用特征来直接调用目标元素。当std::function对象未包裹任何实际的可调用元素,调用该std::function对象将抛出std::bad_function_call异常。
2024-04-09 10:19:22
6535
原创 C++11中的lambda函数
默认情况下,lambda函数是const函数,当lambda函数使用值传递时,mutable使得函数可以const限制,可以修改值传递进来的参数。:捕获列表,捕获列表出现在lambda函数的起始处,[]也被称为lambda的引出符,编译器根据引出符判断接下来的代码是否是lambda函数。[=,&a,&b] :表示引用传递的方式捕获变量a和b,值传递方式捕获所有父作用域变量。statement:函数体实现,除了可以使用参数列表的参数,也可以使用捕获列表的值。[var] :表示值传递方式捕获变量var。
2024-03-11 11:12:32
439
原创 v-model和:model的区别
场景:在使用el-form时,form上面使用的是:model;而在表单里面的el-input使用的是v-model。那么这两者有什么区别呢?
2024-02-23 12:13:42
896
1
原创 详解vue中中localStorage的使用方法
对浏览器来说,使用 Web Storage 存储键值对比存储 Cookie 方式更直观,而且容量更大,它包含两种:localStorage 和sessionStorage。
2024-02-23 10:03:03
979
原创 vue中template原理
在Vue中,每个组件都会有一个对应的虚拟DOM数,在更新时,Vue会通过对比新旧虚拟DOM,找出需要更新的节点,并将其更新到真实DOM中。其中,v-bind能够绑定Vue实例中的数据到DOM元素中,v-model则能实现双向绑定,v-for可以实现循环渲染,v-if则可以实现条件渲染等功能。总的来说,Vue的template语法是非常强大和灵活的,Vue能够通过将其解析成虚拟DOM,实现高效的数据更新,让我们不需要关注手动操作DOM的细节,让我们专注在数据处理和业务逻辑上。
2024-02-01 12:12:39
850
原创 C++友元函数和友元类(C++ friend关键字)
例如将类 B 声明为类 A 的友元类,那么类 B 中的所有成员函数都是类 A 的友元函数,可以访问类 A 的所有成员,包括 public、protected、private 属性的。如果声明了类 B 是类 A 的友元类,不等于类 A 是类 B 的友元类,类 A 中的成员函数不能访问类 B 中的 private 成员。如果类 B 是类 A 的友元类,类 C 是类 B 的友元类,不等于类 C 是类 A 的友元类。注意,友元函数不同于类的成员函数,在友元函数中不能直接访问类的成员,必须要借助对象。
2023-12-13 10:09:13
1748
原创 Qt 面试指南
栈区(stack)堆区(heap)抽象数据结构:后进先出全局区(静态区)(static)文字常量区程序代码区栈是自动分配释放,一级缓存,类似数组的结构。堆是由程序员分配释放,二级缓存,速度慢些,先进后出。
2023-12-13 09:28:44
1695
原创 static_cast、dynamic_cast、const_cast和reinterpret_cast(四种类型转换运算符)
C/C++类型转换的本质在 C/C++ 中,不同的数据类型之间可以相互转换:无需用户指明如何转换的称为自动类型转换(隐式类型转换),需要用户显式地指明如何转换的称为强制类型转换(显式类型转换)。隐式类型转换利用的是编译器内置的转换规则,或者用户自定义的转换构造函数以及类型转换函数(这些都可以认为是已知的转换规则),例如从 int 到 double、从派生类到基类、从type *到void *、从 double 到 Complex 等。type *是一个具体类型的指针,例如int *、double *、
2023-12-05 12:19:12
931
原创 Qt信号槽机制和事件机制的理解
唯一不同的是:槽还可以和信号连接在一起,在这种情况下,每当发射这个信号的时候,就会自动调用这个槽。内省功能对于实现信号和槽是必需的,并且允许应用程序的开发人员在运行时获得有关QObject 子类的“元信息”(meta-information),包括一个含有对象的类名以及它所支持的信号和槽的列表。(3) 信号与槽在多线程时支持异步调用在单线程应用时,你可以把信号与槽看成是一种对象间的同步通信机制,这是因为在这种情况下,信号的释放过程是阻塞的,一定要等到槽函数返回后这个过程才结束,也就是不支持异步调用。
2023-11-29 14:52:09
1507
原创 C++工程师面试必问面试题
答:当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝;另一种更优雅的方式是使用智能指针,从而实现指针指向的对象的共享。智能指针的一种通用实现技术是使用引用计数。智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针。每次创建类的新对象时,初始化指针并将引用计数置为1;当对象作为另一对象的副本而创建时,拷贝构造函数拷贝指针并增加与之相应的引用计数;
2023-11-29 09:35:39
570
原创 QTableView插入QCheckBox复选框
通过实现QAbstractItemDelegate的paint()函数。这种方法和《C++_GUI_Qt4_编程(第二版)》中第十章的自定义委托例子,画星星的作法是一样的,都是通过 QApplication::style()->drawControl(QStyle::CE_CheckBox,&check_box_style_option,painter);这个函数,只不过选择的元素是QCheckBox的。#ifndef CCHECKBOXMODEL_H#define CCHECKBOX
2022-04-28 15:33:25
3387
1
原创 QTableView 实现在单元格添加下拉框 QComboBox
1)通过setIndexWidget方法实现实现:1)继承代理类,实现自定义代理,网上很多教程,这里不再赘叙;2)更加方便的方法,使用接口:void QAbstractItemView::setIndexWidget(const QModelIndex &index, QWidget *widget);其实QTableWidget的setCellWidget借口内部也是调用 setIndexWidget。示例代码:Widget::Widget(QWidget *parent) : QW
2022-04-28 15:22:09
14298
3
原创 Qt之QTableWidget 表头添加QComBox
重写QHeaderView重写HeaderView,然后设置到对应的tablewidget中去。class CheckBoxHeaderView : public QHeaderView{ Q_OBJECTpublic: CheckBoxHeaderView(int checkColumnIndex, Qt::Orientation orientation, QWidget * parent = 0) : QHeaderView(orientation, parent) { /
2022-04-28 14:48:04
1755
原创 C++中 delete 和 delete[] 的区别
delete 释放new分配的单个对象指针指向的内存delete[] 释放new分配的对象数组指针指向的内存(1). 针对简单类型 使用new分配后的不管是数组还是非数组形式内存空间用两种方式均可 如:int *a = new int[10];delete a; //方式1delete [] a; //方式2此种情况中的释放效果相同,原因在于:分配简单类型内存时,内存大小已经确定,系统可以记忆并且进行管理,在析构时,系统并不会调用析构函数,它直接通过指针可以获取实际分配的
2022-03-24 15:19:55
228
转载 TinyXML2使用教程
TinyXML2使用教程原文转自 http://blog.youkuaiyun.com/K346K346/article/details/487504171.TinyXML2概述TinyXML2是simple、small、efficient开源的C++ XML文件解析库,可以很方便的应用到现有的项目之中。非常适合存储简单数据,配置文件,对象序列化等数据量不是很大的操作。TinyXML2详细介绍与源码获取方法详见:TinyXML2官网。2. TinyXML1与TinyXML2对比TinyXML1与TinyXM
2022-03-18 17:59:00
2483
原创 编程设计模式中委托 和代理模式的区别
编程设计模式中委托 和代理模式什么区别?委托更接近于观察者模式。设计模式中,是没有委托模式的,委托是一种机制,用于事件的触发。在java中,实现观察者模式,观察者必须要实现update方法,在被观察者通知时,调用这个方法。观察者模式的缺点是,由于要实现观察者的update方法,所以,耦合比较严重,入侵性强。如果,之前写好的类,要成为一个被观察者,则必须要更改这个类。并且,这个类可能已经有了可以处理问题的方法,但是却还要实现方法。还有,就是语义上的缺点。update方法到底是啥意思呢?这个方法可能是实现通知
2022-03-02 16:27:15
1316
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人