自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 参数服务器

参数服务器在ROS中主要用于实现不同节点之间的。参数服务器相当于是独立于所有节点的一个公共容器,可以将数据存储在该容器中,被不同的节点调用,当然不同的节点也可以往其中存储数据。参数服务器,一般适用于存在数据共享的一些应用场景。以共享的方式实现不同节点之间数据交互的通信模式。类似于全局变量。

2024-05-07 12:04:28 1008

原创 ROS服务通信

step1:在功能包中定义一个srv文件夹,在这个文件夹中定义xxx.srv文件。step2:在xxx.srv中规定数据类型。---上部分是请求部分,下部分为响应数据。step3:为xxx.srv添加编译规则打开package.xml文件,添加以下两行代码:打开CMakeList.txt文件, 在find_package中添加:找到下方示例代码,将刚刚定义的xxx.srv添加进去,作用是让在srv文件夹中生成服务:我们定义的xxx.srv是基于std_msgs依赖的,所以需要添加依赖项。

2024-04-07 15:18:20 763

原创 ROS中的栅格地图

机器人导航所使用的地图数据,就是ROS导航软件包里的map_server 节点,在话题/map中发布的消息数据,消息类型是nav_ msgs消息包的OccupancyGrid,这个单词翻译过来叫做占据栅格,就是一种正方向小格子组成的地图,每个格子里填入一个数值,表示障碍物的占据情况。第二个是地图的描述信息。第三个是一个八位整型的数组,这就是地图的数据,按照行优先的顺序,从栅格矩阵的(0,0)位置开始排列。以行为单位将二维栅格地图做成一维的数组,再记录栅格地图的行数、列数信息,就可以将栅格地图描述清楚了。

2024-04-02 19:38:13 1159

原创 ROS消息包

step1:在工作空间中定义一个功能包,用来存储自定义消息类型。其中红框框住的这两个,是消息包的生成和运行时所需要的依赖项。step2:在功能包中新建一个文件夹msg,在这个文件夹下新建一个消息类型文件Carry.msg,注意文件末尾一定是msg。然后在这个文件里定义新的消息结构。step3:消息结构该如何定义呢?我们参考官方标准消息包std_msgs的定义格式。如下图所示,第一行表示是 std_msgs消息包的String.msg 文件的内容。其余的表示消息格式:数据类型+变量名。step4。

2024-04-02 12:25:45 1077

原创 ROS中IMU惯性测量单元

IMU 是安装在机器人内部的一种传感器模块,用于测量机器人的空间姿态。IMU的消息包定义在sensor_msgs包中的Imu中。头部是header,记录了消息发送的时间戳和坐标系ID。第二个是角速度。第三个是矢量加速度。三个数据成员都各自有一个协方差矩阵,主要用于后期的优化和滤波。角速度:在x、y、z三个轴上的旋转角速度。矢量加速度:在x、y、z三个轴上的加速度。总共有6个数值,所以叫六轴IMU。另外还有一些IMU模块,额外提供了XYZ三个轴向的磁强计输出,就变成了九轴IMU。

2024-03-31 22:07:03 1241

原创 ROS传感器图像转换

但是我们一般使用opencv对图像进行处理,所以要将ros的图像格式转换成opencv的格式。

2024-03-30 22:08:07 266

原创 话题通信的python实现

在scripts文件夹中创建py节点:第一行是为了指定解释器,Ubuntu20.04是python3,比他低的版本是python。第二行是为了指定编码方式。第五行中,引用index.ros.org中数据类型的头文件的方式,与C++不一样。第十行,第二个参数是发布的消息类型。:给这个脚本文件添加可执行权限。:保存好之后就可以运行啦。python文件不需要编译,直接是可执行文件。先启动roscore,再source一下,然后直接运行。:同理,添加另一个发布者节点。

2024-03-30 21:03:53 234

原创 机器人运动控制

矢量速度用来控制运动方向,任何一个方向都可以看成x、y、z三轴方向的合。单位规定是m/s。旋转速度用来控制旋转方向,可以看成x、y、z三轴方向旋转的合。单位规定是pi/s。速度消息包,可以在上搜索到。它里面有很多消息类型,其中Twist就是速度消息包。消息包中有两种数据类型linear、angular,他俩又都是三维向量。

