当前位置: 首页 > news >正文

基于RISC-V内核的嵌入式系统在机器人关节控制中的应用研究

摘要

随着机器人技术的飞速发展,关节控制作为机器人系统中的关键环节,对机器人的性能和稳定性起着至关重要的作用。传统的关节控制多采用基于ARM或DSP的嵌入式系统,但RISC-V架构的兴起为机器人关节控制提供了新的选择。本文结合多个基于RISC-V内核的芯片案例,详细探讨了基于RISC-V内核的嵌入式系统在机器人关节控制中的应用研究,分析了其优势、关键技术以及未来应用前景。

一、引言

机器人关节控制是机器人技术中的核心部分,它直接影响机器人的动作精度、稳定性和响应速度。传统的关节控制方案多采用基于ARM或DSP的嵌入式系统,这些方案在一定程度上满足了机器人控制的需求。然而,随着机器人应用场景的日益复杂和对性能要求的不断提高,传统架构的局限性逐渐显现。RISC-V作为一种新兴的开源指令集架构,以其开放性、灵活性和高性能逐渐受到关注,并在机器人关节控制领域展现出巨大的应用潜力。

(一)机器人关节控制的重要性

机器人关节控制是实现机器人精确运动的基础。无论是工业机器人、服务机器人还是特种机器人,关节控制的精度和稳定性直接影响机器人的整体性能。例如,在汽车制造中,工业机器人需要精确控制关节的位置和力矩,以确保焊接和装配的精度;在医疗机器人中,关节控制的精度直接影响手术的准确性和安全性;在服务机器人中,关节控制的稳定性决定了机器人在复杂环境中的适应性和可靠性。

(二)传统架构的局限性

传统的关节控制方案多采用基于ARM或DSP的嵌入式系统。这些方案在性能和功耗方面取得了一定的平衡,但在面对复杂的应用场景时,逐渐暴露出以下局限性:

封闭性:ARM架构的指令集和内核设计通常受到专利保护,开发者无法根据具体需求进行定制和扩展,限制了系统的灵活性。

功耗与性能的平衡:虽然ARM架构在低功耗方面表现出色,但在高性能计算场景下,功耗往往会显著增加,难以满足长时间运行的需求。

实时性:传统嵌入式系统在处理复杂控制算法时,可能会出现响应延迟的问题,难以满足多关节协同运动的实时性要求。

成本:专利费用和授权成本增加了开发和部署的经济负担,尤其是在大规模应用中。

(三)RISC-V架构的机遇

RISC-V作为一种新兴的开源指令集架构,以其开放性、灵活性和高性能逐渐受到关注。其主要特点包括:

开源性:RISC-V指令集完全开源,允许开发者根据具体需求进行定制和扩展,提供了高度的灵活性。

模块化设计:支持通过添加不同的扩展指令集来满足特定的应用需求,例如浮点运算、向量运算等。

低功耗与高性能:简洁的指令集设计使得基于RISC-V的嵌入式系统具有较低的功耗,同时提供较高的性能。

生态系统的发展:随着RISC-V基金会的推动和全球开发者社区的贡献,RISC-V的生态系统正在迅速完善,为机器人关节控制提供了丰富的开发工具和资源。

二、RISC-V内核的特性与优势

(一)开放性与灵活性

RISC-V指令集的开源性为开发者提供了前所未有的自由度。开发者可以根据具体的应用需求对指令集进行定制和扩展,从而实现高度优化的系统设计。这种开放性在机器人关节控制中尤为重要,因为不同类型的机器人(如工业机器人、服务机器人、医疗机器人)对控制算法和实时性的要求各不相同。

案例分析:德国Trinamic的Rocinate系列微控制器 德国电机精密控制厂家Trinamic利用RISC-V的开放性,开发了Rocinate系列微控制器。该系列微控制器采用32位RISC-V软核,结合Trinamic专有的电机驱动控制软核,实现了高度集成化的电机控制解决方案。Rocinate系列不仅支持伺服电机、步进电机、无刷直流电机等多种电机类型,还集成了电流检测和保护功能,能够直接驱动控制各种电机,实现精密伺服控制。例如,在工业机器人中,Rocinate系列微控制器能够精确控制关节的力矩和位置,确保焊接和装配的高精度;在服务机器人中,该微控制器能够实现平稳的关节运动,提高机器人的稳定性和适应性。

技术细节补充:

软核设计:RISC-V软核允许开发者在FPGA或其他可编程逻辑设备上实现定制化的处理器,进一步优化系统的性能和功耗。

模块化扩展:Trinamic通过添加自定义指令集,优化了电机控制算法的执行效率,例如实现了高效的电流检测和保护机制。

(二)低功耗与高性能

RISC-V架构的简洁性和精简指令集设计使其在低功耗和高性能之间取得了良好的平衡。对于机器人关节控制这种对实时性和能效要求较高的应用场景,这一特性尤为重要。

