基于Spark与ROS分布式无人驾驶模拟平台

作者:刘少山,PerceptIn联合创始人。加州大学欧文分校博士,研究方向包括智能感知计算、系统软件、体系结构与异构计算。现在主要专注于SLAM技术及其在智能硬件上的实现与优化。曾负责百度无人车系统架构与产品化。
本文为《程序员》原创文章,未经允许不得转载,更多精彩文章请订阅2016年《程序员》

本文是无人驾驶技术系列的第四篇,着重介绍基于Spark与ROS的分布式无人驾驶模拟平台。无人驾驶的安全性和可靠性是通过海量的功能和性能测试来保证的。无人驾驶系统是一个复杂的系统工程,在它的整个研发流程中,测试工作至关重要同时也繁重复杂。显然将全部测试工作都集中在真车上进行是一种成本异常高昂且安全系数非常低的方案。通过综合考虑测试中各种可能发生的正常或异常状况,软件模拟成为了面向无人驾驶系统的更安全且更经济有效的替代测试手段。

无人驾驶模拟技术

无人车驾驶系统由感知、预测、决策、控制等众多功能模块组成,每个模块都各自拥有复杂的结构和算法。绝大部分情况下,系统开发人员在测试过程中很难对海量的输出参数作评价。同时,开发人员不仅需要单独测试一个功能模块,也需要集合联调多个模块。因此,系统开发人员所需要的模拟器必须能够直观正确地反映出输出参数的意义,同时还要既能对各个模块进行单一的测试,又能将各个模块按照不同需求组合后进行集成测试。

模拟器技术主要有两种:第一种是基于合成数据对环境、感知以及车辆进行模拟,这种模拟器主要用于控制与规划算法的初步开发上;第二种是基于真实数据的回放以测试无人驾驶不同部件的功能及性能。在本文中,我们主要讨论基于数据回放的模拟器。

出于需尽量真实地模拟真车环境的需求,我们的模拟器采用了和真车相同的机器人操作系统ROS。ROS是一种基于消息传递通信的分布式计算框架。这种框架方便开发人员进行模块化编程,这一特性对于模拟器来说至关重要。在无人驾驶系统中,每一个功能模块在ROS中都部署在一个节点上,节点间的通信依靠事先定义好格式的message完成。在模拟器中开发人员只需要使用相同的通信格式,针对每个功能模块制作模拟模块,然后根据测试需求搭配真实功能模块和模拟模块。例如,如果想进行决策模块和控制模块的功能联调,我们需要将决策模块、控制模块搭配其他的模拟模块,安装到模拟器中进行测试。如果决策模块需要单独测试新的决策算法,我们可以只将新的决策模块搭配其他的模拟模块安装到模拟器上,这样的测试结果就是只针对决策模块的。

模拟器的组成元素

首先,无人驾驶汽车模拟器中包含了车的动态模型,用来加载测试无人车驾驶系统,并模拟无人驾驶汽车自身的行为。其次,需要模拟的是外部环境,包括静态和动态的场景。静态场景中包括各种静态的交通标志,例如停止线、交通指示牌等;动态场景主要指车周围的动态交通流模型,例如车辆、行人、交通灯等。所有这些元素构建了与现实环境相对应的模拟世界。

模拟器的应用

无人驾驶汽车真实上路后所要面临的外部环境是复杂多变的。模拟器在模拟测试中需要做的就是将复杂的外部环境拆解成最简单的元素,然后重新排列组合,生成各种测试用例。

图1 模拟器应用

图1 模拟器应用

拿一组简单的测试用例举例。图1是一个简单的直线行驶的车道,需要测试的是无人驾驶汽车对于一辆障碍车的反应。按照障碍车可能出现的起始位置划分,它可能出现于无人驾驶汽车的左前、左中、左后、前、后、右前、右中、右后总计八个位置。按照障碍车和无人驾驶汽车的相对速度,可分为比无人驾驶汽车快、和无人驾驶汽车速度相等以及比无人驾驶汽车慢三类。按照障碍车的行为划分则分为直行、向左变道和向右变道三种。将这些变量相乘,再去掉其中不需要的个例,就得到了一组我们需要的测试用例。

