前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【C++】ROS入门帖:机器人/自动驾驶学习路线

【C++】ROS入门帖:机器人/自动驾驶学习路线

作者头像
DevFrank
发布2024-07-24 14:56:18
880
发布2024-07-24 14:56:18
举报
文章被收录于专栏:C++开发学习交流

😏1. 为什么要发展自动驾驶

机器人与人工智能技术的进步,催生了自动驾驶的再一次技术高潮。

科技在进步,汽车新技术不断兴起,从电动化到智能化,从高级辅助驾驶到自动驾驶,都是为了解决最根本的能源、环境和安全问题。

总之,自动驾驶技术的发展既能推动道路交通绿色、安全、智能化的进程,也能对社会经济发展产生重要的推动作用。

😊2. 自动驾驶是什么

自动驾驶,也称无人驾驶或自主驾驶,是指车辆或其他交通工具在没有人类干预的情况下进行行驶和控制的技术。它可以由传感器、摄像头、雷达、激光雷达、GPS等设备实现对周围环境的感知和识别,通过机器学习、人工智能等算法进行决策和行动,从而实现完全自主的驾驶。自动驾驶的发展被认为有望提高道路交通的安全性、效率和便利性。

完全自动驾驶的实现还有很长一段路要走,目前大多数公司是用ADAS和AD两条路线走,包括Tesla等企业。

😆3. 自动驾驶如何入门

读者可能是学生,也可能是已经工作的工程师,大家可以从自己擅长的东西出发,比如之前是做算法的,就可以从了解自动驾驶相关算法入手;学习人工智能的,就可以从AI在自动驾驶上的应用开始;车辆相关的,可以从学习车辆动力学,了解pnc算法开始;最后,没有方向的,我觉得可以从了解工具链开始,先学习ros,了解自动驾驶软硬件是如何工作的开始……

这里列出一个自动驾驶学习路线,供参考:

  1. 基础知识:学习计算机科学、机器人学、控制理论、传感器技术、信号处理等基础知识。
  2. 编程语言:掌握至少一种编程语言,如C++、Python,熟悉算法和数据结构。
  3. 自动驾驶原理:了解自动驾驶的原理、架构和组成部分,包括远程通信、定位和地图、传感器信息、机器视觉和系统控制等。
  4. 感知与决策系统:学习感知与决策系统,包括视觉传感器解析、行为决策制定,深度学习算法等。
  5. 仿真环境:使用autoware、Apollo等自动驾驶开源平台,使用Gazebo、CARLA等仿真工具进行仿真环境搭建和测试。
  6. 真实车辆实验:基于上述仿真环境进行逐步演进,进行真实车辆实验,反馈调整措施,不断完善系统。
  7. 自动驾驶法律法规:了解国内外自动驾驶相关法规,保证同步整改和升级。
  8. 进一步提升和实践:学习和实践最新的自动驾驶技术,如自主学习、稳定性控制、故障诊断、边缘计算等,深入理解整个系统的构成和性能,提高自主开发能力。

自动驾驶中间件是连接整个自动驾驶系统的核心组件,其作用是在自动驾驶各模块之间、软件模块与硬件之间提供硬件抽象、驱动管理、通信机制和常用工具,常用的有ros、dds、autosar等。(ros是一个开源的机器人软件平台,提供了一个通用的机器人系统架构,已经被广泛应用于自动驾驶领域。autosar是基于ecu的汽车开放系统架构,规定了基本系统功能、功能接口和开发方法,有cp和ap两个版本,类似于单片机的rtos,已成为汽车嵌入式的标准。)

ros有ros1和ros2两个版本,主要区别如下:

ros1

ros2

初始版本,事实标准,开发灵活性好

更新版本,实时性拓展性更强

基于发布/订阅和服务的通信模式

基于DDS(Data Distribution Service)协议,支持更多的QoS(Quality of Service)机制

支持广泛的硬件平台,已被广泛应用,有了大量的代码库和算法库,可加速应用开发

有更好的实时性能和更高的稳定性,可以支持更多的应用领域

ros能解决的软件开发问题主要有:

  1. 分布式计算 如:一个机器人有多个控制器,分别执行不同的任务;一个机器人有一个控制器,每个任务抽象为单独的模块;多个机器人基于通信协同完成一个任务;用户通过远程指令控制机器人。
  2. 软件复用 随着机器人研究的发展,诞生了一批应用于导航、建图、路径规划等通用任务的算法,可以很方便的去调用这些接口并将精力放在新算法的设计与实现上。

一些公司还会自研中间件,如基于DDS协议+Autosar平台等,实际上是为了让整车各功能间更好的交互,以后可能是整车以SOA(Service Oriented Architecture)的架构来设计,实现了解决方案间的集成、系统组件的集成、业务实现的集成,甚至可能以后也会往微服务架构去发展,彻底实现功能或者业务的组件化,当然这都是互联网到汽车领域的舶来品,因此,工作经验到哪都有用,加油少年。

下面就从ros学习出发,入门自动驾驶参考:

  1. 学习ros:了解ROS的基本概念和工具,掌握ROS的基本命令、ROS节点和ROS话题的概念,学习如何使用ROS来构建机器人应用程序。
  2. ros硬件驱动:了解常见的ros驱动程序,如sensor、actuator等,如何与底层串口或者CAN通信,并在硬件或仿真环境中实现。
  3. ros自动驾驶开源平台:使用autoware、Apollo等自动驾驶开源平台,使用Gazebo、CARLA等仿真工具进行仿真环境搭建和测试。
  4. 路径规划和控制:学习如何使用ROS的路径规划和控制库,实现机器人的运动控制,包括PID控制、最优控制、A*、D*、lattice planner、EM planner、hybrid A*等。
  5. 地图定位和感知:学习视觉opencv、点云pcl,了解数据处理与滤波算法实现;了解高精地图创建,如NDT、LOAM等;学习如何将视觉传感器和车辆控制相结合,开发机器人视觉控制和感知算法,实现机器人的自主导航、定位、识别和跟踪等任务。
  6. 深度学习和自主决策:学习如何将深度学习算法应用于自动驾驶中,如CNN、LSTM等常用算法;了解感知融合,如MV3D、AVOD、PointPainting等;了解自主决策,如有限状态机,故障处理等。
  7. 系统架构:了解硬件选型、底层硬件与抽象、系统组件、常用通信方式、业务逻辑等。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 😏1. 为什么要发展自动驾驶
  • 😊2. 自动驾驶是什么
  • 😆3. 自动驾驶如何入门
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档