- 博客(184)
- 问答 (4)
- 收藏
- 关注
原创 LaTeX基础学习笔记
每一列的字母代表对齐方式,c代表中心对其,l代表左对其,r代表右对其。选择要插入的图片,caption为对图片的说明,label代表图片标签,可以对其进行引用。可以使用网站https://www.tablesgenerator.com/提供的工具在线编辑表格,然后将表格导出为LaTeX,HTML,Markdown等多种格式。如果要让一列式子对齐,我们可以使用\begin{align*} \end{align*} 标定要对其的环境,在其中使用&表示要对其的位置。用于创建文章标题,作者,日期。
2023-08-11 10:07:34
491
原创 实现langchain-ChatGLM API调用客户端(及未解决的问题)
langchain-ChatGLM是一个基于本地知识库的LLM对话库。其基于text2vec-large-Chinese为Embedding模型,ChatGLM-6B为对话大模型。原项目地址:https://github.com/chatchat-space/langchain-ChatGLM对于如何本地部署ChatGLM模型,可以参考我之前的文章http://t.csdn.cn/16STJ在本项目中,我们编写了langchai-ChatGLM API调用的客户端代码。经过测试虽然客户端可以正常调用服务器的
2023-07-28 20:51:33
9133
6
原创 Langchain-ChatGLM配置文件参数测试
其中可能对读取知识库影响较大的变量有CHUNK_SIZE(单段参考上下文的长度),VECTOR_SEARCH_TOP_K(知识库参考文段数量),和VECTOR_SEARCH_SCORE_THRESHOLD(知识库匹配内容需要达到的最小相关度)。值得注意的是对于内容型问题,四个模型见差距较大,并且模型1和模型2,模型和模型3有较大的组间差距。另外值得注意的是,在第2,3组实验中,较高的CHUNK_SIZE和VECTOR_SEARCH_TOP_K使得模型回复内容明显较长,使得模型对服务器显存消耗明显增大。
2023-07-13 17:34:56
3598
原创 EPSON机械臂控制记录
在打开电机后,在示教界面就可以手动控制机器人各轴的运动。我使用的机器人型号为EPSON LS3-4013,在本文中记录了机械臂控制器和电脑连接,及电脑程序控制机械臂的完整流程。在示例中我们保存了点P0, P1, P2,在下面程序中我们实现了机器人在各点间做JUMP运动(在移动过程中抬起Z轴)3 机器人第三关节(Z)位于机器人地盘上方75mm处,误差在2mm左右内可以。机器人示教即为手动设置机器人要移动的目标点,在机器人管理器->步进示教可以打开示教界面。在机器人管理器中,启动电机,并解除所有轴的锁定。
2023-07-08 18:01:10
1361
原创 ubuntu22.04CPU部署ChatGLM笔记
尽管官方文档上说明ChatGLM int4模型只需要6G的运行内存,但是在运行上一步的模型时我电脑8G的内存依然跑满导致进程被终止。另外在我尝试英文对话时,模型出现了官方说明过的“英文中出现中文问题”。在我们下载好模型文件后,将里面的"THUDM/chatglm-6b"改为本地模型的地址。另外官方建议指定运行的模型版本。在我自己情况下,ChatGLM只有在加载参数文件过程中会占用大量的内存(差不多10G以上),在模型加载完成后占用内存会稳定在6G,但是根据官方文档介绍随着对话增加内存占用也会逐步增加。
2023-06-19 19:01:12
1112
原创 系统启动问题error: no such partition Entering rescue node
今天为了安装新的ubuntu系统,把电脑中原有的ubuntu系统硬盘分区删除了。结果在用u盘重装好新系统后,拔出u盘重启时显示如下错误。出现该问题的原因我猜测时因为linux找不到安装的ubuntu系统在硬盘中对应分区位置。如果显示找不到文件系统,说明系统没有安装在该分区,如没有报错,输入normal即可成功进入系统。但该方法只能保证成功进入一次,下一次启动时依然会出现同样问题。set prefix=(分区名)/boot/grub。set boot=(分区名)对每一个分区,输出一下代码。
2023-06-06 18:36:10
2062
原创 unity进阶学习笔记:photonServer测试
如果我们要创建一个新的服务器程序,在该文件夹下面创建新文件夹,并在新建文件夹下面创建文件夹bin。在解决方法资源管理器中,我们右键依赖性添加项目引用,选择Photon-OnPremise-Server-SDK_v4-0-29-11263\lib 文件夹下面的以下dll文件。程序编写完成后,我们右键项目->属性 进入输出选项,将输出的基路径设为Photon-OnPremise-Server-SDK_v4-0-29-11263\deploy\PSTest\bin,然后生成项目。如果要更大容量就需要使用付费版。
2023-05-19 15:49:11
1435
原创 unity进阶学习笔记:数据存储管理器
有些时候我们希望保存某一游戏物体上面组件的数据,在读档是将数据加载到游戏物体上。这里我不知道为什么Package Manager始终没法检测到Easy Save的包,我们可以选择Assets -> Import Package -> Custom Package在硬盘中导入Easy Save的unitypackage文件。Easy Save包含加密功能,这里我们使用AES加密,加密密钥为一个字符串,我们设为“test”。unity自带有一套数据存储的系统,但是其支持的数据类型较少,不是非常好用。
2023-05-17 11:08:07
268
原创 unity进阶学习笔记:对象池管理器
由于游戏中可能需要为不同类型物体创建不同对象池,我们在对象池中使用数据类型UnityEngine.Object,所有游戏物体的父类。当再需要出现同类对象时,我们先从对象池里获取之前存储的对象,如果对象池已空再创建新对象。1 Spawn:如果对象所对应的对象池不存在,则新建对象池。如对象池里没有该对象,生产对象,否则从对象池中取出。1 Push(): 将一个新对象加入对象池,如果对象池已满删除对象。2 Pop(): 从对象池返回一个对象,如果对象池已空返回null。2 UnSpawn:删除一个对象池。
2023-05-17 09:33:11
361
原创 unity进阶学习笔记:物品与背包类
我们要首先定义物品类Item,其变量和json文件中的定义保持一致。RemoveItem:判断物品是否在背包,如存在将物品数量减去quantity,减完后如quantity小于等于零删除该背包格子。在本文中,我们要完成一个物品类用于访问Json格式储存的游戏物品,以及一个背包类用作物品集合,作为游戏内的物品背包。GetItem:遍历物品列表,返回和参数itemID的ID一样的物品,如不存在返回null。AddItem:判断物品是否存在背包,如果存在直接增加物品数量,不存在则添加新物品。
2023-05-16 17:55:34
692
原创 unity进阶学习笔记:json和xml
要解析json文件,我们使用方法JsonUtility.FromJson()得到json文件最外层的数据类型,然后即可对该数据进行层层拆包得到里面的数据。要为一个节点添加属性,首先创建XmlAttribute对象,再把该对象加入节点的Attribute中,方法和添加子节点类似。在[ ]中@id=2代表访问所有有id属性的节点中,id值为2的节点。如果直接为@id代表访问所有有id属性的节点。在节点后面[ ]中可以输入要访问第几个节点,注意第一个节点编号为1不是0.last()为最后一个节点的编号。
2023-05-16 14:41:55
927
原创 unity进阶学习笔记:声音管理器
我们的声音管理器设置三个播放器,envPlayer,sePlayer,Player,分别用于管理游戏环境音乐,音效,和背景音乐。如果直接得到AudioClip,我们在设置好音量和clip后判断一下播放器是否在播放其他音乐,如果是的话先关闭正在播放的音乐,然后开始播放新的clip。在创建声音管理器之前,我们先创建一个空的类Manager用于保存所有的管理器单例,这样之后要用到管理器时,直接调用Manager类即可。如果传入的是音乐名,就从Resources加载对于音乐,然后调用第二个PlayMusic方法。
2023-05-13 15:14:54
618
原创 unity进阶学习笔记:UI框架
在UI系统中,我们放弃之前消息系统中使用的广播框架,因为该方案需要专门为每一个UI组件编写发送和接受消息的方法,过于复杂。我们希望通过UIController和UI Manager可以让每一个UI组件访问到任何一个另外的UI组件。在下面程序中我们获取到该游戏物体的按钮组件control,并在control上挂载对action的监听。UI框架主要分3层:UIManager用于管理所有UI组件,UIController用于管理某一个UI面板,如角色信息面板,商店面板等。一般来说,一个游戏内具有大量的UI组件。
2023-05-12 13:21:36
1206
原创 unity进阶学习笔记:有限状态机
每一个状态里都有对应的动画。在idle()方法中如果发现玩家按下方向键将状态切换为State.run,在按下空格时将状态切换为State.wave。状态基类保存了状态的ID(即在State枚举中的值),Mono包括了使用该状态的游戏物体,Manager为该状态的管理器(在后面代码实现)在状态基类里定义了OnEnter (在进入该状态时执行的方法) OnUpdate (在该状态中每一帧调用方法)。在run()方法里我们实现了角色移动,如果方向为(0,0,0)时说明玩家松开方向键,将状态切换为idle。
2023-05-08 11:19:12
739
原创 unity进阶学习笔记:消息框架
1 使用消息框架的目的对于小型游戏,可能不需要任何框架,而是让各个游戏脚本直接相互通信。如要实现玩家受到攻击血量减少,通过玩家控制类向血条脚本发送消息减少血量。但是这样直接通信会导致各脚本通信关系记为复杂,并且每一个脚本都和多个脚本有联系,导致维护和更新十分困难我们利用上节课讲的管理类,可以将一类脚本由一个管理类控制,如将玩家的功能放在玩家管理类下,将血条,背包等UI组件放在UI管理类下。这样要减少玩家血量,可以让玩家控制类向UI管理类发消息,然后UI管理类来改变血条。该方案对大部分小型游戏适用,但对于大型
2023-05-06 15:56:48
1925
7
原创 unity进阶学习笔记:单例模式
在该实例中,我们创建一个单例对象instance(一般单例对象常用名)用于给外界访问。消息框架指游戏物体之的通信框架,虽然unity引擎自带一套消息框架,但该框架只能用于父子物体之间通信,无法实现大部分非父子关系的物体间通信。单例只一个类只生成一个对象。一般来说,游戏内容的管理类,如消息管理类,网络管理类都只应有一个对象,这时就要使用单例实现。状态机用于管理每一个物体不同状态,如对于一个人物可能有移动,攻击,死亡等多个状态。游戏中每将一个脚本挂载到一个游戏物体上作为组件时,就会生成一个该脚本类的对象。
2023-05-05 09:18:28
912
1
原创 ROS小车研究笔记:ROS TF坐标系管理
由于该行在Pose回调函数里,我们使用Pose话题中得到的(x, y, 0) (由于海龟程序为平面不存在z轴)作为广播的位置坐标。Pose中theta作为角度坐标,时间戳(当前时间rospy.Time.now()),和要广播的两个坐标系。使用listener监听trutle2和turtle1在当前时间(rospy.Time(0))的tf变换。各个节点的坐标构成TF树用以保存节点间坐标变换。通过TF,我们可以得到10秒之内任何机器人两个坐标系间的位置关系。创建tf坐标广播器以广播tf坐标。
2023-04-22 16:59:03
810
原创 ROS订阅激光雷达话题
在每一次检测中,激光发射器发射一道激光,遇到障碍物时反射被接收器接收到。通过发生和接收的时间间隔除以光速即可达到雷达和障碍物的距离。激光雷达每完成一次检测会旋转一定角度继续检测,直到转完360度即可得到雷达周围障碍物的分布。数组中每一个元素代表激光雷达从起始角度到终止角度每一次扫描得到的测距。在RViz中,激光雷达数据通过添加LaserScan进行可视化。在lidar_pkg下创建目录script,在scripts里创建lidar_node.py。激光雷达强度,代表数据的精准度,由厂商设置。
2023-04-10 20:37:01
1783
原创 ROS小车研究笔记4/1/2023:研究文章Detecting Glass in Simultaneous Localisation and Mapping
基于镜面反射和漫反射的不同性质,我们可以推断出如果入射激光在物体上发生漫反射,激光雷达在不同角度上接受到的光强会较为稳定。而入射激光在物体上发生镜面反射,激光雷达在大部分角度上接受到的光强会低于漫反射的值,但在和入射光线垂直的角度上接受的较强值。由于激光雷达的原理依靠发射激光并通过反射光线判断物体,在面对透明度高的物体,如玻璃时,检测精度会受到很大影响。如图,发生镜面反射的物体(玻璃和镜子)在scan range接近0度时接受到光强明显高于漫反射物体,而在其他角度上光强一般低于漫反射物体。
2023-04-01 17:03:09
692
原创 ROS小车研究笔记3/18/2023:SLAM建图系统架构
其子坐标系定义了小车摄像机,雷达,陀螺仪,和车体的相对位置。wheeltec_robot节点为小车控制节点,其发布里程计和imu消息,并根据传入的速度控制指令来控制下位机电机。gmapping算法实现需要输入激光雷达深度信息,里程计信息,和imu信息。odom_combined使用卡尔曼滤波将里程计和imu的信息结合得到了更精准的小车坐标信息。base_link代表了小车车体坐标,其子坐标系定义了各个车轮相对于车体的位置。robot_pose_ekf发布地图原点和小车的坐标系变换。
2023-03-18 16:43:17
1521
原创 深度学习笔记:深度学习CNN python程序实现
卷积层(16 X 3 X 3)—ReLU—卷积层(16 X 3 X 3)—ReLU—池化层(长2,宽2,步幅2)—卷积层(32 X 3 X 3)—ReLU—卷积层(32 X 3 X 3)—ReLU—池化层(长2,宽2,步幅2)—卷积层(64 X 3 X 3)—ReLU—卷积层(64 X 3 X 3)—ReLU—池化层(长2,宽2,步幅2)—affine—ReLU—dropout(dropout比率0.5)—affine—dropout(dropout比率0.5)—softmax。
2023-03-13 20:59:08
991
2
原创 深度学习笔记:卷积神经网络(2)
在构造方法中我们设置了卷积神经网络的参数输入神经元个数,filter_num(卷积核个数),filter_size(卷积核大小),pad(填充量),stride(卷积核步幅),隐藏层神经元个数,输出神经元个数,权重初始值标准差。水平图样的卷积核会更好提取图像中水平方向的边缘,竖直图样的卷积核提取竖直方向边缘,其他以此类推。在下面程序中,我们使用30个5 X 5,通道为1的卷积核对灰度图进行检查,并将学习前和学习后的各个卷积核权重进行可视化。根据传入的参数,程序算出卷积层和池化层的输出大小。
2023-03-12 11:01:19
331
原创 ROS小车研究笔记3/11/2023:多点导航及其源码实现
这时如果try_again为1,代表小车有一次再次尝试机会,控制小车再次前往目标点(前往当前目标点index - 1)。count为目标点总数,index为下一个要前往的目标点,try_again为在前往目标点失败后,在重新选择前往下一个目标点前尝试前往该目标点的次数。index小于count时代表还没有完成所有目标点,此时发布话题指挥小车前往下一个目标点并使index + 1。这里注意区分index - 1代表了当前小车所在目标点,而index 代表小车要去的下一个目标点。该节点即为多点导航控制节点。
2023-03-11 15:02:28
5783
4
原创 深度学习笔记:卷积神经网络(1)
对于一个形状(w,h)的输入图,步幅为S,填充为P,卷积核(cw, ch),输出特征图形状为((w + 2P - cw) / s + 1, (h + 2P - ch) / 2 + 1)对于有多通道的图片(如RGB图片),需要使用和通道数一致的卷积核数量,其得到的特征图通道数恒为1.可以使用多个卷积核分别和图片做卷积运算,将每一个运算得到的特征图累积成一个多通道特征图。如图,对于形状为(C,H,W)的输入图,使用FN个形状为(C,FH,FW)的卷积核,得到形状为(FN,OH,OW)的输出特征图。
2023-03-08 21:34:20
418
原创 深度学习笔记:dropout和调优超参数方法
在正向传播中,如果train_flg为True(神经网络在训练状态),会生成一个和输入x形状相同的boolean矩阵mask,mask为False的位置(即被删除的神经元)在正向传播和反向传播的结果都为0。dropout删除神经元的操作类似于在每一轮训练一个略有不同的神经网络,最后将每一个网络的结果在预测阶段叠加,实现利用一个神经网络模拟集成学习。根据第一轮测试结果,我们将学习率范围缩小到10e-4至10e-3,将权值衰减率范围缩小到10e-8至10e-6,开始第二轮实验。
2023-03-05 12:40:50
2347
原创 ROS小车研究笔记3/4/2023:自动导航launch文件解析
这里配置了全局代价地图的参数,包括了代价地图刷新率(update_frequency),地图话题发布频率(publish_frequency),以及该地图中包含哪几个图层,如这里全局代价地图包括了static_layer,obstracle_layer,inflation_layer这三个层。teb_local_planner_params.yaml (位置:turn_on_wheeltec_robot/params_nav_common/teb_local_planner_params.yaml)
2023-03-04 16:08:00
2106
原创 深度学习笔记:数据正规化和抑制过拟合
这里L2范数指各权重值的平方和的开方,即√∑w²,与其类似的还有L1范数,指各权重值绝对值的和,L∞(又称Max范数),为权重值中最大值。可以看到神经网络对训练数据集拟合度非常高,在后期直接达到1(对每个epoch中300个数据预测完全正确),但是对测试数据集准确度较低,并在后期没有增长,这就是过拟合的现象。在该程序中,我们为了模拟过拟合现象,使用300的样本量,和7层神经网络(6个隐藏层,每次神经元个数100),进行200个epoch训练,并绘制训练准确度和测试准确度图象。
2023-03-04 11:56:07
480
原创 深度学习笔记:神经网络权重确定初始值方法
神经网络权重不可为相同的值,比如都为0,因为如果这样网络正向传播输出和反向传播结果对于各权重都完全一样,导致设置多个权重和设一个权重毫无区别。在以下实验中,我们使用5层神经网络,每层神经元个数100,使用sigmoid作为激活函数,向网络传入1000个正态分布随机数,测试使用不同的随机数对网络权重的影响。其推导出的最优初始值为每一层初始权重值是1/√N,其中N为上一层权重个数。ReLU函数有自己独特的默认权重设置,称为He初始值,其公式为2/√N标准差的随机数,N为上一次神经元个数。
2023-03-01 20:12:07
1653
原创 深度学习笔记:不同的反向传播迭代方法
在下面的示例中,可以看到虽然迭代方向还是呈“之”字形,但是在x方向,虽然梯度较小,但是由于受力始终在一个方向,速度逐渐加快。由于h是不断累加的平方和,如果学习一直持续下去,W更新率会不断趋于0,要改善这一问题可以参考RMSProp,该方法会对较早更新的梯度逐渐“遗忘”,而更多反应新更新的状态。这一方法实现简单,但是在很多函数中,梯度下降的方向不一定指向函数最低点,这使得梯度下降呈现“之”字形,其效率较低。在这里注意我们在h的每个元素中加上了微小的1e-7,这是为了防止h中有元素为0时,作为除数会报错。
2023-02-27 21:29:31
828
原创 ROS小车研究笔记2/25/2023自动导航
每一个粒子具有和机器人相同的速度,但是沿各自的方向运动,会和机器人逐渐远离。在该系统里,/map话题对应的地图为turn_on_wheeltec_robot/map/WHEELTEC.yaml文件。在小车行进中,local_planner会根据全局代价图在小车周围的一部分(即local_costmap)进行路径调整和避障,并试图让路径和规划好的全局路径接近。在标定小车起点和目标点后,global_planner程序会先根据地图算出全局的代价图global_costmap,并得到一条使总代价最小的预设路径。
2023-02-25 18:27:03
3134
原创 ROS小车研究笔记:二维SLAM建图简介与源码分析
这里map和odom都为1不同的参考坐标系,odom是里程计测得的位置坐标,依靠小车自身移动速度积分得到,map为激光雷达测得的小车在地图上位置坐标。两者坐标系差距即为里程计的偏移。其中 -> base_link为激光雷达相对base_link(默认的机器人基坐标系)位置,这一值一般为静态,在小车模型文件中定义好。这里我们可以看到在开启gmapping 建图算法中,我们启动了文件turn_on_wheeltec_robot/launch/include/algorithm_gmapping.launch。
2023-02-25 14:55:00
1700
原创 深度学习笔记:误差反向传播(2)
如对[[1, 1, 1], [2, 2, 2], [3, 3, 3]]加上偏置[1, 2, 3]的结果为[[2, 3, 4], [3, 4, 5], [4, 5, 6]]。反向传播输出矩阵形状要和输入矩阵形状一致,如X形状为(N,2),∂L/∂X 的形状也要为(N,2)。如要计算∂L/∂X,我们要将反向传播的输入(N,3)乘以W的同时确保输出形状为(N,2)。因此,我们一般利用数值微分的结果对反向传播的结果进行验算,如果验算误差很小,我们可以确定反向传播的方法结果正确。使用反向传播发计算梯度。
2023-02-24 12:29:36
530
原创 ROS小车研究笔记2/23/2023激光雷达建图(2)
默认路径在/home/wheeltec/wheeltec_robot/src/turn_on_wheeltec_robot/map里。进入mapping.launch文件中,修改如图位置的default值即可切换算法。注意这里两个地址(由空格隔开),分别为要挂载的文件地址,挂载到的本机位置(一般默认选为/mnt)。保存好的地图显示和rviz中相同,黑色区域代表障碍物,白色区域代表空地。(关于激光雷达建图部分内容,可见文章http://t.csdn.cn/AiHk0)2 保存,自主命名地图。
2023-02-23 19:14:28
527
原创 深度学习笔记:误差反向传播(1)
我们节点输出∂z/∂z (就是1)乘以节点的局部偏导∂z/∂t(**2这一节点中z是关于t的函数,因此偏导为∂z/∂t)得到下一步输入∂z/∂t,在乘上t关于x函数节点偏导∂t/∂x即可得到∂z/∂x的值。如上例中如果我们直到总价格为715, 苹果的总价为200,我们可以直接推得橘子的总价,而不需要计算和橘子相关的节点。∂z/∂x 的值为y,而∂z/∂y 的值为x。∂z/∂x 和 ∂z/∂y 的值都为1,因此在反向传播中只需要将 ∂L/∂z 乘1。利用乘法和加法的反向传播实现购买苹果的计算。
2023-02-18 16:57:01
535
原创 深度学习笔记:使用随机梯度下降法识别mnist数据集
我们每经过一个特定的epoch检测神经网络关于训练数据和关于测试数据的预测精准度。该方法由于使用随机的mini-batch数据,被称为随机梯度下降法(stochastic gradient descent SGD)我们的目标为减小mini-batch损失函数的值。np.argmax() 得到数组中最大值,我们用此函数得到网络预测的数值和one-hot标签值。计算损失函数关于各个参数的偏导,得到损失函数关于神经网络参数的梯度。超参数:迭代次数,训练集样本量,每次选取的mini-batch样本量,学习率。
2023-02-12 18:23:54
579
原创 ROS小车研究笔记2/11/2023:使用ssh远程登录小车
此处ROS_MASTER_URI的值为小车的IP地址。公钥的数据只有私钥可以解锁,而私钥的数据只有公钥可以解锁。-p 表示选择端口,默认端口为22(-p 22),小车和虚拟机在同一通信端口才能通信。对称加密:使用同一密钥对信息进行加密和解密,但是一旦该密钥被窃取就会威胁通信安全。虚拟网络编辑器中要选择正确的adaptor,否则虚拟机中无法使用wifi连接。(此处IP地址和小车IP保持一致,可以使用ifconfig查看IP地址)小车又玩没电了,后面激光雷达建图的部分没有截图。1 小车开机,连接Wifi。
2023-02-11 17:25:12
1545
原创 深度学习笔记:神经网络的学习(2)
通过求得损失函数(总损失关于权重和偏置的函数)梯度,寻找梯度下降的发现,即可找到函数最小值。注意利用梯度下降发得到的不一定是最小值,而仅仅为一个极小值,及梯度为0.另外,当函数呈扁平状,学习可能会进入一个平坦区域,难以进展,被称为学习高原。学习率这样的参数被称为超参数。神经网络的梯度值损失函数关于权重参数的梯度,如对于一个2 * 3的神经网络权重W,损失函数为L,梯度即为∂L/∂W。注:神经网络损失函数是关于网络输出输出的函数,而网络输出又是关于W的函数,所有损失函数也为关于W的函数。
2023-02-04 16:28:05
491
原创 ROS小车研究笔记2/2/2023 激光雷达建图
我在测试中还出现启动mapping.launch后持续显示无法启动IMU。这里保存的地图默认路径为/home/wheeltec/wheeltec_robot/src/turn_on_wheeltec_robot/map。控制小车在场地上移动建图。在rviz中灰色代表已扫描区域,黑色代表扫描到的障碍物,红色(或彩色?黑色代表障碍物,白色代表空间。可以使用编辑软件在图片中添加或去除黑色部分,修改会反应在导航上。在rviz中如果出现小车坐标错误,如小车坐标倾斜,可以按单片机上的RESET键使里程计复位。
2023-02-02 18:08:12
1269
原创 ROS小车研究笔记1/31/2023 小车硬件结构及键盘移动控制节点
这里可以看到方向键只会立刻改变target_speed和target_turn。而真实速度和方向control_speed和control_turn会在每一轮循环中向目标速度改变0.1,实现平滑变速。移动键和速度控制键对应的值。最终速度为 (speed X 方向)和(turn X 方向)。在修改速度时为(speed X 修改幅度)和(turn X 修改幅度)方向控制指令只会直接影响目标速度target_turn和target_speed。下方为树莓派,安装了ROS系统和Ubuntu系统,用于整个小车控制。
2023-01-31 18:20:31
2558
1
原创 ROS小车研究笔记01/30/2023 小车启动,里程计,IMU消息类型(遗留问题)
geometry_msgs/Quaternion类型:float64 x, y, z, w 四元数表示X, Y, Z姿态(可以用tf_transformations里对应方法进行四元数和高斯角表示法切换)geometry_msgs/Vector3类型: float64 x, y, z (x, y, z线速度)geometry_msgs/Vector3类型:float64 x, y, z (x, y, z角速度)IMU里搭载了MPU6050陀螺仪模块,,可以侦测x,y,z方向上小车姿态,角速度,和加速度。
2023-01-30 20:05:50
1492
空空如也
USACO竞赛第一个程序提交错误
2021-06-16
ACSL竞赛题Sameness Factor求解
2021-02-16
Java里创建Stack,和书上教程一模一样,为什么报错?
2021-02-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人