乐于分享
好东西不私藏

ros2机器人软件开发工程师学习路线

ros2机器人软件开发工程师学习路线

前言

大家在学习这个的时候还是建议把零基础c++就业路线上的都达到了,这是基础根基。

并且不管是针对机器人相关知识,或者其他方向知识学习,这里阿甘还是先啰嗦一些,怎么让大家进行快速提效的学习。

难道是根据路线给的资源从头到尾一字不拉一个视频不拉的看吗,如果还在这么学习只能说终将被淘汰,甚至可以说不太适合搞程序员这个行业了。

我一直认为我们作为程序员,应该是对AI不管是熟悉,还是使用应该是最前沿的。针对我们学习上,更应该有借助AI进行提效学习的意识。

就比如我们机器人开发学习路线,应该怎么借助ai学习呢。我们对于某个新领域行业的学习,无外乎最迷茫的就是我应该学什么东西,学什么中间件,这个中间件应该学哪些方面,应该学到什么程度。

对于这些困惑,就是我们接下来的学习路线帮助大家解决的,但是应该怎么学,怎么快速掌握呢?这应该是大家思考的。难道是根据我给的文章,给的视频,一个字不拉的看,一个视频不拉的看吗,那效率得低成什么样子,以及自己能保证高效的吸收吗?

阿甘建议,就是大家根据我给的这个路线,比如告诉你学ros2,推荐你去看哪个资料。然后去你这个资料看什么呢?重点看这个中间件整体都分为哪几块,都有哪些知识点,然后你根据要掌握的知识点,直接去问ai,让ai给你编写要熟悉它的demo,借助ai快速掌握,而不是上面的说的紧盯着屏幕看文字,看视频太低效了。

(学习思路建议按照上面咱们给的思路哈,ai时代了,一定要善于用ai提效哈)

前置知识

首先一定要先把零基础cpp就业路线上写的都掌握了,因为这是基础,是让你具备c++编程的基础。

让自己有了编程基础,但是对机器人工程东西还不是熟悉的,这才是这篇文章给大家弥补的。

cpp c++ 机器人ros2 全链路项目重磅来袭

(我们最新开发的ros2机器人项目,覆盖底盘通信、传感器处理、Nav2 导航、SLAM、路径跟踪、任务调度、设施联动、车队协同、REST/VDA 集成、Gazebo/RViz 仿真等等。学习时可以把它当成一个小型机器人公司软件栈,而不是一个单点 demo。)

整体学习路线说明

我们按照机器人开发从底层到上层整体流程进行书写,同时如果你想具体投哪个岗位,去专门的学习就可以了

比如你slam部分,你想搞算法就要去仔细的研究,单纯想找开发工作了解了解就可以了。

整体可以分为如下几部分:

(1)ros相关

了解基本的概念,起码知道什么是节点,节点是怎么通信的等等 不然后面看到具体模块,是怎么联系的,完全看不懂

(2)机器人模型、传感器与 TF

这一部分,可以用网上大家常说的一句话“让机器人在软件世界里有身体” 这部分至少要懂得各个坐标系之间的关系

(3)底盘控制与硬件接入

(4)导航、定位与 SLAM

重点理解地图、定位、代价地图和 Nav2 调试;不要闷头去搞slam算法相关的

(5)任务调度(任务编排)

这也是企业机器人软件开发岗位最复杂,有含金量的一部分

尤其那种机器人工作场景特别多的

像我们项目中写的接订单、排队、取货/卸货/等货、多车协同、低电量回充等等,可以梳理梳理这部分业务,看看任务状态机怎么实现的。如果面试的时候能和面试官讲透会很加分。

像我们c++搞机器人中间层,更多的主要是业务的逻辑,比如像项目开发的任务调度,任务编排,还有就是结合不同的机器人,不同的业务,以及不同场景的处理,这个就需要进入实际工作看你开发机器的场景进行学习了。

(6)仿真

让我们可以验证自测

资料网址资料

对于网上资料,大家一搜,应该搜的最多的就是古月居的ros21讲和鱼香ros的动手学ros2

资料都挺不错的,在这里也再次感谢下开源精神。

网址链接:

(1)古月居 https://github.com/guyuehome/ros2_21_tutorials

(2)鱼香ros: https://fishros.com/d2lros2/#/

(3)官方文档:https://docs.ros.org (还是建议要看看的,不要只看哪些中文别人咀嚼过给你的。 比如在查 API、确认 Jazzy 版本差异时)

(4)创客智造 ROS2:https://www.ncnynl.com/