模拟器面临的问题

模拟器的核心问题在于“真”上,人工模拟的场景和真实场景多少会有差异,真实场景中仍然会存在许多令人想象不到的突发事件。因此,如果能采用真实的行车数据复现真实场景,就会得到比人工模拟的场景更好的测试效果。但采用真实数据复现的方案带来的问题就是海量数据的处理。如果我们想在模拟器上复现真实世界中每一段道路的场景,就需要让无人驾驶汽车去采集每一段道路的信息,这些海量的信息是单机无法处理的,而且在每个场景下拆解元素重新排列组合生成测试用例的做法会使计算量翻倍。因此,将模拟器搭载到分布式系统上就成为了无人驾驶模拟测试的最佳选择。

基于ROS的无人驾驶模拟器

ROS是一种基于消息传递通信的分布式计算框架。它的通信模式可以抽象为一种message pool架构,消息发送节点调用advertise方法向指定Topic发送ROS message,消息接收节点调用subscribe方法从指定Topic接收ROS message。

ROSBAG

Rosbag是利用这一架构从Topic中录制并且向Topic中重新播放ROS message的工具,无人驾驶汽车在数据采集过程中使用的正是Rosbag。它的功能主要分为Record和Play两类。Record功能是在ROS中建立一个record节点,调用subscribe方法向所有或指定Topic接收ROS message,然后将message写入Bag文件。Play功能则是在ROS中建立一个play节点,调用advertise方法将bag中message按照时间节点发送至指定Topic。图2展示了一个LiDAR数据在ROS中回放的实例,在这个场景中,LiDAR数据是以10Hz帧率记录的。

图2 ROS BAG LiDAR数据回放

图2 ROS BAG LiDAR数据回放

Rosbag生成的数据格式是Bag,这是一个拥有两层逻辑结构的文件格式。如图3所示,上层的Bag类对上抽象提供了用户操作文件的方法,对下封装了对ChunkedFile的操作方法;ChunkedFile类主要对数据进行了分隔存储,而存储的数据为一条条ROS message,不仅包含文字信息,也包含大量的二进制数据,后者主要是无人驾驶汽车传感器发送的图片或3D点云文件数据。这就给传统的主要用来处理文字日志的分布式计算系统应用带来了新挑战。

图3 ROS BAG 结构图

图3 ROS BAG 结构图

模拟测试数据集