2024-03-30 13:19:53 518

原创 launch文件

启动多个节点时,要打开很多窗口,这样会很麻烦。使用launch文件,可以同时运行多个节点。launch文件是一 种遵循XML语法的描述文件,批量启动ROS节点只是它的功能之一。以下是XML的基本语法之一:描述一组多层嵌套的数据结构,就是XML语言的主要作用之一。例如下述例子:这种语言格式对ros有什么用呢?举个例子,假如我们现在有两个package,三个node,他们之间的通信是这样的:为了能运行,我们需要打开四个终端,分别为:启动ros核心、分别运行三个node: roscore不需要加进去,因为laun

2024-03-29 21:20:07 780

原创 Topic话题和Message消息

step1:第一个参数:需要订阅的话题名称;第二个参数:缓存长度;第三个参数:接收消息包的回调函数的函数名xxx,可以随便起。我们需要定义回调函数xxx,形参是接受的消息包。这个函数不需要我们手动调动,而是系统接收到发布者的消息时,就会自动触发的函数。while循环内一定要加个ros::spinOnce函数。它可以允许节点在监听消息的同时执行其他任务。step2:在CMakeLists.txt文件中找到Bulid篇章,复制示例代码。step3。

2024-03-28 14:48:54 996

原创 apt源+超级终端Terminator

apt源可以理解成手机上的,我们可以下载它上面发布的所有开源代码。网址:ROS Index。

2024-03-27 10:12:59 539

原创 Ubuntu常规操作2

source:原始文件名称;link:软连接的名称。当一个文件上显示的有一个箭头,表示他是一个软连接。r表示递归删除,f表示强制删除。

2024-03-26 13:09:17 176

原创 ubuntu的常用操作

切换到root用户,有全部权限,可以直接使用任何命令。我们在什么时候才会切换到root用户进行操作呢?当我们使用某些命令,不想前面一直加sudo的话,可以先切换到root用户下,就可以使用这些权限被限制的命令了。注意,给root设置密码,只需要进行一次。以后可以直接使用su进入。

2024-03-25 17:19:04 1019

原创 Ubuntu的快照和系统恢复

记录我学习和使用Ubuntu的心得体会

2024-03-24 15:07:34 449

原创 深层神经网络(第四周)

这里省略了深层神经网络的前向传播和反向传播,内容和之前相似,不做过多描述。若今后需要,可以再补习。

2023-12-03 13:35:00 1057

原创 神经网络(第三周)

所以,只要是正值的情况下,导数恒等于1,当是负值的时候,导数恒等于0。如果你这样初始化这个神经网络,那么这两个隐含单元就会完全一样,因此他们完全对称,也就意味着计算同样的函数,并且肯定的是最终经过每次训练的迭代,这两个隐含单元仍然是同一个函数。如果你要初始化成0,由于所有的隐含单元都是对称的,无论你运行梯度下降多久,他们一直计算同样的函数,这没有任何帮助。函数两者共同的缺点是:在z特别大或者特别小的情况下,导数的梯度或者函数的斜率会变得特别小,最后就会接近于0,导致梯度下降的速度降低。分析一下这是为什么。

2023-12-02 20:50:09 1065

原创 决策树(第四周)

如下图所示,是一个用来辨别是否是猫的二分类器。输入值有三个(x1,x2,x3)=(耳朵形状,脸形状,胡须),其中x1={尖的,圆的},x2={圆脸,不是圆脸},x3={有胡须,没有胡须},这三个输入值都是1/0。输出y=1表示是猫,否则不是猫。椭圆型称为,矩形称为,下图模型称为决策树。对于同一个问题,可以有许多个不同的决策树模型,如下图所示。我们需要做的就是选出最优的模型,让他在交叉验证集上表现最优,这就是决策树学习算法。

2023-11-26 12:23:34 1301

原创 模型性能评估(第三周)

把数据集划分成训练集和测试集,用训练集训练模型和参数,然后在测试集上测试他的表现。如下图所示,第一行是线性回归通常的代价函数形式,我们需要将其最小化来获取参数、b。训练好模型,获得参数后,接下来使用第二第三行公式来分别计算测试集误差、训练集误差。如果很小,很大,说明模型泛化能力弱。下图是二分类问题的公式:对于分类问题,有一种更好的方法来评估。不是使用逻辑损失来计算测试误差,而是使用训练误差来衡量测试集的分数和算法错误分类的训练集的分数。