案例分析:阿里达摩院的玄铁C930处理器 阿里达摩院发布的玄铁C930处理器是RISC-V架构在高性能计算领域的代表作。该处理器通过512位矢量引擎和8TOPS矩阵引擎,首次在RISC-V架构上实现了通用算力与AI算力的融合。在机器人关节控制中,玄铁C930能够快速执行复杂的控制算法,例如PID控制、自适应控制和模糊控制等,确保系统的实时响应和高精度控制。

技术细节补充:

矢量引擎:512位矢量引擎能够高效处理浮点运算和矩阵运算,显著提高了控制算法的执行效率。

AI算力:8TOPS矩阵引擎支持AI算法的实时执行,例如在视觉伺服控制中,能够快速处理图像数据并生成控制指令。

能效比:玄铁C930在高性能计算的同时保持了较低的功耗,适用于长时间运行的机器人应用。

(三)模块化与可扩展性

RISC-V的模块化设计允许开发者通过添加不同的扩展指令集来满足特定的应用需求。这种灵活性使得RISC-V在机器人关节控制中能够适应各种复杂的控制算法和实时性要求。

案例分析:国科安芯的AS32A601系列MCU 国科安芯的AS32A601通过其丰富的外设接口和模块化设计,能够适应多种机器人关节控制需求。例如,其6路SPI接口支持高达30MHz的通信速率,能够快速传输关节控制数据;4路CAN接口支持CANFD协议,适用于工业机器人中的多关节协同控制。此外,AS32A601的以太网MAC模块支持10/100M模式,能够实现机器人与上位机的高效通信。

技术细节补充:

内核:自研E7内核,带有硬件FPU和L1 Cache,支持零等待访问嵌入式Flash和外部内存,最高频率180MHz。

存储系统:512KiB内部SRAM(带ECC)、16KiB ICache和16KiB DCache(带ECC)、512KiB D-Flash(带ECC)、2MiB P-Flash(带ECC)。

电源管理:支持RUN、SRUN、SLEEP、DEEPSLEEP四种电源管理模式,低电压检测和复位功能(LVD/LVR),高电压检测功能(HVD)。

三、机器人关节控制的需求与挑战

(一)高精度控制

机器人关节控制需要精确的力矩和位置控制,以确保机器人的动作精度。传统的控制方案在精度上可能难以满足一些高精度应用场景的需求。

案例分析:工业机器人中的高精度控制 在汽车制造领域,工业机器人需要精确控制关节的位置和力矩,以确保焊接、装配等操作的精度。传统的控制方案通常采用高精度的伺服电机和复杂的控制算法,但这些方案往往成本较高且实时性较差。基于RISC-V的嵌入式系统通过内置的硬件FPU(浮点运算单元)和ECC(错误校正码)保护机制,能够实现高精度的力矩和位置控制,显著提高系统的性能和可靠性。

技术细节补充:

硬件FPU:内置的硬件FPU能够高效执行浮点运算,确保控制算法的精度。

ECC保护:错误校正码机制确保数据的可靠性,防止因数据错误导致的控制失误。

自适应控制:通过实时调整控制参数,RISC-V系统能够适应不同的负载和环境条件,进一步提高控制精度。

(二)实时性

关节控制需要快速响应,以确保机器人动作的流畅性。特别是在多关节协同运动的情况下,实时性要求更高。传统的嵌入式系统在处理复杂控制算法时,可能会出现响应延迟的问题。

案例分析:人形机器人中的实时控制 人形机器人需要在多关节协同运动中保持动作的流畅性和稳定性,这对实时性提出了极高的要求。例如,波士顿动力的Atlas机器人需要实时处理多个关节的控制任务,以实现复杂的动作,如跳跃和翻滚。基于RISC-V的嵌入式系统通过多级流水线和动态分支预测,能够快速处理控制算法,确保系统的实时响应。

技术细节补充:

多级流水线:RISC-V内核支持多级流水线设计,能够高效执行指令,减少处理延迟。

动态分支预测:通过预测程序分支,减少因分支误预测导致的延迟,提高系统的实时性。

中断处理:高效的中断处理机制确保系统能够快速响应外部事件,例如紧急停止信号。

(三)可靠性

机器人通常在复杂和恶劣的环境下工作,因此关节控制系统需要具备高可靠性。系统需要能够抵抗各种干扰,并在出现故障时及时进行处理和恢复。

案例分析:户外机器人中的可靠性 在户外环境中,机器人需要面对复杂的地形和恶劣的天气条件,这对关节控制系统的可靠性提出了极高的要求。例如,Clearpath Robotics的Husky UGV机器人需要在户外环境中长时间稳定运行,其关节控制系统需要具备高可靠性和抗干扰能力。基于RISC-V的嵌入式系统通过端到端ECC保护和故障检测机制,能够有效提高系统的可靠性。

技术细节补充:

ECC保护:端到端的错误校正码机制确保数据传输和存储的可靠性。

故障检测与恢复:内置的故障检测机制能够及时发现系统异常,并通过冗余设计和备份机制实现快速恢复。