如前所述,我们主要关注基于真实数据回放的模拟器,数据量有多大呢?以来自真实世界的KITTI数据集为例(由KIT和TTIC在2012年启动的一个合作项目,网站为http://www.cvlibs.net/datasets/kitti/,更详细的介绍请参见《程序员》2016年7月刊《基于计算机视觉的无人驾驶感知系统》),KITTI的研究人员录制了6个小时的真实数据,数据量为720GB。但是6小时的数据仅够完成一些算法的简单验证,无人驾驶产品所需求的数据量远大于此。比如谷歌的无人车在过去几年中收集了超过40000小时的真实数据,总数据量估计超过了5PB。如此大量的数据,基于单机的模拟远不能支撑其处理,所以我们必须为基于真实数据回放的模拟器设计一个高效的分布式计算平台。

计算量的挑战

巨大的数据处理量对计算平台造成很大的压力。例如,KITTI数据整集6小时的原数据包括了超过1000000张140万像素的彩图,如果使用单机的基于深度学习的图像识别平台,每张彩图分析时间大概是0.3秒。这样,仅是分析KITTI数据集的图片,就需要超过100小时,而如果分析谷歌无人车级别的整体图片数据,在单机处理上就需要超过60万个小时。

基于Spark的分布式模拟平台

Spark是UC Berkeley AMPLab开源的通用并行计算框架。Spark基于内存实现的分布式计算,拥有Hadoop所具有的优点;但不同于Hadoop,Spark Job的中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地应用于需要迭代的Map-Reduce算法。

图4 分布式模拟平台总体架构

图4 分布式模拟平台总体架构

如图4所示,为了高效地进行无人驾驶回放模拟,我们设计了基于Spark的分布式模拟平台框架。我们使用Spark进行资源的分配管理、数据的读写以及ROS的节点管理。在Spark Driver上,我们可以触发不同的模拟应用,比如基于LiDAR的定位、基于图片的物体识别、车辆决策与控制等。Spark Driver会根据数据量与计算量等需求请求Spark worker资源。每个Spark worker首先会把Rosbag数据读入内存,然后通过pipe启动ROS Node进程进行计算。我们也可以使用JNI方式连接Spark worker以及ROS Node,但这将涉及对ROS的修改,使得整个系统难以维护与迭代。经过权衡之后,我们最终选择了pipe的设计方案。

在pipe的设计方案中,有两个问题需要解决:第一,Spark本身支持读取文本数据,但并不支持多媒体数据读取,我们需要设计一个高效的二进制文件读取方法。第二,Rosbag的play功能如何从内存中读取缓存的数据,record功能如何将数据缓存至内存中。以下我们将讨论这些设计。

二进制文件流式管道处理

Spark操作数据的核心是弹性分布式数据集(RDD),它允许程序员以一种容错的方式在一个大型集群上执行内存计算。百度美国研发中心之前的一个工作就是在这一数据结构的基础上引入了新的RDD来实现二进制文件流式管道处理。其结构如图5所示(关于这个设计的细节请参考《程序员》2016年1月刊《基于Spark的百度图搜变现系统架构》)。

图5  BinPiped RDD的总体设计和主要功能

图5 BinPiped RDD的总体设计和主要功能

在每一个Spark的worker上,worker根据Binpiped RDD的信息通过标准输入流在内存中将数据传送给用户程序,用户程序处理完数据后通过标准输出流在内存中将数据传回给Spark的worker。worker将数据汇集存储到HDFS上。

Rosbag缓存数据读取

在当前使用场景下(如图6),我们的输入是一定量的Bag二进制文件,以某种形式存储在分布式文件系统上面,而用户想要的输出是所有这些Bag文件在每一个worker上回放信息进入模拟器后经过处理得到的数据,显然这一过程通过Rosbag的play和record功能最易实现。

图6  模拟器在分布式平台的运作流程

图6 模拟器在分布式平台的运作流程

图7  MemoryChunkedFile设计

图7 MemoryChunkedFile设计

不过这一过程中还存在缺失的环节,即Rosbag的play功能如何从内存中读取缓存的数据,以及record功能如何将数据缓存至内存中。为了实现这一功能,我们为原来的Bag和ChunkedFile的两层逻辑结构增加了一个分支逻辑层。如图7所示,MemoryChunkedFile类继承于ChunkedFile类并且重写了ChunkedFile所有的方法。MemoryChunkedFile在向下层读写文件时是向内存读写数据,而不是像ChunkedFile类一样向硬盘读写数据。这样做的一个好处就是worker通过标准输入流传给模拟器的数据不用经过磁盘I/O读写就可以被直接读入,经过模拟器处理的数据也不用经过磁盘I/O读写就可以由内存直接传回worker。这样的读写模式极大地缩短了模拟器处理数据的时间。

通过这一逻辑层的添加,我们可以将模拟器部署到Spark集群内的每一台worker机器上。通过加载不同的配置文件使每台机器运行不同的模块;也可以通过部署相同模块不同模型的条件下运行相同数据,以比较模型的不同;还可以在相同模块相同模型的条件下运行不同数据,比对不同数据的差异。由此可见,分布式系统的使用为模拟器添加了无数扩展的可能。

性能评估

在设计实现的同时,我们对系统进行了性能评估。随着计算资源的增加,计算时间也在线性地降低,系统表现出很强的可扩展性,可以承受很大的数据量与计算量。在一个图像识别测试集中,使用单机处理图像数据耗时为3个小时,而使用8个Spark worker后,耗时仅25分钟。假设我们使用10000个Spark worker对谷歌无人车级别的数据进行大规模的图像识别模拟测试,整个实验也可以在100小时内完成。

结论

使用分布式系统能够极大提升模拟器的工作能力,使无人驾驶系统的测试工作得以大规模有序地扩展开来。这一结果是建立在模拟器架构模块化,以及测试用例组合模块化的基础之上的。采用分布式系统搭建模拟平台,使得在真车上路之前测试无人驾驶汽车将要行驶的每一条道路成为现实。当然无人驾驶汽车在真实道路上的测试依然必不可少,但是模拟器已经为无人驾驶系统测试了海量的基础情景,使我们可以以最低的成本最大限度地保障真车测试时的安全。


无人驾驶技术系列:

ROS分布式部署通信 本文介绍了ROS分布式通信的设置与应用。文章首先阐述了ROS分布式通信的概念,通过ROSMaster实现多设备间的数据共享,适用于PC主机与树莓派等设备协同工作的场景。随后详细说明了环境配置步骤:1)确保设备在同一局域网并安装相同ROS版本;2)主机设置ROS_MASTER_URI等环境变量;3)从机配置连接主机的环境变量;4)通过话题测试通信。最后介绍了进阶应用——使用launch文件启动多从机节点,说明了launch文件编写方法及各参数含义,包括机器定义、节点部署和环境加载等关键配置。该方案能有效分配计 阅读详情