2023-11-21 13:37:19 171

原创 深度学习1【吴恩达】

跟着吴恩达老师学习深度学习,这里是我整理的笔记,方便以后复习。

2023-11-12 11:20:22 134

原创 神经网络(第二周)

根据价格预测商品是否畅销。特征:T恤的价格;分类:销售量高1/销售量低0;

2023-11-12 11:07:41 1372 1

原创 双目视觉计算三维坐标

双目视觉的基本原理,以及公式推导,我参考的b站上的视频,链接如下:2-线性相机模型-Linear Camera Model-Camera Calibration_哔哩哔哩_bilibili如果只学习双目视觉,建议阅读前五个视频。视频中有的翻译不太好,但是可以意会出来,哈哈哈~。视频中的讲解浅显易懂,但是我觉得有一处不对,下面写一份我的理解:如上图所示, (xw,yw,zw)是世界坐标系,(xc,yc,zc)是相机坐标系,(ox,oy)是光心坐标,(u,v)是摄像机内部影像的坐标系。

2023-10-29 15:07:55 1360

原创 机器学习第一周

机器学习大致会被划分为两类:监督学习,无监督学习。

2023-10-26 14:20:05 401 1

原创 std::bitset类

是 C++ 标准库中的一个类,用于表示整数的二进制位序列。它提供了一种方便的方式来处理二进制数据,尤其适用于位运算操作。

2023-10-04 11:34:54 486

原创 消灭怪物的最大数量【力扣1921】

需要满足的条件:游戏最优策略:我们可以在每分钟的开始都使用一次武器,用来杀死距离城市最近的怪兽。这样可以在力所能及的范围内,杀死最多的怪兽。示例1中打怪兽的策略可以打死 3只怪兽,其实也可以换成这样的打法:注意:我认为示例1中的方法不是“最优”策略。另外大家不要被这个示例误解,看第二步的时候,竟然没有消灭任何怪物,会误认为只有怪物和城市距离为1才能打死怪物;或者误认为只有在第i分钟内才能到达的怪物,才可以在i分钟时消灭。我们可以计算,每一个怪物最晚被消灭的时间,然后对时间进行排序。可以晚点消灭的怪物就会被排

2023-09-03 15:09:13 377

原创 Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法

不论搭建什么工程,运行什么文件,只要在Pycharm中出现这样的问题,以下方法都适用!!!

2023-09-02 13:50:53 2482

原创 买卖股票的最佳时机【力扣121】

假如我们要在第 i 天卖出股票,那么为了获得最大利润,买股票的最佳时间是第 i 天前的最低股价的那一天。我们使用min来记录已经访问过的 0-i 天的最低股价。那么在第 i 天,如果股价大于min,那么最大利润为price[i]-min;否则最大利润为0,并且min=price[i]。

2023-08-22 14:56:39 248 1

原创 Linux系统下的文件目录结构

单用户操作系统:指一台计算机在同一时间内只能由一个用户使用,一个用户独自享用系统的全部硬件和软件资源Windows XP之前的版本都是单用户操作系统多用户操作系统:指一台计算机在同一时间可以由多个用户使用,多个用户共同享用系统的全部硬件和软件资源Unix 和Linux的设计初衷就是多用户操作系统。

2023-08-21 16:50:57 158

原创 最大子数组和【力扣53】

Max[i]表示:以nums[i]为开头的所有连续子数组和的最大值。由此可以推出Max[i-1]和Max[i]的关系:若Max[i]>=0:Max[i-1]=nums[i-1]+Max[i];否则:Max[i-1]=nums[i-1];则ans=MAX(Max[0]、Max[1]、......、Max[n-1])

2023-08-09 17:13:08 296

原创 任意子数组和的绝对值的最大值【力扣1749】

设n表示数组的长度,Min[i]是以nums[i]为开头组成的任意连续子数组中的和最小值(若所有子数组的和都大于0,则Min[i]设为0。也就是说丢弃所有子数组);Max[i]是以nums[i]为开头组成的任意连续子数组中的和最大值(若所有子数组的和都小于0,则Max[i]设为0)。由此可以继续推算Min[i-1]和Max[i-1]:若nums[i-1]<=0:Min[i-1]=nums[i-1]+Min[i]若nums[i-1]+Max[i]>0:Max[i-1]=nums[i-1]+Max[i]

