自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 XTDrone用键盘控制无人机,报错求助,求助

在执行语句python multirotor_communication.py iris 0的终端中报错。执行第三部分之后,即python multirotor_keyboard_control.py iris 1 vel。

2025-02-09 19:48:43 218 1

原创 c++中“箭头(->)”和“点号(.)”操作符的区别以及具体用法

点号(.)用于访问对象的成员。箭头(->)用于访问指针所指向对象的成员,等价于解引用指针并使用点号操作符。例如,ptr->value等同于。

2024-11-08 16:49:25 621

原创 de Boor 算法是什么

de Boor 算法的优点在于它的高效性和简单性,尤其适用于高阶 B 样条的评估。它的递归性质使得每一步都能灵活地处理控制点之间的关系,从而生成光滑的曲线。这种算法被广泛应用于计算机图形学、CAD(计算机辅助设计)和动画等领域。

2024-11-03 16:07:53 395

原创 gpt对C++中std的解释

我正在了解C++中的'标准命名空间'是如何帮助管理库中功能的。通过'using namespace std;命名空间的好处是可以明确指出所使用的函数或类来自于C++标准库,避免与用户自定义的名称发生冲突。是C++标准库的命名空间,包含了大量常用的类和函数,是编写现代C++程序不可或缺的一部分。命名空间(namespace)用于组织代码,防止命名冲突。但是,为了避免命名冲突,通常建议只在必要时使用。是“标准”(standard)的缩写,表示。,或者在限定的作用域内使用。

2024-11-02 11:13:57 391

原创 gpt对C++中使用矩阵的解释

在C++中,使用Eigen库可以方便地进行矩阵和向量的创建、初始化和运算。Eigen库以其高效和易用的特性,成为了进行线性代数运算的理想选择。通过灵活使用Eigen的各种功能,可以解决复杂的数学问题。

2024-10-31 17:17:28 246

原创 gpt对C++中Eigen库的详细解释

Eigen是一个功能强大的线性代数库,适用于各种科学计算和工程应用。它的高效性和易用性使其成为C++中进行矩阵和向量运算的首选库之一。通过理解Eigen的核心数据结构和运算方法,用户可以在自己的项目中快速实现复杂的线性代数功能。

2024-10-31 17:13:48 280 1

原创 C++中在类的后面加上::是什么意思

当你在类定义外部定义一个成员函数时,需要使用作用域解析运算符来指明这个成员函数属于哪个类。在这个例子中,指明了display函数是MyClass类的一个成员函数。在类外定义成员函数访问静态成员访问基类成员访问命名空间中的成员通过这个运算符,C++提供了更好的代码组织和命名管理能力,允许开发者在复杂系统中明确成员的所属关系。

2024-10-31 17:11:07 435

原创 gpt对C++中成员函数的解释

成员函数在类的定义中声明,并可以在类外定义。它们的声明通常包括访问控制说明符(如publicprotectedprivate)以及返回类型和参数列表。成员函数是C++面向对象编程的核心,允许类封装数据和操作。通过适当使用访问控制、this指针、常量函数和静态函数,C++可以提供灵活和强大的类设计。

2024-10-31 17:08:57 493

原创 gpt对ego-planner的理解

**A*或RRT算法**:在全局路径规划阶段,`ego-planner`使用A*算法或快速随机树(RRT)等算法,基于环境模型生成从起点到目标点的初始路径。- **优化算法**:`ego-planner`使用优化算法对生成的路径进行优化,以减少路径长度、提高平滑性并确保避开障碍物。- **避障策略**:根据实时检测到的障碍物,`ego-planner`会即时调整路径或速度,以避免碰撞。- **控制模块**:将优化后的路径传递给控制模块,控制模块负责将路径转换为具体的驾驶指令,包括速度和方向控制。

2024-10-31 16:50:55 484

原创 gpt对fast-planner的理解

**A*算法**:在全局路径规划模块中,使用了A*算法生成一条从起点到目标的全局路径。它会搜索地图的网格,将路径分段到较粗略的规划中。- **B样条平滑**:为了避免路径中的尖锐转角,通过B样条进行路径平滑处理,以确保路径可行且符合无人机的物理特性。- **轨迹跟踪**:将生成的路径传递给控制模块,控制模块会根据无人机当前状态生成跟踪路径的指令,并输出无人机的速度和加速度指令。- **梯度下降优化**:使用梯度下降法在局部路径上进行优化,使路径满足无人机的物理限制,同时保持距离障碍物的安全距离。

2024-10-31 16:50:11 382

原创 深蓝motion planning,L6MPC学习记录(4线性时变MPC、非线性MPC、Tube MPC、Hybrid MPC、MPCC)

把一个上层的MPC和一个底层的控制器串起来,这个上层的MPC使用的是一个名义模型,解出来的也是名义模型的最优的输入,它并不会直接输入到系统,实际上这个时候的MPC与其说是一个控制器,更不如说把它看做是一个规划器,我们在它后面接一个反应式控制器,使得真实的状态保持在规划出来的名义状态附近的tube内,这就叫tube MPC。图中蓝色轨迹是参考轨迹,我们要跟踪这条轨迹,我们假想有一个小球在这个轨迹上运动,而我们的无人机要跟踪这个小球,如果小球按照参考轨迹上的速度去运动,那么就变成了纯粹的参考轨迹跟踪的问题。

2024-10-22 22:05:36 978

原创 深蓝motion planning,L6MPC学习记录(3LQR、延迟MPC、有约束的MPC)

很多时候系统的输入输出都是有一个合理的范围的,比如车的模型等,这种约束都是线性不等式约束linear constraints,另外还有一些特别的约束(躲避障碍物可能是线性可能是非线性)。对于无约束的线性MPC我们是可以求出解析解的,比如这个batch solution,但是这个求解需要对一个大的稠密矩阵求逆,问题规模比较大的时候就比较消耗算力了。贝尔曼最优准则:如果一个问题可以分为多个步骤 ,它的最优解有这样的性质,不管前面的决策是怎样到达一个状态的,剩下的决策仍然是后面的子问题的最优解。

2024-10-22 20:48:16 362

原创 深蓝motion planning,L6MPC学习记录(2MPC与Linear MPC)

接下来看目标函数,一种非常常见的cost function的结构也就是二次型,所谓二次型就是说优化问题的目标函数是关于优化变量的二次函数,优化变量是未来N个时刻输入的u(未来N个时刻的方向盘打角、油门、刹车等),又因为我们的系统是线性的,如果我们的优化问题对于系统状态x是二次型的,那么对我们最后的优化变量u也是二次型的。第三个参数就是预测时长。接下来介绍MPC设计的几个重要的参数,首先是模型的选择,左边是运动学的自行车模型,右边是动力学的自行车模型(考虑了轮胎侧滑,摩擦等),要具体问题具体分析选择模型。

2024-10-22 14:42:04 768

原创 深蓝motion planning,L6MPC学习记录(1反应式控制与最优控制)

对系统进行建模,模型可以是微分方程的形式也可以是离散的形式,x导数的式子是微分方程的形式,xk+1是离散的形式。总之我们根据了具体的控制对象,建立了系统模型,构建了目标函数和各种约束,最终求解这样一个优化问题(一个纯粹的数学问题),那么就得到我们想要的optimizer最优控制量,当然这是在理想状态下的。反应式控制的优缺点如下:(最重要的一点是反应式控制无法考虑未来的决策,由于反应式控制只考虑当前状态的误差是非常短式的,而不考虑当前的控制策略对未来的影响,比如开车转弯的时候)以下是理想和现实的区别。

2024-10-22 11:54:36 358

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除