(5)Robook ROS2 中文文档:https://ros2docs.robook.org/humble/index.html

(6)Nav2 documentation: https://docs.nav2.org/

(7)slam_toolbox repository/documentation:https://github.com/SteveMacenski/slam_toolbox

(8)VDA 5050 official repository: https://github.com/VDA5050/VDA5050

其实按照上面资料里的文章顺序看挺好的,写的很详细了,重点是要借助ai快速,深入学习

ROS/ROS2

对于ros,要学或者说开发要用的,无非就是先对下面的了解:

ROS2 topic / service / action / parameter / launch,以及使用场景

msg / srv / action 的接口设计差异

colcon build、colcon test、source install/setup.bash

ROS2 package 结构、package.xml

借助ai编写demo了解会运用之后,可以再看看项目 (下面阶段学习也类似)

可以去README.md`看看项目是如何构建、启动的

以及本项目robot_interfaces*部分,可以看看msg / srv / action 是怎么拆分的。

机器人模型、传感器与 TF

对URDF / Xacro了解下,知道如何描述机器人几何、link、joint、传感器坐标

对TF 主链:map -> odom -> base_footprint -> base_link -> lidar_link / imu_link (很重要)

LaserScan、IMU、Odometry 的字段含义和 frame_id 约束(让ai给你编写一下教学demo编程程序,然后让它给你逐行解释讲解便会了)

了解以后可以看项目代码部分,如下:

robot_description:机器人模型、URDF/Xacro、传感器坐标

robot_sensors:传感器数据处理、标准 topic 发布或过滤。

robot_hardware:里程计、底盘状态和硬件数据入口。

底盘控制与硬件接入

理解学习下,下面的东西就可以了:

/cmd_vel 速度命令约定、geometry_msgs/msg/Twist、差速运动学、轮速、里程计积分

多速度源仲裁和安全限速的通用设计思路

急停、限速、人工接管、输入超时等移动机器人底盘安全策略

Serial / UDP 通信、半包/粘包、超时和协议鲁棒性

ros2_control SystemInterface 和 diff_drive_controller

对于本项目可以看下面的:

● robot_hardware:mock / Serial / UDP 后端、自定义 CMD/ODOM/STATE 协议、ros2_control 接入。

● robot_teleop:twist_mux / cmd_vel_mux_node、cmd_vel_safety_gate_node 和人工速度输入如何进入速度仲裁链路。

● robot_utils:本项目系统状态和安全相关工具逻辑

导航、定位与 SLAM

● Nav2 的 planner、controller、behavior、BT navigator。

● slam_toolbox、Cartographer、map server、localization。

● robot_localization EKF、里程计和 IMU 融合。

● costmap、keepout / speed filter、语义区域。

● Pure Pursuit、Stanley、tracking error、终点停止

与本项目联系的部分:

● robot_navigation:Nav2 / SLAM / EKF / costmap 参数、launch 和地图。

● robot_path_tracking:Pure Pursuit、Stanley 和路径跟踪误差计算。

● robot_experiments:导航、SLAM、路径跟踪的实验和 benchmark 入口。

任务调度

这一部分我只根据本项目列列,一般不管做什么项目,多来点场景,业务多点搞复杂点,面试能聊清楚就可以了

● AMR 任务调度通用概念:任务队列、优先级、抢占、暂停 / 恢复 / 取消。

● BehaviorTree / 状态机在任务流和恢复策略中的作用。

● 站点、路网、资源预约、交通管制和路径资源锁的通用思路。

● 设施资源交互:门、电梯、充电桩、载荷、人工确认。

● Fleet management、remote task、VDA5050、REST / MQTT

本项目设计部分:

● robot_tasks:mission queue、mission runner、workflow、BehaviorTree helper。

● robot_interfaces_mission:任务调度相关服务、消息和 action。

● robot_interfaces_facility:门、电梯、充电、payload 等设施资源接口。

● robot_interfaces_fleet:车队协同、远程任务和路权相关接口。

● robot_interfaces_business:统一订单入口 /v2/submit_order 和业务接口。

仿真

Gazebo world、ros_gz bridge、动态实体、RViz marker / display 的基本用法,了解下应该就可以了 具体可以看看上面资料仿真章节,挺不错的

总结

对于上面列的,不要上来每一个东西都学的很深,没有必要重点是还是看你对哪个方向感兴趣,把自己这个方向设计到的深入学学即可

可以结合下面这个看:

目标岗位
主学模块
核心技术点
代码入口
机器人软件工程师(综合)robot_bringup
 + 全栈通读
ROS2 节点/话题/服务/动作、launch 编排、包间协作
src/robot_bringup/launch/
、src/robot_interfaces*/
导航 / 运动规划工程师robot_navigation
Nav2(planner/controller/BT)、costmap、语义区 keepout/speed filter、地图管理
src/robot_navigation/
(map_manager_node、zone_filter_masks、config/)
SLAM / 定位工程师robot_navigation
 + robot_sensors
slam_toolbox、Cartographer、EKF(robot_localization)、TF 树、传感器标定
robot_navigation/launch/slam.launch.py
、robot_hardware/launch/hardware_ekf.launch.py
运动控制工程师robot_path_tracking
 + robot_hardware
Pure Pursuit / Stanley、差速/麦轮运动学、ros2_control、diff_drive_controller
robot_path_tracking/src/
、robot_hardware/src/chassis_kinematics.cpp
嵌入式 / 底盘驱动工程师robot_hardware
串口/UDP 通信、自定义协议编解码、hardware_interface 插件、里程计积分
robot_hardware/src/
(chassis_packet、serial/udp_backend、chassis_hardware_interface)
感知 / 传感器工程师robot_sensors
LaserScan/IMU 标准化、滤波、坐标系统一、diagnostics
src/robot_sensors/src/
任务调度 / 系统工程师robot_tasks
任务队列/优先级/抢占、状态机、behavior tree、失败恢复、成本估算
robot_tasks/src/
(mission_runner_node、*_workflow、*_behavior_tree)
AMR 车队 / Fleet 工程师robot_tasks
 + robot_interfaces_*
多机调度、站点路网、设施联动(门/电梯/充电)、VDA 5050、订单路由
robot_tasks/src/
(fleet_*、facility_*、station_*、submit_order_router)
功能安全工程师robot_teleop
 + robot_utils
cmd_vel 仲裁、急停、watchdog、限速、诊断聚合、故障监督闭环
robot_teleop/src/
、robot_utils/src/(system_monitor、fault_supervisor)
仿真 / 工具链工程师robot_simulation
 + robot_description
Gazebo 世界搭建、ros_gz bridge、URDF/Xacro、RViz 可视化、自动演示编排
robot_simulation/
(worlds/、amr_sim_*_node)、robot_description/urdf/
后端 / 上位机 / 集成工程师scripts/
 + tools/
REST gateway、VDA 5050 桥接、MQTT、webhook 回调、运营控制台
scripts/rest_api_gateway.py
、scripts/vda5050_*、tools/operator_console.html
测试 / DevOps 工程师scripts/
 + 各包 test/
GoogleTest、launch_testing、headless 验收、CI、Docker
scripts/check_robot.sh
、各包 test/、.github/、docker/

文章链接

https://www.yuque.com/u41022237/xy0omf

知识星球介绍(公认的cpp c++学习地)

星球名字:奔跑中的cpp / c++

专注cpp/c++相关求职领域的辅导

加入星球福利,后续如果有其他活动、服务,不收费,不收费,可以合理赚钱就收取下星球费用,但是不割韭菜,保持初心

如果想了解星球或者有其他疑惑的也可以加阿甘微信:

感兴趣的微信扫下面的码,然后下载知识星球app登录即可

(1)高质量的项目合集

以及最近出的ros机器人项目

同时如果项目,遇到任何困惑也会第一时间进行解答的

(2)高质量精确性八股资料

(3)详细的学习路线

(4)活跃的学习氛围,星球打卡不只是一个形式,而是每天观看,针对同学们的学习情况提出合理化的建议,同时也有高质量的星球微信内部群

(5)星球提问简历修改,提供意见的同时,还会给安排一对一腾讯会议辅导

(6)星球同学offer情况,以及对应学习情况,给大家提供参考

(7)全网最全cpp相关面经整理

(8)编程实战能力提升平台(大家都可以使用的,免费的)

访问网址 cppagancoding.top

星球同学的评价

(9)每周也会进行直播答疑,同时有时也会给星球内部同学开一些知识、路线分享会。

具体可以看B站放的视频,up名字:cpp辅导的阿甘

(10)奖励金激励,会根据大家打卡学习/ 面经打卡整理情况,每个月每个季度发放奖励金。有的人陆陆续续已经获得了数千月的奖励金,是加入星球费用的数十倍了

(11)全网最全的26届校招、27届实习/校招整理表汇总

等等,可能还有一些其他服务,目前没想起来的,以及后续也会增加的服务

相关学习资料