2023-08-09 16:35:47 356

原创 翻转卡片游戏【力扣822】

如果卡片上正面和背面的数字相同,都为x,那么x一定不符合要求,将这些数都记录到哈希表hash中。剩下的卡片正反面数字不相同,那么不在hash中的数字中的最小数min一定是答案。因为若min跟现在front数组中的某些数相同(这个数不会是hash中的数),则将那些个相同的卡片正反面兑换(这些卡片一定正反面数据不同),就可以实现min与front数组中的所有数都不相同。

2023-08-05 12:49:13 501

原创 unordered_map哈希表

哈希表存储的是由键(key)和值(value)组成的数据。哈希表就是在关键字和存储位置之间建立对应关系,使得元素的查找可以以O(1)的效率进行, 其中关键字和存储位置之间是通过散列函数建立关系,记为:Loc(i)=Hash(Keyi)

2023-08-01 23:03:36 414

原创 英雄的力量【力扣2681】

将数组按从大到小的顺序排列,i<=j,那么以nums[i]开始,nums[j]结尾,i----j中的任意数,组成的排列,其英雄力量都是nums[i]*nums[i]*nums[j];因此可以设置双重循环遍历数组,来计算总的英雄的力量。时间复杂度为O(n^2),会超时。

2023-08-01 17:25:52 268

原创 第九章:Python异常、模块和包

Python模块(Module),是一个Python 文件,以.py 结尾。模块能定义函数,类和变量,模块里也能包含可执行的代码。模块的作用:python中有很多各种不同的模块,每一个模块都可以帮助我们快速的实现一些功能,比如实现和时间相关的功能就可以使用time模块。我们可以认为一个模块就是一个工具包,每一个工具包中都有各种不同的工具供我们使用,进而实现各种不同的功能。我们可以把模块拿过来用(导入模块去使用)。基本语法:#模块定义别名import 模块名 as 别名#功能定义别名。

2023-07-12 17:51:43 75

原创 第八章:python文件操作

在Python语言中,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下:测试.txt 文件内容:我爱你你爱我吗?你爱我什么?

2023-07-11 15:02:56 87

原创 第七章:函数的进阶

如果一个函数要有多个返回值,该如何书写代码?按照返回值的顺序,写对应顺序的多个变量接收即可。变量之间用逗号隔开,支持不同类型的数据。

2023-07-11 12:58:50 64

原创 环境搭建(2)

环境搭建碰到的问题记录

2023-07-10 23:27:35 196

原创 python基本语法2

功能:和len内置函数功能一致#自定义my_len函数count=0count++name="牛帅涵"length=my_len(name) #返回3语法:def 函数名(形参1,形参2,......):[][][][]函数体[][][][]return 返回值注意事项参数如不需要,可以省略(后续章节讲解)返回值如不需要,可以省略(后续章节讲解)函数必须先定义后使用#字面量[元素1,元素2,...]#定义变量变量名称=[元素1,元素2,...]#定义空列表。

2023-07-10 00:41:39 258

原创 环境搭建(1)

总结了比赛过程中遇到的各种问题,以及尝试过的解决方案。如果遇到同样的问题,欢迎作为参考

2023-07-08 02:45:33 270

原创 圆和矩形是否有重叠【力扣1401】

那么只要圆心的位置在虚线范围内(包括虚线),圆和矩形一定有重合的地方。

2023-06-25 21:27:52 95

原创 可被三整除的最大和【力扣1262】

nums数组中的数可以分为三种类型s0,s1,s2;s0表示除以3余0的数,s1表示除以3余1的数;找出能被三整除的元素最大和sum,那么sum中包含全部s0,以及s1和s2组成的能被三整除的数(比如三个余1的数、一个余1一个余2的数、三个余2的数,等)。设s1中有l1个数,s2中有l2个数。如果sum=s0+s1+s2(贪心算法),则sum%3= (l1+2*l2)%3=r。

2023-06-21 12:51:42 107

空空如也

空空如也

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

TA关注的人

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