抗干扰设计:通过硬件级的抗干扰措施,例如屏蔽和滤波,提高系统在复杂环境中的稳定性。

(四)低功耗

机器人通常需要长时间运行,因此对功耗要求较高。传统的控制方案在功耗方面可能难以满足长时间运行的需求。

案例分析:无人机中的低功耗控制 无人机需要在有限的电池容量下长时间飞行,这对关节控制系统的功耗提出了极高的要求。例如,DJI的Mavic系列无人机需要在飞行过程中实时控制多个关节,以保持飞行的稳定性。基于RISC-V的嵌入式系统通过多种电源管理模式,能够动态调整功耗,显著延长无人机的续航时间。

技术细节补充:

电源管理模式:支持多种电源管理模式,例如睡眠模式、低功耗模式和高性能模式,根据实际需求动态调整功耗。

动态电压频率调节:通过调整电压和频率,优化系统的能效比,延长电池寿命。

低功耗设计:采用低功耗的硬件设计,例如低功耗的ADC(模数转换器)和通信模块,进一步降低系统功耗。

四、基于RISC-V的嵌入式系统在关节控制中的应用

(一)系统架构设计

基于RISC-V的嵌入式系统在关节控制中的应用,通常采用分层设计,包括感知层、控制层和执行层。这种分层设计不仅提高了系统的模块化和可维护性,还降低了系统的复杂度和成本。

感知层 感知层负责采集关节的位置、速度和力矩数据。常用的传感器包括编码器、电流传感器和力矩传感器。例如,先楫半导体的HPM5000系列MCU具有480MHz主频、16位高精度ADC和丰富的CAN、UART接口,非常适合作为分布式的传感器处理MCU。

控制层 控制层负责执行控制算法,例如PID控制、自适应控制和模糊控制。RISC-V内核通过内置的硬件FPU和多级流水线设计,能够高效执行这些算法,确保系统的实时性和精度。

执行层 执行层负责驱动关节电机,通常通过SPI或CAN接口与电机驱动器通信。例如,Trinamic的Rocinate系列微控制器通过RISC-V内核控制多种电机类型,实现精确的关节驱动。

案例分析:人形机器人中的分层设计 在人形机器人中,分层设计的嵌入式系统能够有效提高系统的模块化和可维护性。感知层使用RISC-V芯片的ADC模块采集关节的位置和力矩数据,控制层使用RISC-V内核执行PID控制算法或其他高级控制算法,执行层通过SPI或CAN接口与电机驱动器通信,实现关节的精确驱动。例如,波士顿动力的Atlas机器人通过这种分层设计,实现了复杂的动作控制,如跳跃和翻滚。

技术细节补充:

分布式控制:通过分布式架构,每个关节可以独立控制,提高系统的扩展性和灵活性。

冗余设计:关键关节的控制模块采用冗余设计,确保在单点故障时系统的可靠性。

模块化硬件:硬件模块化设计使得系统易于维护和升级,降低了开发和部署的成本。

(二)关键技术分析

实时性 RISC-V内核支持多级流水线和动态分支预测,能够快速处理控制算法,确保实时响应。例如,先楫半导体的HPM6E00系列MCU集成了USB、CANFD、EtherCAT、千兆以太网控制器和TSN交换机,能够满足人形机器人的各种通信需求。其中,EtherCAT的延迟可小至us级,抖动达ns级,可作为各个关节之间、灵巧手之间的通信网络;TSN(时间敏感网络)作为下一代高实时性网络通讯技术,可以兼顾数据传输的高带宽和确定性及可靠性,有望在未来机器人中获得广泛应用。

高精度控制 通过内置的硬件FPU和ECC保护机制,确保计算精度和数据可靠性。例如,先楫半导体的HPM5000系列MCU具有480MHz主频、16位高精度ADC、丰富的CAN、UART接口,非常适合作为分布式的传感器处理MCU。

低功耗 支持多种电源管理模式,能够根据实际需求动态调整功耗。例如,北京君正的ES32VF芯片是基于RISC-V架构的物联网微处理器,具有低功耗设计,适用于低功耗应用场景,如智能家居和智能农业。

安全性 通过端到端ECC保护和故障检测机制,确保系统在复杂环境下的可靠性。例如,在工业机器人中,基于RISC-V的嵌入式系统能够有效抵抗电磁干扰,并在出现故障时及时进行处理和恢复。

案例分析:工业机器人中的安全性设计 在工业机器人中,安全性是至关重要的。基于RISC-V的嵌入式系统通过端到端ECC保护和故障检测机制,确保系统在复杂环境下的可靠性。例如,发那科(FANUC)的CR-35iA协作机器人采用了RISC-V内核的嵌入式系统,通过实时监测关节的力矩和位置,确保在与人类协作时的安全性。当检测到异常力矩时,系统能够立即停止关节运动,防止事故发生。

技术细节补充:

安全认证:RISC-V系统支持多种安全认证标准,例如IEC 61508和ISO 13849,确保系统符合工业安全要求。

冗余设计:关键控制模块采用冗余设计,确保在单点故障时系统的可靠性。

实时监控:通过实时监控关节的状态,系统能够及时发现异常并采取措施,例如紧急停止或故障恢复。

(三)具体实现方案

感知层 使用RISC-V芯片的ADC模块采集关节的位置和力矩数据。例如,先楫半导体的HPM5000系列MCU具有480MHz主频、16位高精度ADC、丰富的CAN、UART接口,非常适合作为分布式的传感器处理MCU。

控制层 使用RISC-V内核执行PID控制算法或其他高级控制算法。例如,玄铁C930处理器通过512位矢量引擎和8TOPS矩阵引擎,能够高效执行复杂的控制算法,确保系统的实时性和精度。

执行层 通过SPI或CAN接口与电机驱动器通信,实现关节的精确驱动。例如,Trinamic的Rocinate系列微控制器通过RISC-V内核控制多种电机类型,实现精确的关节驱动。

案例分析:医疗机器人中的精确控制 在医疗机器人中,关节控制的精度直接影响手术的准确性和安全性。例如,Intuitive Surgical的达芬奇手术机器人需要精确控制多个关节,以实现微创手术中的高精度操作。基于RISC-V的嵌入式系统通过高精度的力矩和位置控制,确保手术器械的稳定性和精确性。RISC-V内核的实时性和低延迟特性使得系统能够快速响应医生的操作指令,提高手术的成功率。

技术细节补充:

高精度传感器:使用高分辨率的编码器和力矩传感器,确保关节状态的精确测量。

实时反馈:通过实时反馈控制,系统能够动态调整关节的位置和力矩,确保操作的精确性。

安全机制:内置的安全机制确保在异常情况下,系统能够立即停止操作,防止对患者造成伤害。

五、未来研究方向与应用前景

(一)未来研究方向

智能控制算法 结合AI技术,开发自适应控制算法,提高系统的智能化水平。例如,通过机器学习算法优化控制参数,实现对不同负载和环境条件的自适应控制。

多模态感知 集成视觉、触觉等多种感知技术,实现更复杂的关节控制。例如,在服务机器人中,通过视觉伺服控制和触觉反馈,实现对物体的精确抓取和操作。

分布式控制 通过分布式架构,实现多关节的协同控制,提高系统的扩展性和灵活性。例如,在人形机器人中,通过分布式控制架构,实现多个关节的同步运动,提高动作的流畅性和稳定性。

安全与可靠性 进一步增强系统的安全性和可靠性,满足工业和医疗等高要求领域的应用需求。例如,通过冗余设计和故障检测机制,确保系统在复杂环境中的稳定运行。

(二)应用前景

工业机器人 在汽车制造、电子生产等领域,RISC-V嵌入式系统将显著提高机器人的精度和效率。例如,通过高精度的关节控制,工业机器人能够实现更复杂的装配和焊接任务,提高生产效率和产品质量。

服务机器人 在智能家居、医疗护理等领域,RISC-V嵌入式系统将提高机器人的可靠性和适应性。例如,在家庭服务机器人中,通过低功耗设计和高精度控制,机器人能够实现长时间运行和精确的操作,如清洁、搬运和护理等任务。

特种机器人 在军事、救援等领域,RISC-V嵌入式系统将提高机器人的抗干扰能力和环境适应性。例如,在军事机器人中,通过高可靠性和低功耗设计,机器人能够在复杂和恶劣的环境中执行侦察、排雷等任务。

医疗机器人 在微创手术、康复训练等领域,RISC-V嵌入式系统将提高机器人的精确性和安全性。例如,通过高精度的关节控制和实时反馈,手术机器人能够实现更复杂的微创手术操作,提高手术的成功率和患者的康复速度。

六、结论

基于RISC-V内核的嵌入式系统在机器人关节控制中具有显著优势,其开放性、灵活性和高性能使其成为未来机器人技术的重要发展方向。通过多个实际案例的分析,本文详细探讨了RISC-V架构在机器人关节控制中的应用,包括系统架构设计、关键技术分析和具体实现方案。随着RISC-V生态系统的不断完善,其在机器人领域的应用前景将更加广阔。

未来的研究可以进一步优化控制算法,提高系统的智能化水平,并探索更多应用场景。例如,结合AI技术和多模态感知,开发自适应控制算法,实现更复杂的关节控制;通过分布式控制架构,提高系统的扩展性和灵活性;进一步增强系统的安全性和可靠性,满足工业和医疗等高要求领域的应用需求。随着RISC-V技术的不断发展和生态系统的完善,其在机器人关节控制中的应用将为机器人技术的创新和发展提供强大的支持。

相关文章:

基于RISC-V内核的嵌入式系统在机器人关节控制中的应用研究