相关推荐

智能巡航辅助功能中的KPI设计

关键绩效指标(Key Performance Indicators,简称KPI)是用来衡量系统或公司是否达成主要目标的可量化指标。在智能巡航辅助系统中,KPI被用来评估不同驾驶场景下各项功能的性能和可靠性。业务迭代的参考指标:KPI为自动驾驶技术的研发和改进提供了明确的目标和基准,帮助开发团队了解系统的性能和不足之处,从而进行有针对性的优化和迭代。供应商选择和评估:KPI是OEM厂商选择供应商的重要基准,也是评估供应商产品性能和质量的工具。

u013889591的专栏 1188

Rosbag常见使用汇总

rosbag 工具可以录制一个包、从一个或多个包中重新发布消息、查看一个包的基本信息、检查一个包的消息定义,基于 Python 表达式过滤一个包的消息,压缩和解压缩一个包以及重建一个包的索引。在实际的项目的中,用的最多的就是 record、info 以及 play 功能,先录制想要的话题包,录制完毕检查下包的信息,最后再回放作为算法的输入,下面就详细学习下上面命令的用法。rosbag play 读取一个或多个 bag 文件的内容,并以时间同步的方式回放,时间同步基于接收消息的全局时间。

折翼孤雁 2284

18、自动驾驶云平台:基础设施与服务解析

本文深入解析了自动驾驶云平台的基础设施与核心服务,涵盖分布式计算(Spark)、分布式存储(Alluxio)和异构计算(GPU/FPGA加速)的构建与优化。基于统一基础设施,平台支持三大关键服务:分布式模拟测试、离线深度学习模型训练和高清地图生成,显著提升数据处理效率与算法开发性能。文章还总结了平台在资源共享、高性能、可扩展性等方面的优势,并展望了智能化服务、边缘计算、安全隐私和生态建设等未来发展方向,为自动驾驶技术的大规模落地提供强大支撑。

x8y9z0的博客 85

SparkMLib:自动驾驶与计算机视觉

1.背景介绍 自动驾驶和计算机视觉是现代科技领域中的两个热门话题。SparkMLib是一个强大的机器学习库,它为自动驾驶和计算机视觉领域提供了丰富的算法和工具。在本文中,我们将深入探讨SparkMLib在自动驾驶和计算机视觉领域的应用,并分析其优缺点。 1.背景介绍 自动驾驶技术是一种利用计算机视觉、传感器和机器学习算法来驾驶汽车的技术。自动驾驶技术的目标是提高交通安全、减少交通拥堵和减少燃...

AI天才研究院 999

3、自动驾驶技术:从模拟到定位的全面解析

本文全面解析了自动驾驶技术中的关键环节,涵盖算法模拟测试、高清地图制作与深度学习模型训练的高效分布式解决方案。重点探讨了GNSS定位技术及其误差来源,并对比了SBAS、RTK、PPP和GNSS与INS集成等高精度定位方法的优劣与适用场景。通过实际案例分析展示了定位技术在自动驾驶中的应用演进,展望了未来高精度、多技术融合、实时性强和全球覆盖的定位发展趋势,为自动驾驶系统的研发与优化提供了系统性参考。

