- 博客(57)
- 收藏
- 关注
原创 ros2_note04
ROS2帮我们在数据传递时做好了消息的序列化和反序列化(,而且ROS2的消息序列化与反序列化通信是可以做到跨编程语言、跨平台和跨设备之间的。生命周期节点(Lifecycle Node)允许开发者以可控的方式启动、配置、激活和关闭节点,从而提高系统的可靠性和可维护性。可以模拟复杂的物理现象(如重力、摩擦力、碰撞等),并支持多种传感器(如激光雷达、摄像头、IMU 等)的仿真。Rviz2是 ROS2 中的一款强大的可视化工具,用于显示和调试机器人系统的各种数据。ROS参数:一种灵活的方式来配置和调整节点的行为。
2025-04-17 13:15:33
775
原创 ros2_note03
ROS2帮我们在数据传递时做好了消息的序列化和反序列化(,而且ROS2的消息序列化与反序列化通信是可以做到跨编程语言、跨平台和跨设备之间的。生命周期节点(Lifecycle Node)允许开发者以可控的方式启动、配置、激活和关闭节点,从而提高系统的可靠性和可维护性。可以模拟复杂的物理现象(如重力、摩擦力、碰撞等),并支持多种传感器(如激光雷达、摄像头、IMU 等)的仿真。Rviz2是 ROS2 中的一款强大的可视化工具,用于显示和调试机器人系统的各种数据。ROS参数:一种灵活的方式来配置和调整节点的行为。
2025-04-16 22:18:52
862
原创 ros_note02
ROS2中每一个节点只负责一个单独的模块化功能如:一个节点负责控制车轮转动,一个节点负责从激光雷达获取数据,一个节点负责定位节点相关的CLI(command-Line Interface)
2025-04-15 09:03:58
384
原创 c_c++八股(一)
static静态局部变量(函数内)使局部变量的生命周期,但作用域仍限于函数内变量,下次调用函数时保留上次的值strlen 和sizeofstrlen计算C风格字符串的长度const char*,以 \0 结尾的字符数组字节序概述字节序转换const数组与指针数组:连续内存块的名称,存储相同类型的元素。数组名代表整个内存块的首地址,但在sizeof和&操作时表现为整个数组的属性指针:变量,存储内存地址,可指向任意数据类型或内存位置。
2025-04-12 16:56:43
912
原创 Arm架构
ARMv4/v5:早期经典架构(如ARM7、ARM9),支持32位指令。ARMv6:引入Thumb-2指令集(混合16/32位指令),提升代码密度。ARMv7:分为三个系列:Cortex-A(应用处理器,如手机SoC)。Cortex-R(实时控制,如汽车电子)。Cortex-M(微控制器,如STM32)。ARMv8:首次支持64位指令(AArch64),兼容32位(AArch32)。ARMv9(2021年发布):新增安全(SVE2)、AI加速等功能。
2025-04-11 09:38:08
1008
原创 视觉_transform
假设输入图像为x∈R∗H∗×∗W∗×∗C∗C是图像的通道数(例如,RGB图像的 C=3)将图像分割成N个大小为P*CP的patch,每个patch的大小为P×P×CNP2H∗W将每个patch展平为一个向量,展平后的向量长度为P2∗C将每个展平后的patch向量通过一个线性投影(全连接层)映射到一个 D维的嵌入空间这个线性投影是可学习的,其权重矩阵为E∈RP2∗C∗DXp是RP2∗C展平后的patch。
2025-04-06 19:14:50
1032
原创 Clip多模态
最常用的损失函数是InfoNCE Loss(Noise Contrastive Estimation)L−log∑k1Nexpsimzizkτexpzizjτzizjzksimzizjτsimzizj∣∣zi∣∣∣∣zj∣∣zizj:一只猫坐在沙发上:一只猫坐在沙发上:一只狗在草地上奔跑:一只狗在草地上奔跑:一辆红色的汽车停在路边。
2025-04-05 13:36:09
850
原创 高效深度学习lecture03
通过敏感性分析,可以确定模型中哪些参数或层对于性能不敏感,从而为剪枝提供指导,帮助选择那些对性能影响较小的部分进行裁剪,以减少模型规模、提高推理速度,同时尽量保持模型的性能。权重级别剪枝:就像挑选模型中一些“小的、不重要的”权重,将它们去掉,但是网络的架构(每一层的神经元和连接)保持不变。剪枝的本质上是将稠密的神经网络转变成稀疏的神经网络,可以去除那些冗余的突触,同样也能移除那些冗余的神经元。层级剪枝:删除了一个完整的“计算模块”,即某一层的所有神经元和连接,整个层的计算就不再进行。
2025-04-03 22:20:31
1010
原创 高效深度学习lecture01
显存提供了快速的数据存储和读取通道,减少了从 主内存(系统 RAM)到 GPU 的数据传输延迟,提高了整体性能。一种用于大语言模型(LLM)的推理策略,通过让模型生成逐步的推理步骤,从而提高复杂任务(如数学推算、逻辑推理、问答等)的准确性和解释性。AI模型需要大量计算,比如神经网络中的矩阵乘法,FLOPS越大,计算能力越强,也就是能更快、更高效地处理任务。在这种情况下,GPU 的计算能力可能会受到限制,即使它的。,它们代表浮点数的不同精度,位数越多:表示的数值范围越大,精度越高(更接近真实值)
2025-04-03 22:19:11
858
原创 CSS(八)
假设 Ubuntu 桌面电脑(IP:192.168.1.100),连接在家庭路由器(IP:192.168.1.1)的局域网中。现在,电脑需要通过路由器访问外网。为了与路由器通信,Ubuntu 系统需要知道路由器的 MAC 地址。在本地局域网中,设备通过 MAC 地址进行通信,而 IP 地址是网络层标识。设备在发送数据包时,知道目标 IP 地址,却不知道目标 MAC 地址,需要。是一种简单的路由策略,主要用于网络中的数据包传播。在以太网等局域网中,设备通过 MAC 地址进行直接通信。
2025-03-26 16:38:11
612
原创 CS144(四)
Congestion指的是网络中数据流量超过了网络的处理能力或链路的容量,导致网络设备(如 路由器、交换机)无法高效处理所有流量,从而产生延迟、丢包、带宽浪费等问题,降低吞吐量。TCP拥塞控制中,TCP将通过调整窗口的大小来改变网络中未确认数据包的数量,它将设置窗口大小,而不是仅仅使用通告窗口,这是它之前使用的方式,来自接收方,以防止接收方过载。congestion control 目的在于控制发送方在网络中未完成的数据包流量,目标是发送尽可能多的数据包,但不超过网络能够支持的量。
2025-03-26 16:35:18
353
原创 CS144(七)
NAT(Network Address Translation)是一种网络地址转换技术,通常由执行,主要用于在多个设备共享一个公共IP地址时解决地址匮乏的问题地址转换:NAT设备通过将内部网络的私有IP地址转换为公共IP地址,允许多个设备共享一个或少量的公共IP地址访问互联网SNAT(Source NAT):对源地址进行转换(用于内网设备访问外网DNAT(Destination NAT):对目标地址进行转换(用于外网访问内网服务)端口转换:NAT设备在转换IP地址时,同时修改TCP/UDP的源或目标端口,以
2024-12-02 16:52:29
1342
原创 STL(一)
容器(containers):各种数据结构,如 vector, list, deque, set, map 用来存放数据。从实现的角度来看,STL 容器是一种 class template算法(algorithms):各种常用的算法如 sort, search, copy, erase…从实现角度来看,STL 算法是一种 function templatestd::findstd::count。
2024-11-25 21:12:27
473
原创 cs144(一)
数据包是一个self-contained数据单元,携带着使其能够到达目的地的必要信息,分组交换是将我们的数据分割成离散的、self-contained的数据块。传输层负责将数据可靠或不可靠地传送到另外一端,传输层通过将数据交给网络层来发送数据。最后,数据包被交给链路层,链路层负责将数据包从路径上的一个跳点跳到另外一个调点。数据链路层可以是Ethernet、wifi、dsl、3g…网络层负责将数据分成数据包,每个数据包都有正确的目的地址。当应用程序有数据要发送时,应用层将数据交给传输层,
2024-11-23 21:12:42
668
原创 lab_4_144
建立起基本的连接、数据传输和连接终止的过程创建名为TCPConnection的总体模块,该模块将TCPSender和TCPReceiver结合起来,并处理连接的全局管理。
2024-11-19 12:05:50
630
1
原创 设计模式练习(二) 简单工厂模式
小明家有两个工厂,一个用于生产圆形积木,一个用于生产方形积木,请你帮他设计一个积木工厂系统,记录积木生产的信息。
2024-11-16 21:38:38
403
原创 FreeRTOS(三) 队列
7、xQueueReceiveFromISR 是 FreeRTOS 提供的一个用于从队列中接收数据的函数,专门用于在中断服务例程(ISR,Interrupt Service Routine)中调用。使用场景:在队列被初始化时,pcHead 和 pcTail 定义了数据的存储范围,帮助 xQUEUE 在队列溢出或队列空时进行边界检测。使用场景:当队列满或空时,某些任务会被阻塞,这些任务会被加入到相应的等待队列中。当任务从队列接收数据时,这个指针指向数据的存储位置,每次读取后更新到下一个位置。
2024-11-14 21:26:37
902
原创 lab_2_3_144
lab2主要是32位相对序列号WrappingInt32和64位绝对序列号的转换q:序列号的作用:a:序列号的主要目的是确保数据的正确传输和顺序,以及在接收方进行数据的重传请求时能够准确地指出需要重传的数据部分随着通信的进行,序列号会逐渐增加,直到达到最大值,然后循环回到0。由于序列号的循环性质,现代操作系统会使用足够大的序列号空间来减少序列号重复的可能性isn就是初始序列号,n是64位绝对序列号和函数的完整实现acko返回第一个未确认接收的字节序列号。
2024-11-14 18:02:49
375
原创 lab_3
把类似shell、cat、 …程序 boxes around these让它们不会互相影响, so that they cant really affect each other如果一个应用程序出现意外,或者发生bad thing,不会影响其他操作系统如果没用内存隔离,那么假设在同一物理内存空间,有着shell 、 cat、 … 程序,那么如果cat突然出现操作了shell的内存空间,就会导致shell出错;虚拟地址->物理地址映射如图,虚拟地址分为了2部分:Index索引, Offest偏移量。
2024-11-13 22:36:50
565
原创 Freertos源码(一) 延时函数
1、获取系统时间上述为获取系统的tick数据,主要是portTICK_TYPE_ENTER_CRITICAL();进入临界区的函数xTickCount为freertos系统的时钟系统的节拍数在FreeRTOSConfig.h文件中。
2024-11-13 18:54:19
900
原创 CS144_01
因为网络延迟或者路由转发等原因,导致无法保证package的有序到达, TCP协议是一个工作在传输层的可靠数据传输服务;它可以确保接收端的网络包是无损坏的、无间隔、无冗余。
2024-11-11 21:43:32
907
原创 byteDance_note01
Socket5(通常写作SOCKS5)是一种网络协议,用于客户端与代理服务器之间的通信,以及通过代理服务器转发网络请求。
2024-11-04 21:16:22
583
原创 设计模式(六)
组件构建过程中,某些接口之间的依赖常常会带来很多问题,甚至根本无法实现。采用添加一层间接稳定接口,来隔离本来互相紧密关联的接口是一种常见的解决方案。
2024-11-01 11:03:43
619
原创 设计模式(四)
软件系统中,经常面临创建对象的工作,由于需求的变化,需要创建的对象的具体类型经常变化面向接口的编程:一个对象的类型,往往需要生成抽象类,接口类;不应该生成具体的类变量需要生成抽象基类。
2024-10-28 20:39:47
542
原创 设计模式(三)
某些情况,可能会过度地使用继承来扩展对象的功能;由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;随着子类增多, 各种子类的组合会导致更多子类的膨胀需要使用对象功能的扩展,能够根据需要来动态地实现,避免扩展功能的增多带来的子类膨胀。
2024-10-27 20:24:43
510
原创 设计模式(一)
封装:隐藏内部实现继承:复用现有代码多态:改写对象行为 分而治之,将大问题转为小问题,复杂问题分解多个简单问题 层次更高,处理复杂性有个通用的技术。
2024-10-27 20:22:02
534
原创 分治求解最大子数组
函数计算跨越中点的最大子数组。将左右两部分和跨越中点的最大子数组中的最大值作为结果返回。计算跨越中点的最大子数组。这需要从中点县向左和向右分别扩展,找到包括中点的最大子数组。函数分别求解左半部分和右半部分的最大子数组。递归求解左半部分和右半部分的最大子数组。右半部分:从mid+1 到high。mid为low+high的中点。左半部分:从low到mid。将数组分成左右两部分。
2024-07-04 22:24:46
284
原创 02归并排序——分治递归
过将一个复杂问题分解为较小的子问题,逐个解决这些子问题,然后合并解决方案来解决原问题。,继续将其分解成更小的子数组,直到每个子数组只包含一个元素或为空(达到基准情况),这时不需要进一步分解,直接返回。当递归返回时,子数组已经有序,然后调用merge函数,将两个有序的子数组合并成一个有序的数组。从栈的角度分析,不断的入栈,规模不断减小,等待基准条件满足再回归(出栈),最高回归出结果。这是递归函数调用自身的地方,将问题分解成一个或多个子问题,然后递归地解决这些子问题。在归并排序中,数组arr[1…
2024-07-02 22:07:47
1008
原创 1_插入排序_循环不变式
通过内部的while循环,算法会找到适当的位置插入arr[i], 并保持已经排序部分的顺序不变,因此,在这次迭代结束后,子数组arr[0, …此时,循环不变式结合终止条件表明整个数组是已排序的,从而证明算法的正确性。那么然后在这次迭代中,算法会将arr[i]插入到已排序的子数组arr[0, …通过证明循环不变式在每次迭代中都成立,我们可以证明算法在终止时得到正确的结果。证明当循环终止时,不变式结合循环终止条件能推出算法的正确性。在第一次迭代中,子数组arr[0]只包含一个元素,它显然是已排序的。
2024-07-01 21:47:23
426
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人