摘要 随着机器人技术的飞速发展,关节控制作为机器人系统中的关键环节,对机器人的性能和稳定性起着至关重要的作用。传统的关节控制多采用基于ARM或DSP的嵌入式系统,但RISC-V架构的兴起为机器人关节控制提供了新的选择。本文结合多个基于RISC…...

斯库拉集团介绍

斯库拉集团有限公司坐落于世界自由贸易圣地,国际金融服务中心英属维京群岛BVI. 旗下有香港斯库拉集团(香港主板 上市公司),斯库拉环球国际控股集团 (香港主板上市企业),斯库拉国际贸易 有限公司(斯库拉集团有限公司),新加坡斯库拉集团有限公司,德国斯库拉集团有限公司,新西…...

运用instanceof判断Animal a是否为Dog类和是否为cat类

//Animal类(狗和猫的父类) public class Animal {private String color;private int age;public Animal(String color, int age) {this.color color;this.age age;}public Animal() {}public String getColor() {return color;}public void setColor…...

蓝桥杯嵌入式考前模块总结

一.RTC 使用RTC直接再cubeMX中配置启动时钟和日历 如第六届省赛 想要让RTC的秒每隔一秒递增1需要在时钟树界面观察RTC的主频 由于RTC时钟主频为32KHZ将异步预分频计数器的值设为31,将同步预分频计数器的值设为999这样就可以将RTC的时钟信号分频为1HZ达到1秒自增的…...

《汽车电器与电子技术》实验报告

SRS系统结构原理与故障检测诊断 车辆上为什么要配安全气囊?——解析汽车被动安全的关键防线 一、安全气囊的核心作用:应对高速碰撞的“救命缓冲垫” 车辆在高速碰撞时(如正面碰撞、侧面碰撞),人体会因惯性以极高速度…...

小刚说C语言刷题——第22讲 二维数组

昨天我们讲了一维数组,今天我们来讲二维数组。 1.定义 二维数组是指在数组名后跟两个方括号的数组。 2.语法格式 数据类型 数组名[下标][下标] 例如:int a[5][9];//表示5行9列的数组 3.访问二维数组元素 格式:数组名[行坐标][列坐标]…...

04--网络属性设置与多路复用

一、TCP可靠性分析 二、 scoket 属性设置 1、socket 属性设置表 NAMEgetsockopt, setsockopt - get and set options on sockets获取 和 设置 套接字属性 SYNOPSIS#include <sys/types.h> /* See NOTES */#include <sys/socket.h>int getsockopt(int so…...

AI大模型从0到1记录学习 day17

第 2 章 数据结构与算法基础 2.1 数据结构基础 2.1.1 什么是数据结构 数据结构是为了高效访问数据而设计出的一种数据的组织和存储方式。更具体的说&#xff0c;一个数据结构包含一个数据元素的集合、数据元素之间的关系以及访问和操作数据的方法。 像前面我们接触到的list、se…...

scanf函数功能与使用详解

【DeepSeek提问】 解释一下下面这段话&#xff1a; 函数scanf()是从标准输入流 stdin (标准输入设备&#xff0c; 一般指键盘)中读内容的通用子程序&#xff0c;可以按说明的格式读入多个字符&#xff0c;并保存在对应地址的变量中。 scanf函数返回成功读入的数据项数&#xf…...

使用Python从零开始构建端到端文本到图像 Transformer大模型

简介&#xff1a;通过特征向量从文本生成图像 回顾&#xff1a;多模态 Transformer 在使用Python从零实现一个端到端多模态 Transformer大模型中&#xff0c;我们调整了字符级 Transformer 以处理图像&#xff08;通过 ResNet 特征&#xff09;和文本提示&#xff0c;用于视觉…...

NDT和ICP构建点云地图 |【点云建图、Ubuntu、ROS】

### 本博客记录学习NDT&#xff0c;ICP构建点云地图的实验过程&#xff0c;参考的以下两篇博客&#xff1a; 无人驾驶汽车系统入门&#xff08;十三&#xff09;——正态分布变换&#xff08;NDT&#xff09;配准与无人车定位_settransformationepsilon-CSDN博客 PCL中点云配…...

第 1 篇✅ 用 AI 编程之前,你得先搞清楚你和 AI 是啥关系

程序员不是被替代的,是要学会主导 AI 的人 🧠 那些把 AI 当兄弟的程序员,后来都踩了坑 最近的一次线下开发者聚会,我们聊到“AI 编程”,现场笑声不断,也点醒了不少人。 有个朋友说: “我让 AI 写一个 Web 服务,它写得飞快,我一激动就上线了,结果上线后一堆坑,日志…...

Android Jetpack Compose 高级开发核心技术

Android Compose 高级技术总结 1. 性能优化 1.1 状态管理优化 状态提升原则&#xff1a;将状态提升到共享的最近共同父组件derivedStateOf&#xff1a;当需要基于多个状态计算派生状态时使用 val scrollState rememberScrollState() val showButton by remember {derivedS…...

Go小技巧易错点100例(二十五)