x8y9z0的博客 60

自动驾驶车辆定位技术与云平台集成

本文深入探讨了自动驾驶车辆的关键技术之一——定位系统,包括GNSS的原理、误差来源和增强系统。同时,分析了自动驾驶车辆的硬件平台挑战,并介绍了自动驾驶云平台的设计,包括模拟、高清地图生产和深度学习模型训练等应用。

weixin_36231030的博客 308

「百万级」仿真场景库积累,为智驾研发「降本增效」

在仿真运行过程中,环境车辆行为的多样性、交互性、真实性是确保仿真有效的关键,即仿真中环境车辆的行为要尽量接近真实世界的车辆行为,这也是目前市场上很多仿真软件的弱势,如Sumo、 VISSIM等仿真软件主要针对粗粒度的交通流仿真,在车辆横向动力学仿真上不够精细,Prescan、Carsim等针对动力学的仿真软件对于交通流和车辆间的交互仿真能力较弱,另有CARLA、lgsvl、Airsim等开源仿真软件借助简化的自动驾驶技术栈来进行车辆仿真,表现出的车辆驾驶意图和行为较为单一。对自动驾驶车辆进行评测。

Evelynnzhao的博客 2382

ETL数据集成案例

一个典型的ETL数据集成案例是将多个来源的数据合并成一个数据集。假设有一个公司,该公司使用一些不同的系统来存储不同部门的数据,例如销售数据存储在一个CRM系统中,财务数据存储在一个ERP系统中,人力资源数据存储在一个HR系统中。为了更好地进行报告和分析,该公司决定将所有这些数据集成到一个数据仓库中。以下是实现这一目标的ETL过程的步骤:提取(Extract):首先,需要从每个系统中提取所需的数据。每个系统可能有不同的数据格式和结构,因此需要编写不同的提取程序或查询来提取数据。

runqu的博客 948

ROS 分布式通信

ROS是一种分布式软件框架,节点之间通过松耦合的方式进行组合。 如何实现分布式多机通信 (1)设置IP地址,确保底层链路的联通 ifconfig 在树莓派的终端中输入如下指令 sudo vi /etc/hosts Ubuntu vi文本编辑器使用方法:https://blog.youkuaiyun.com/qq_44989881/article/details/115870950 添加ubuntu的ip地址 和名称 测试配置的地址是否联通 ping [配置的计算机名称] 例如: ping ubuntu 然

꧁༺ʚvv༒catɞ༻꧂的博客 2923

Ubuntu 24.04 下 NoMachine 极速安装与远程桌面配置全攻略

本文详细介绍了在Ubuntu 24.04系统下安装和配置NoMachine远程桌面的完整指南。从系统准备、分步安装到性能调优和常见问题解决,帮助用户快速实现低延迟的远程桌面访问。特别适合开发者和IT管理员在Linux环境下高效部署远程工作环境。

moon9的博客 945

解密UFS Explorer:Drobo BeyondRAID数据恢复实战指南

本文详细介绍了使用UFS Explorer Professional Recovery软件中的Drobo BeyondRAID助手进行数据恢复的完整实战流程。当Drobo设备因BeyondRAID配置信息丢失而无法访问时,该工具能安全、只读地扫描硬盘,虚拟重建存储池,帮助用户找回宝贵数据。指南涵盖了从前期准备、硬盘选择、配置扫描到数据安全导出的每一步关键操作与常见问题解决方案。

weixin_29219539的博客 269

【无人驾驶系列四】 基于Spark与ROS分布式无人驾驶模拟平台

本文是无人驾驶技术系列的第四篇,着重介绍基于Spark与ROS的分布式无人驾驶模拟平台。无人驾驶的安全性和可靠性是通过海量的功能和性能测试来保证的。无人驾驶系统是一个复杂的系统工程,在它的整个研发流程中,测试工作至关重要同时也繁重复杂。显然将全部测试工作都集中在真车上进行是一种成本异常高昂且安全系数非常低的方案。通过综合考虑测试中各种可能发生的正常或异常状况,软件模拟成为了面向无人驾驶系统的更安全...

