笔记
文章平均质量分 51
Jack Ju
硕士毕业于哈尔滨工业大学控制科学与工程系,目前是一名自动驾驶工程师。
展开
-
C++ boost::property_tree::read_json读取虚拟墙文件
json中含有一系列的线段起点和终点,我们的目标时是其提取出来。输入是一个json文件如下。原创 2024-06-26 11:15:56 · 428 阅读 · 1 评论 -
机器人运动——全局转车辆坐标下-坐标变换
在这个示例中,globalToLocal 函数接受全局坐标点和车辆的全局坐标以及朝向作为输入,并返回相对于车辆坐标系下的坐标。2.根据车辆的朝向 theta ,对偏移量进行旋转,以得到相对于车辆坐标系下的坐标。1.计算全局坐标点 (x1, y1) 相对于车辆的偏移量;原创 2024-04-10 08:22:32 · 473 阅读 · 0 评论 -
C++类 单例模式
类使用了一个单例模式,这意味着这个类只需要一个实例,并且提供了全局访问点来获取这个实例。这通常用于控制对一个类实例的访问,尤其是在创建实例代价昂贵或者需要严格控制实例数量的情况下。单例模式(Singleton Pattern)是一种设计模式,用于确保一个类只有一个实例,并提供一个全局访问点来获取该实例。在这个修正后的代码中,我们确保了构造函数和析构函数是私有的,并且提供了一个全局访问点来获取。方法返回类的唯一实例的引用,您可以使用该引用来访问和调用类的公有成员函数。在您的代码中,单例模式的实现确保了。原创 2024-04-02 10:05:25 · 866 阅读 · 1 评论 -
机器人定位——里程计Odom
根据两个车轮的轮速去估计当前的车的定位。原创 2024-03-02 22:29:48 · 1081 阅读 · 0 评论 -
C++ 代码优化—set(CMAKE_CXX_FLAGS_RELEASE “-O2“)
在对导航代码进行交叉编译的时候,由于线程占CPU资源过大,我在CMake中添加如下优化。交叉编译可以通过,但是在目标平台arm上运行报线程相关错误。程序正常运行,占用CPU资源也降下来了。原创 2024-01-02 19:05:29 · 871 阅读 · 0 评论 -
关于图像像素opencv行与列关系
(1)m4.cols表示m4矩阵的列数,对应图片像素的宽度。(2)m4.rows表示m4矩阵的行数,对应图片像素的高度。其中m4是一个矩阵,读取的图片就存在这个地方。原创 2023-12-18 14:32:14 · 883 阅读 · 0 评论 -
C++延时程序
函数获取的是 CPU 时间,不会导致线程或进程的真正休眠。要实现真正的睡眠功能,可以使用适当的跨平台库或操作系统提供的相关函数。输出了起始时间、当前时间和当前时间减去起始时间的差值,以观察程序的运行状态。,即当前时间减去起始时间小于等于指定的时间。头文件,以便使用标准输入输出和时间相关函数。函数来获取当前的CPU时间,进行延时操作。函数获取当前的 CPU 时间,将其赋值给。函数,该函数用于模拟程序暂停一段时间。函数来进行简单的时间控制,以及使用。参数,用于指定程序要休眠的时间。的函数,该函数接受一个。原创 2023-12-04 16:00:21 · 657 阅读 · 0 评论 -
C++高级用法—使用boost::shared_ptr来创建共享指针对象并保持了多态性的特性
这样,就可以使用基类的指针对象来操作派生类的对象,并且在运行时动态地选择适当的函数实现。这就是使用多态性的一种常见做法。本文我们将使用了boost::shared_ptr来创建共享指针对象,并且实现多态的功能。类型的指针进行使用。这就实现了多态性,即可以通过基类的指针来操作不同派生类的对象。(1)我们将上述代码文件命名为virtual.cpp。首先,我们创建了三个共享指针对象。类的子类,因此可以将它们作为。原创 2023-12-04 15:24:24 · 769 阅读 · 0 评论 -
机器人导航地图——Obstacle层的障碍物-Bresenham算法详细解释
作者在读源代码时,遇到了下述的代码void ObstacleLayer::raytraceFreespace,不是很好理解,有很多疑惑,于是打算对此部分进行详解,并记下笔记。////clearing_observation的origin_是传感器坐标,传入//得到传感器原点在地图上的坐标if (!ox, oy);return;//我们可以在内环之外预先计算地图的点。。。我们稍后需要这些//接下来的几个判断结构实际上做的主要工作就是不断迭代传感器原点和点云中的点的连线,原创 2023-12-01 15:17:25 · 1841 阅读 · 0 评论 -
C++类中运算符(operator())的重载
在函数体内,它将costmap_[offset]设置为value_,即将costmap中对应的单元格标记为指定的值。在这个例子中,MarkCell类重载了函数调用运算符operator(),当类的对象被调用时,就会调用这个重载的函数调用运算符。在函数调用运算符的实现中,接受了一个unsigned int类型的参数offset,表示要标记的单元格在costmap中的偏移量。这样,通过创建一个MarkCell对象,并将对象作为函数来调用,就可以将指定的单元格在costmap上进行标记。原创 2023-12-01 09:58:04 · 515 阅读 · 0 评论 -
机器人导航算法——Costmap地图ROS源码解析
costmap使用了一种分层地图的技术方案,即分别考虑障碍物层/膨胀层/静态障碍物层更新对应层的地图代价信息,然后再合并到主地图中,具体见我翻译的另一篇文章《costmap文献阅读—Layered Costmaps for Context-Sensitive Navigation以上就是costmap的介绍,后续会持续更新。。。。ReferenceCostmap文献阅读——Layered Costmaps for Context-Sensitive Navigation。原创 2023-11-29 13:48:08 · 2363 阅读 · 0 评论 -
机器人算法——costmap膨胀层InflationLayer
InflationLayer没有自身的栅格地图要维护,直接在主地图上进行操作,它根据膨胀参数设置用来膨胀的“参考矩阵”,并在主地图上从障碍物出发,不断传播更新,完成对整个地图障碍的膨胀。使用计算考察点和障碍物的距离,然后判断是否在膨胀半径内,如果是,则保存到nflation_cells_中用于下一次循环中。不断的从障碍物周围”上下左右“开始膨胀,并且根据参考矩阵去计算不同距离的栅格权重。这是考察下一个点,上下左右,如果在障碍物半径内,则继续循环到上述的“如此循环即可,类似于A*算法的膨胀。原创 2023-11-28 16:59:29 · 1541 阅读 · 0 评论 -
C++boost线程唤醒
消费者则等待数据准备好的通知,收到通知后输出并消费数据。这样可以确保只有一个消费者线程会被唤醒来消费新的数据,从而避免多个线程同时访问和处理同一份数据,确保线程安全。函数用于通知一个等待在条件变量上的线程。它会唤醒一个等待的线程,使其从等待状态返回到可运行状态。这样可以保证消费者线程只有在新的数据产生时才会执行消费操作。在这个示例中,我们创建了一个生产者线程和一个消费者线程。来通知消费者线程有新的数据可供消费。也只会唤醒其中的一个线程,而不是所有线程都唤醒。在本例中,生产者线程在每次生产新数据后会调用。原创 2023-11-24 11:24:44 · 565 阅读 · 0 评论 -
机器人算法—ROS TF坐标变换
tf工具包,底层实现采用的是一种树状数据结构,根据时间缓冲并维护多个参考系之间的坐标变换关系,可以帮助程序员在任意时间,将点、向量等数据的坐标,在两个参考系中完成坐标变换。机器人每个关节的传感和运动都是参考自身 以上面的机器人烹饪为例, 头部的视觉传感器(摄像头)参考自己, 计算出煎饼和锅距离自己的距离.相对坐标系就是一个参照物,我们在这个参照物下,来说明自己的位置和姿态。我摆了个什么造型给你看,是横着的,竖着的,躺着的,这个就是姿态。机器人的左手右手的运动又是根据自己的当前位置来控制空间坐标的移动.原创 2023-11-22 09:42:12 · 1064 阅读 · 0 评论 -
C++ vector 使用类作为模板参数/C++多态展示
【代码】C++ Vector使用类成员。原创 2023-11-21 08:57:13 · 161 阅读 · 0 评论 -
Linux 下C++工程编译
创建文件夹。原创 2023-11-01 09:33:16 · 210 阅读 · 0 评论 -
C++基础之关键字——virtual详解
被修饰的函数称为虚函数, 是C++中多态的一种实现(多说一句,多态分编译时多态-通过重载实现和运行时多态-通过虚函数实现)。也就是说用父类的指针或者引用指向其派生类的对象,当使用指针或引用调用函数的时候会根据具体的对象类型调用对应对象的函数(需要两个条件:父类的函数用virtual修饰和子类要重写父类的函数)。通过上面的例子可以看出,使用virtual修饰的函数会根据实际对象的类型来调用,没有使用virtual修饰的根据指针的类型来调用。修饰父类中的普通函数。原创 2023-10-30 09:00:47 · 276 阅读 · 0 评论 -
机器人控制算法—TEB算法文献阅读Trajectory modification considering dynamic constraints of autonomous robots
定时弹性带”转换由一系列路径指向一条明确依赖于时间的轨迹,从而能够实时控制机器人时间由于其模块化表述,该方法很容易扩展,以纳入额外的目标和限制。该问题是在一个加权多目标优化框架中提出的。大多数目标都是本地的,因为它们取决于在几个相邻的中间配置上。经典的“弹性带”使全局规划器生成的路径相对于最短路径长度变形,而避免与障碍物接触。根据诸如有限的机器人速度和加速度的动态约束的运动。这一贡献引入了一种称为“定时弹性带”的新方法,该方法明确考虑了。实际机器人的仿真和实验结果表明,该方法具有鲁棒性和计算能力。原创 2023-10-17 08:30:39 · 1056 阅读 · 0 评论 -
G2O学习笔记
Reference原创 2023-10-16 09:31:03 · 123 阅读 · 0 评论 -
估计自车轨迹曲率的方法
在分析ADAS横向控制代码时,PID控制的输入端是当前车的轨迹和规划给的目标轨迹的横向误差,所以需要通过自车的传感器Yawrate和SteerAngle,去计算,去估计自车轨迹的曲率,看源代码,然后通过方程近似求解出自车目前的横向距离。估计自车的轨迹的曲率一般有两种方式。我们注意到这两种方式的使适用场景不一样,所以实际工程中需要给二者在不同车速度段做一个比例查表,融合二者的信息,在高速的时候,方法一置信度高故给的比例大,低速度段的时候,方法二的置信度高,给它的比例就会大。...原创 2022-08-01 18:50:59 · 2912 阅读 · 1 评论 -
用十年来学编程
用十年来学编程Peter Norvig为什么每个人都急不可耐?走进任何一家书店,你会看见《Teach Yourself Java in 7 Days》(7天Java无师自通)的旁边是一长排看不到尽头的类似书籍,它们要教会你Visual Basic、Windows、Internet等等,而只需要几天甚至几小时。我在 Amazon.com上进行了如下 搜索:pubdate: after 1992 and title: days and (title: learn or title: teach your转载 2022-05-29 21:08:54 · 222 阅读 · 0 评论 -
自动驾驶的未来*
17世纪的人不懂未来有一个交通工具会取代马车。19世纪的人也不懂未来会有一个交通工具会在天上飞。甚至到20世纪, 我们才知道原本人类可以去月球。身为一个人类, 我们要做的事并不是唱衰一个科技的可能性,而是在一次又一次的失败中, 发现实现他的路径。致敬所有愿意在这浪潮中, 经历一次次失败的每个工程师!——赞了!...原创 2022-01-22 21:14:13 · 448 阅读 · 0 评论 -
ADS-车道线
车道线信息:a0:横向距离,左侧车道线距离本车的距离。a1:航向角,车道线与本车的夹角a2:曲率或者0.5曲率a3:曲率·的变化率validdist:有效距离LineWidth:线宽,Valid:是否有效StartPoint:起点EndPoint:终点...原创 2022-01-10 09:24:47 · 2371 阅读 · 0 评论 -
【无标题】
即日起,重新回归一自动驾驶行业,原创 2021-12-25 20:45:53 · 280 阅读 · 0 评论 -
git pull报错冲突
因为你本地改动了,所以和服务器上不一致,需要合并。通过git stash将工作区恢复到上次提交的内容,同时备份本地所做的修改,之后就可以正常git pull了,git pull完成后,执行git stash pop将之前本地做的修改应用到当前工作区。git stashgit pullgit stash pop作者:等不来的期待链接:https://www.jianshu.com/p/920ad324fe64来源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。..原创 2021-09-05 16:31:32 · 178 阅读 · 0 评论 -
金字塔光流法【理解】
源论文:Pyramidal Implementation of theLucas Kanade Feature Tracker Description of the algorithm原文:https://blog.csdn.net/u014527548/article/details/804343491.问题描述I和J分别表示两幅灰度图。I(x) = I(x, y) 和J(x) = J(x, y)分别是两幅图像上位置为[x, y]T处像素点x的灰度值,x和y分别为该点的像素坐标。令I为第一...原创 2021-04-28 10:08:42 · 2011 阅读 · 0 评论 -
20210419结合最近一个多月来自己的体会
从上个月开学来,开学后的一个礼拜,多灾多难。无论是身体上还是精神层面的。 小时候,看过批八字的先生,说我是“山前水命”,意思就是命里水多。所以,我应该靠“火“多一点地方,像水多的地方,我就最好不能去。当然我是不信的。 不过最近的一些经历,让我感到很奇妙,就是有些事情,你没法理解,为何会出现这样的结果。 开学一周,我们实验室搬到了新的办公楼,这个办公楼三层就可以看见海边。 刚办过去不久,我身体出现了一点毛病,就去医院检查,不知道为什么,去了...原创 2021-04-19 23:39:13 · 118 阅读 · 0 评论