本期分享&#xff1a; 1. 使用atomic包实现无锁并发控制 2. Gin框架的中间件机制 3. 搞懂nil切片和空切片 使用atomic包实现无锁并发控制 sync/atomic包提供了原子操作&#xff0c;用于在多goroutine环境下安全地操作共享变量&#xff0c;避免使用锁带来的性能开销。 代码…...

如何用海伦公式快速判断点在直线的哪一侧

一、海伦公式的定义与推导 1. 海伦公式的定义 海伦公式&#xff08;Heron’s Formula&#xff09;是用于计算三角形面积的一种方法&#xff0c;适用于已知三角形三边长度的情况。公式如下&#xff1a; S s ( s − a ) ( s − b ) ( s − c ) S \sqrt{s(s - a)(s - b)(s - c…...

【异常处理】Clion IDE中cmake时头文件找不到 头文件飘红

如图所示是我的clion项目目录 我自定义的data_structure.h和func_declaration.h在unit_test.c中无法检索到 cmakelists.txt配置文件如下所示&#xff1a; cmake_minimum_required(VERSION 3.30) project(noc C) #设置头文件的目录 include_directories(${CMAKE_SOURCE_DIR}/…...

自动驾驶技术关键技术梳理

一、硬件 1、 传感器系统设计主要注意以下几个问题&#xff1a; 1.时间同步 一般包括多传感器之间时钟同源、帧同步触发的问题。首先要解决时钟同源问题&#xff0c;然后为了帧同步触发&#xff0c;可以让所有传感器整秒触发。常用GPS&#xff08;最多分2路&#xff09;给激光雷…...

MySQL索引介绍

索引的定义 扇区&#xff1a;磁盘存储的最小单位&#xff0c;扇区一般大小为512Byte。磁盘块&#xff1a;文件系统与磁盘交互的的最小单位&#xff08;计算机系统读写磁盘的最小单位&#xff09;&#xff0c;一个磁盘块由连续几个&#xff08;2^n&#xff09;扇区组成&#xf…...

2025认证杯一阶段各题需要使用的模型或算法(冲刺阶段)

A题&#xff08;小行星轨迹预测&#xff09; 问题一&#xff1a;三角测量法、最小二乘法、空间几何算法、最优化方法 问题二&#xff1a;Gauss/Laplace轨道确定方法、差分校正法、数值积分算法&#xff08;如Runge-Kutta法&#xff09;、卡尔曼滤波器 B题&#xff08;谣言在…...

每天学一个 Linux 命令(13):touch