天空之城 1965

FPGA+CUYSB3014实现USB3.0功能

CYUSB3014是赛普拉斯在近几年推出的新一代USB3.0的外设控制器,可以解决USB2.0带宽限制,或者单独开发USB协议和驱动的难题。赛普拉斯将CYUSB3014简称为EZ-USB FX3,具有高度的灵活特性,开发人员只需要下载FX3的固件库,就能使用USB3.0的功能。目前在一些电子产品中,使用主控器加PHY芯片最流行的方式是用FPGA+FX3这种搭配来实现USB3.0接口。......

D_Katter的博客 7065

【优快云 AI 周刊】No. 003 | 《程序员》系列文章——无人驾驶技术详解

【优快云 AI 周刊】每周一早八点为您奉上新鲜出炉的AI早餐。订阅请点击这里。若您有希望与业界分享的AI实施案例、资料整理、学习笔记、趣闻妙谈,请发送邮件至wangyi@youkuaiyun.com,期待您的声音。本周优快云_AI为您准备了《程序员》杂志中的无人驾驶技术系列文章,共7篇。1. 光学雷达(LiDAR)在无人驾驶技术中的应用本文为《程序员》无人驾驶技术系列的开篇。无人驾驶汽车的成功涉及高精地图...

qunnie_yi的博客 649

生成模型实战 | MuseGAN详解与实现

人工智能音乐生成领域已引起了广泛关注,MuseGAN 是其中一个重要的模型。本节我们将使用 JSB Chorales 数据集来训练 MuseGAN,该数据集包含巴赫创作的四音轨合唱曲。在生成图像时,生成器使用的是来自潜在空间的单一噪声向量来生成不同格式的内容;而在 MuseGAN 中,生成器将使用四个噪声向量来生成一段音乐,旨在增强音乐生成过程中的可控行和多样性。每个噪声向量代表音乐的不同方面,通过单独调整这些向量,模型可以生成更复杂、更细腻的音乐作品。

盼小辉丶的博客 6538

【24届数字IC秋招总结】正式批面试经验汇总6——禾赛

15、ahb写或者读的数据存储起来了嘛,ahb读的话,apb这边是怎样的。19、覆盖率收集的时候有没有哪些是很难收集到的,然后写了定向测试。2、C++有学过嘛 还记得C++的什么内容 C++成绩多少。12、config_db机制用过嘛 四个参数的含义。8、脚本语言有学过嘛 简单学过 简单是指代码数少嘛。13、run_phase和mian_phase的区别。10、覆盖机制的创建方法 ,是不是覆盖用的很少。6、call_back机制记得哪些细节的东西。9、uvm实战学了哪些章节 印象深刻的章节。

qq_42135020的博客 1082

无人驾驶实战-第二课(ROS编程)

ROS不是真正的操作系统,而是一种系统软件框架,该框架使用了流行的面向服务(SOA)的软件技术,通过网络协议将节点间数据通信解耦。一个节点是ROS程序包中的一个可执行文件,ROS节点可以使用ROS客户库与其他节点通信。ROS程序的最小组织是Package,Package是ROS系统中最底层最基本的组织,里面存放各种文件:库、工具、可执行文件等.

pzb19841116的专栏 472

90. 将 SAP ABAP 内表内容本地导出成 Excel 文件

这里文件扩展名为 csv,全称是 Comma-Separated Values,意思是这种类型的文件内容,由逗号分隔。除了 ASC 之外,另一个可用的选项是 BIN,适用于 PDF,EXE 等二进制文件的导出。支持海量的输入和输出参数,我们这个简单的本地导出场景里,大部分参数都用不上。这个分隔符的添加逻辑,编写在上图红色高亮矩形框内,使用的语法是。本教程有学习者向我提问,询问如何将 ABAP 某某函数的某某输出参数的值,导出成本地 Excel 文件。把这个内表的内容,下载到本地,以本地文件的方式保存。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1742

【ROS学习】ROS分布式通信

