惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
V2EX - 技术
V2EX - 技术
P
Privacy & Cybersecurity Law Blog
T
The Exploit Database - CXSecurity.com
美团技术团队
WordPress大学
WordPress大学
博客园 - 司徒正美
S
Securelist
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - Franky
Attack and Defense Labs
Attack and Defense Labs
Security Latest
Security Latest
L
LINUX DO - 最新话题
NISL@THU
NISL@THU
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC
Y
Y Combinator Blog
The Hacker News
The Hacker News
Security Archives - TechRepublic
Security Archives - TechRepublic
IT之家
IT之家
T
Threatpost
Hugging Face - Blog
Hugging Face - Blog
Scott Helme
Scott Helme
S
SegmentFault 最新的问题
Cyberwarzone
Cyberwarzone
C
Cisco Blogs
阮一峰的网络日志
阮一峰的网络日志
U
Unit 42
B
Blog
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
小众软件
小众软件
V
Vulnerabilities – Threatpost
J
Java Code Geeks
V
Visual Studio Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
A
Arctic Wolf
博客园 - 【当耐特】
Microsoft Security Blog
Microsoft Security Blog
S
Security @ Cisco Blogs
雷峰网
雷峰网
Help Net Security
Help Net Security
The Last Watchdog
The Last Watchdog
Recent Announcements
Recent Announcements
G
Google Developers Blog
C
CERT Recently Published Vulnerability Notes
T
Troy Hunt's Blog
MyScale Blog
MyScale Blog

峰峰的小窝

从零开始的自动驾驶(六)无刷电调硬件改了又改 从零开始的自动驾驶(四)无刷电调硬件修改|峰峰的小窝 从零开始的自动驾驶(三)ROS2与雷达|峰峰的小窝 从零开始的自动驾驶(二)编译开发板Linux|峰峰的小窝 从零开始的自动驾驶(一)无刷电调硬件|峰峰的小窝 搭建代理服务器跳板|峰峰的小窝 迎接新的时代|峰峰的小窝 一段故事的结束|峰峰的小窝 AI全自动写小说|峰峰的小窝 桌面直播通话APP设计实现|峰峰的小窝 2025 年总结|峰峰的小窝 SPI串并转换模块|峰峰的小窝 一种另类的数据标注方法|峰峰的小窝 GPS定位模块设计|峰峰的小窝 STM32硬件和软件设计指南|峰峰的小窝 基于Docker的多实例管理系统|峰峰的小窝 Hello PCB|峰峰的小窝 Hello ESP8266|峰峰的小窝 实时语音智能体快速搭建|峰峰的小窝 Git自动化测试部署|峰峰的小窝 Docker镜像构建和部署|峰峰的小窝 Web应用私有化|峰峰的小窝 虚幻FFMPEG解码视频|峰峰的小窝 Fish-Speech的编译优化|峰峰的小窝 阶段总结|峰峰的小窝
从零开始的自动驾驶(五)整体设计|峰峰的小窝
FFeng 我能想到的,最大的成功就是无愧于自己的心。 · 2026-06-19 · via 峰峰的小窝

手上没什么可以做的事情呢,纸上谈兵一下吧。

我们将无刷电调称为 智能电机

智能电机能够执行CAN上的命令,并通过CAN向上位机报告自己的状态。

分层

CPU + 各个传感器 + 智能电机报告的状态,构成了决策感知层。

六个智能电机 + 其他外设构成了执行层。

在决策感知层,跑在 Linux ROS 上的程序应当能够完全知道车辆姿态周围状态以及任务计划

运动方面划分为这些层面:

物理分层

逻辑分层

说明

示例

决策感知层

业务层

一个由用户或服务器下发产生的一个复杂的任务。视类型采用不同任务描述方法。

自动边界探索任务

按指定路线行驶任务

导航层

一个具体的,可被Nav2直接执行的命令。

移动到点

轨迹跟踪

几何层

高频的数学抽象的车辆需要进行的运动,一般包括三个线速度和一个角速度。车辆物理应当尽量贴近这个。

2.4m/s直行

10deg/s右转

接口层

高频的每个智能电机的转速,可以被智能电机直接理解和执行。

10圈/s转速

0转速

执行层

各种作业硬件所在的层,具备一定的信息处理能力,为决策感知层提供高级抽象的接口和信息源。

设备网关 --业务层数据--> 执行器 --导航层数据--> Nav2 --几何层数据--> 解算器 --接口层数据--> 硬件

理论实现和技术选项

决策感知层上,有 设备网关 执行器 Nav2 解算器 这些软件。

设备网关

内部在实现时需要进一步划分结构,这将是设备端本项目的核心,出于安全考虑,应当使用 C++ 或 Go 这类语言。

但 C++ 写网络通信这件事情总感觉坑很多,所以采用Go实现。Go底层操作也是足够友好的。

这部分除了需要连接服务器收命令,还应该具备 OTA、自检等功能。

执行器

这部分代码量很少,起一个调度作用。暂时不做过多考虑。

解算器

这是一个需要考虑的地方。

根据几何数据算电机转速,这一步没什么问题。

但是需要确保多个电机同步收到命令,这一步不简单。首先Linux就是一个最大的不确定因素。它不是实时操作系统。但Linux本身对CAN总线的支持非常好,就像就是想让你这么写一样。

我们可以通过缓存+广播的机制解决多个电机同步问题:

先逐个发送转速,智能电机缓存这个值,然后广播一个缓存使能,智能电机再使用这个值。

Linux虽说不是实时系统,但几毫秒的不确定性还是可以接受的。

此处也是使用 Go 来写。

传感器

雷达、摄像头、编码器这类传感器数据就算出现抖动也是无所谓的。

但 IMU 的数据需要积分,它的采样是不能够有抖动的,IMU的采样是绝对不可以在Linux上的。

但是我还不想多加一个MCU,怎么办呢?

AMP,非对称多处理!既然我们都可以编译Linux了,从理论上来讲,可以让Linux少用一个核,那那个核去跑一个RTOS或者裸机程序。

此处我们之后再研究,但确定使用AMP去解决,如果有其他需要裸机参与的东西也直接丢到这个单核裸机上。