Linux 文件管理命令:touch touch 是 Linux 中一个简单但高频使用的命令,主要用于创建空文件或修改文件的时间戳(访问时间、修改时间)。它是文件管理和脚本操作的实用工具。 1. 命令作用 创建空文件:快速生成一个或多个空白文件。更新时间戳:修改文件的访问时间(Access …...

Flutter常用组件实践

Flutter常用组件实践 1、MaterialApp 和 Center(组件居中)2、Scaffold3、Container(容器)4、BoxDecoration(装饰器)5、Column(纵向布局)及Icon(图标)6、Column/Row(横向/横向布局)+CloseButton/BackButton/IconButton(简单按钮)7、Expanded和Flexible8、Stack和Po…...

Python 实现最小插件框架

文章目录 Python 实现最小插件框架1. 基础实现项目结构plugin_base.py - 插件基类plugins/hello.py - 示例插件1plugins/goodbye.py - 示例插件2main.py - 主程序 2. 更高级的特性扩展2.1 插件配置支持2.2 插件依赖管理2.3 插件热加载 3. 使用 setuptools 的入口点发现插件3.1 …...

AUTOSAR_SWS_MemoryDriver图解

AUTOSAR 存储驱动程序&#xff08;Memory Driver&#xff09;详解 AUTOSAR存储驱动规范 - 技术解析与架构详解 目录 1. 概述2. Memory Driver架构设计 2.1 整体架构 3. Memory Driver核心组件4. 作业管理5. Memory Driver错误处理6. 时序流程7. 配置与设置8. 总结 1. 概述 A…...

AI结合VBA提升EXCEL办公效率尝试

文章目录 前言一、开始VBA编程二、主要代码三、添加到所有EXCEL四、运行效果五、AI扩展 前言 EXCEL右击菜单添加一个选项&#xff0c;点击执行自己逻辑的功能。 然后让DeepSeek帮我把我的想法生成VBA代码 一、开始VBA编程 我的excel主菜单没有’开发工具‘ 选项&#xff0c;…...

Python中NumPy的索引和切片

在数据科学和科学计算领域&#xff0c;NumPy是一个功能强大且广泛使用的Python库。它提供了高效的多维数组对象以及丰富的数组操作函数&#xff0c;其中索引和切片是NumPy的核心功能之一。通过灵活运用索引和切片操作&#xff0c;我们可以轻松访问和操作数组中的元素&#xff0…...

普通通话CSFB方式(2g/3g)

一、CSFB的触发条件 当模块&#xff08;或手机&#xff09;驻留在 4G LTE网络 时&#xff0c;若发生以下事件&#xff0c;会触发CSFB流程&#xff1a; 主叫场景&#xff1a;用户主动拨打电话。被叫场景&#xff1a;接收到来电&#xff08;MT Call&#xff09;。紧急呼叫&…...

daily routines 日常生活

总结 🛏 起床相关(Waking Up) 动作常用表达示例句子醒来wake upI usually wake up around 6:30.起床(离床)get up / get out of bedI got out of bed at 6:45.赖床stay in bed / lay thereI stayed in bed for another 10 minutes.关闭闹钟turn off the alarm / hit snoo…...

系分论文《论面向服务开发方法在设备租赁行业的应用》

系统分析师论文系列 【摘要】 2022年5月&#xff0c;我司承接某工程机械租赁企业"智能租赁运营管理平台"建设项目&#xff0c;我作为系统分析师主导系统架构设计。该项目需整合8大类2000余台设备资产&#xff0c;覆盖全国15个区域运营中心与300家代理商&#xff0c;实…...

深度解析python生成器和关键字yield

一、生成器概述 生成器&#xff08;Generator&#xff09;是Python中用于创建迭代器的工具&#xff0c;通过yield关键字实现。与普通函数不同&#xff0c;生成器函数返回的是迭代器对象&#xff0c;具有以下核心特性&#xff1a; 内存效率&#xff1a;只在需要时生成值&#x…...

蓝桥杯大模板

init.c void System_Init() {P0 0x00; //关闭蜂鸣器和继电器P2 P2 & 0x1f | 0xa0;P2 & 0x1f;P0 0x00; //关闭LEDP2 P2 & 0x1f | 0x80;P2 & 0x1f; } led.c #include <LED.H>idata unsigned char temp_1 0x00; idata unsigned char temp_old…...

Python装饰器的基本使用详解

各类资料学习下载合集 ​​https://pan.quark.cn/s/8c91ccb5a474​​ 装饰器是Python中的一个强大且灵活的特性&#xff0c;它允许我们在不修改函数代码的情况下为其添加额外功能。装饰器广泛应用于日志记录、性能测试、权限验证等场景。本文将详细介绍装饰器的基本使用&…...

5Why分析法

1. 基本概念 5Why分析法是一种通过连续追问"为什么"来探究问题根本原因的思考工具&#xff0c;由丰田生产方式创始人丰田喜一郎提出。其核心思想是&#xff1a;通过至少5次连续的"为什么"追问&#xff0c;穿透表面现象&#xff0c;直达问题本质。 2. 实施…...

AI Agent入门指南

图片来源网络 ‌一、开箱暴击&#xff1a;你以为的"智障音箱"&#xff0c;其实是赛博世界的007‌ ‌1.1 从人工智障到智能叛逃&#xff1a;Agent进化史堪比《甄嬛传》‌ ‌青铜时代&#xff08;2006-2015&#xff09;‌ “小娜同学&#xff0c;关灯” “抱歉&…...

华为机试—最大最小路

题目 对于给定的无向无根树&#xff0c;第 i 个节点上有一个权值 wi​ 。我们定义一条简单路径是好的&#xff0c;当且仅当&#xff1a;路径上的点的点权最小值小于等于 a &#xff0c;路径上的点的点权最大值大于等于 b 。 保证给定的 a<b&#xff0c;你需要计算有多少条简…...

java之多线程

目录 创建多线程的三种创建方式 常用的成员方法 守护线程 多线程的声明周期 ​编辑 同步代码块​编辑 同步方法 死锁 等待唤醒机制&#xff08;线程协调&#xff09; 线程池 创建多线程的三种创建方式 继承 Thread 类 通过继承 Thread 类并重写 run() 方法创建线程。 …...

php伪协议

PHP 伪协议&#xff08;PHP Stream Wrapper&#xff09; PHP 的伪协议&#xff08;Protocol Wrapper&#xff09;是一种机制&#xff0c;允许开发者通过统一的文件访问函数&#xff08;如 file_get_contents、fopen、include 等&#xff09;访问不同类型的数据源&#xff0c;包…...

六、测试分类

设计测试用例 万能公式&#xff1a;功能测试性能测试界面测试兼容性测试安全性测试易用性测试 弱网测试&#xff1a;fiddler上行速率和下行速率 安装卸载测试 在工作中&#xff1a; 1.基于需求文档来设计测试用例&#xff08;粗粒度&#xff09; 输入字段长度为6~15位 功…...

【AM2634】启动和调试

目录 【AM2634】启动和调试1. 上电流程1.1 BootFlow and Bootloader1.2 Rom Code1.2.1 功能介绍1.2.2 模式选择1.2.2.1 QSPI Boot1.2.2.2 UART Boot1.2.2.3 Dev Boot 1.3 SBL1.3.1 文件构成1.3.2 文件构建1.3.3 appimage解析和core启动流程 1.4 Appimage1.4.1 RPRC文件构成1.4.…...

鲁大师绿色版,纯净无广告

鲁大师是我们常用的硬件跑分软件,可以非常准确的识别电脑硬件,对电脑性能进行评估 但他的流氓行为:广告弹窗,捆绑下载其他软件,疯狂的吃硬件性能,无法卸载等因素&#xff0c;又使我们大家既享用又不敢用 我为大家整理了一款纯净的绿色版鲁大师 主要实现了以下功能: 01屏蔽了…...

Python数组(array)学习之旅:数据结构的奇妙冒险

Python数组学习之旅:数据结构的奇妙冒险 第一天:初识数组的惊喜 阳光透过窗帘缝隙洒进李明的房间,照亮了他桌上摊开的笔记本和笔记本电脑。作为一名刚刚转行的金融分析师,李明已经坚持学习Python编程一个月了。他的眼睛因为昨晚熬夜编程而微微发红,但脸上却挂着期待的微…...

spring cloud微服务API网关详解及各种解决方案详解

微服务API网关详解 1. 核心概念 定义&#xff1a;API网关作为微服务的统一入口&#xff0c;负责请求路由、认证、限流、监控等功能&#xff0c;简化客户端与后端服务的交互。核心功能&#xff1a; 路由与转发&#xff1a;将请求分发到对应服务。协议转换&#xff1a;HTTP/HTTP…...

工程师 - 场效应管分类

What Are the Different Types of FETs? Pulse Octopart Staff Jul 31, 2021 Field effect transistors (FETs) are today’s workhorses for digital logic, but they enjoy plenty of applications outside of digital integrated circuits, everything from motor driver…...

asm汇编源代码之按键处理相关函数

提供5个子程序: 1. 发送按键 sendkey 2. 检测是否有按键 testkey 3. 读取按键 getkey 4. 判断键盘缓冲区是否为空 bufempty 5. 判断键盘缓冲区是否已满 buffull 具体功能及参数描述如下 sendkey proc  far ; axcharcode testkey proc  far ; out: ;   zf1 buff empt…...

程序化广告行业(78/89):多因素交织下的行业剖析与展望

程序化广告行业&#xff08;78/89&#xff09;&#xff1a;多因素交织下的行业剖析与展望 在程序化广告这片充满活力又不断变化的领域&#xff0c;持续学习和知识共享是我们紧跟潮流、实现突破的关键。一直以来&#xff0c;我都渴望能与大家一同探索这个行业的奥秘&#xff0c…...

如何使用MaxScript+dotNet在UI中显示图像?

在MaxScript中,你可以使用dotNetControl来显示图像。以下是一个简单的示例脚本,它创建一个UI窗口并在其中显示logo.jpg图像: rollout logoRollout "Logo Display" width:300 height:300 (dotNetControl logoPicture "System.Windows.Forms.PictureBox"…...

BitMap和RoaringBitmap:极致高效的大数据结构

目录 1、引言 2、BitMap:基础 2.1、核心原理 2.2、BitMap的优势 2.3、BitMap的局限性 3、RoaringBitmap:进化 3.1、分段策略 3.2、三种容器类型 3.2.1. ArrayContainer(数组容器) 3.2.2. BitMapContainer(位图容器) 3.2.3. RunContainer(行程容器) 3.3、行…...

Java高性能并发利器-VarHandle

1. 什么是 VarHandle&#xff1f;​​ VarHandle 是 Java 9 引入的类&#xff0c;用于对变量&#xff08;对象字段、数组元素、静态变量等&#xff09;进行低级别、高性能的原子操作&#xff08;如 CAS、原子读写&#xff09;。它是 java.util.concurrent.atomic 和 sun.misc.…...

关于读完《毛泽东选集》的一些思考迭代

看完毛选前四卷&#xff0c;从革命初期一直讲到抗战胜利&#xff0c;共75.8W字&#xff0c;花费67个小时读完。从1925年发表的“中国社会各阶级的分析”&#xff0c;跨越100年&#xff0c;通过67个小时向主席学习到&#xff1a; 实事求是 从实践中来再到实践中去 用辩证与发展…...

机器学习 第一章

&#x1f9e0; 机器学习 第一章 一、什么是机器学习 (Machine Learning) 让计算机自己从数据中学习出规律&#xff0c;无需人手写规则 输入: 特征 x输出: 标签 y学习目标: 学习出 f(x) 等价于 y 二、三大类型任务 类型英文特点示例回归Regression输出是连续值房价预测分类Cla…...

LVS+Keepalived+DNS 高可用项目

项目架构 主机规划 主机IP角色软件lb-master172.25.250.105主备负载均衡器ipvsadm&#xff0c;keepalivedlb-backup172.25.250.106同时做web和dns调度ipvsadm&#xff0c;keepaliveddns-master172.25.250.107VIP&#xff1a;172.25.250.100binddns-slave172.25.250.108LVS DNS…...