我们都知道,把ROS系统运行在嵌入式平台上(比如树莓派)是可以运行的,但是性能远远没有强大的主机好,因此,如何将运算量大的内容在主机上计算,而嵌入式平台只需进行简单的运行通信呢?这就是本篇文章索要介绍的ROS分布式通信! 目录 一、IP地址相同 二、修改hosts配置文件 1、修改树莓派的hosts文件 2、修改从机的hosts文件 3、ping名称是否成功 三、添加配置IP 1、主机配置IP(树莓派) ​2、从机配置IP(笔记本) 四、测试 一、IP地址相同 我们需要保证主从...

Q小鑫 3343

使用MATLAB和Simulink来创建一个智能家居照明控制系统的仿真模型

智能家居中的智能照明控制系统旨在通过自动化手段优化家庭照明,提高能源效率和居住舒适度。这通常涉及传感器(如光敏传感器、运动传感器)、控制器(如微控制器或PLC)以及执行器(如调光器或开关)。在这个教程中,我们将使用MATLAB和Simulink来创建一个智能家居照明控制系统的仿真模型。

xiaoheshang_123的博客 219

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ROS分布式通信

ROS是一个分布式计算环境。一个运行中的ROS系统可以包含分布在多台计算机上多个节点。根据系统的配置方式,任何节点可能随时需要与任何其他节点进行通信。

m0_62187438的博客 1417

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【树莓派4B】ROS分布式通信

在学习ROS的过程中,如何通过树莓派作为主机,PC作为从机(安装的是windows+ubuntu双系统,有需要的小伙伴可以留言),实现分布式通信。以下关于分布式框架的搭建流程。提示:以下是本篇文章正文内容,下面案例可供参考当然我们的多机通信不局限于两台计算机设备。有问题多多留言。

weixin_51963312的博客 2593

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

4.7 ROS分布式通信

ROS入门 4.7 ROS分布式通信 《ROS入门-理论与实践》视频教程镇楼 ROS是一个分布式计算环境。一个运行中的ROS系统可以包含分布在多台计算机上多个节点。根据系统的配置方式,任何节点可能随时需要与任何其他节点进行通信。 因此,ROS对网络配置有某些要求: 所有端口上的所有机器之间必须有完整的双向连接。 每台计算机必须通过所有其他计算机都可以解析的名称来公告自己。 实现 1.准备 先要保证不同计算机处于同一网络中,最好分别设置固定IP,如果为虚拟机,需要将网络适配器改为桥接模式; 2.配置

赵虚左 1366

ROS与无人驾驶学习笔记(一)——安装与准备工作

ubuntu、ros以及无人驾驶学习笔记

ooorczgc的博客 1533

ROS机器人无人驾驶技术:驾驭未来交通

1.背景介绍 在未来的交通中,无人驾驶技术将成为一种普及的现象。这篇文章将揭示ROS(Robot Operating System)机器人无人驾驶技术的奥秘,让我们深入了解这一领域的核心概念、算法原理、最佳实践以及实际应用场景。 1. 背景介绍 无人驾驶技术的研究和应用已经进入了快速发展的时代。随着计算能力的提高和传感技术的进步,无人驾驶汽车的可行性也在不断增强。ROS是一个开源的操作系统,...

AI天才研究院 1682

ROS之分布式多机通信

ROS是一种分布式软件框架,节点之间通过松耦合的方式进行组合,在很多应用场景下,节点可以运行在不同的计算平台上,通过Topic、Service进行通信。但是“一山不容二虎”,ROS中只允许存在一个Master,在多机系统中Master只能运行在一台机器上,其他机器需要通过ssh的方式和Master取得联系。本文以PC机与SMART移动平台的多机通信为例,进行详细说明。 左侧专栏还在更新ROS功能包其他源码分析,可以关注一波啦 1. 局域网搭建 ROS的多级通信框架要求各个层级位于同一局域网下,即PC机连接

abicco_ds的博客 1048
上一篇: 科研的秘诀——对话微软研究院负责人Peter Lee
下一篇: 从Image Caption Generation理解深度学习(part III)
923940cub
博客等级 码龄17年 121粉丝 37原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值