本帖最后由 FFD8 于 2024-8-11 15:57 编辑
# 【超小型 Linux 开发套件:Quantum Tiny Linux(带 SoM 和扩展板)】 - 5.详细设计
## 项目介绍:
本次项目拟制作一台三个全向轮底盘的的ROS小车,采用超小型 Linux 开发套件:Quantum Tiny Linux做为系统主控,结合stm32及其他硬件设备,实现速度控制、里程反馈等功能。
### 实物图:
### 软、硬件设计:
### 系统架构:
### 程序流程:
## 详细设计
### 1、Quantum Tiny Linux
使用ROS系统,实现键盘输入检测keypad_control节点和chassis_driver底盘控制节点。
#### 1. 其中keypad_control节点启动后持续检测键盘输入信号,当有W,A,S,D,Q,E,空格按键按下后,根据下表规则,发布底盘速度数据Vx,Vy,Vw。
#### 2. 其中chassis_driver节点订阅keypad_control发布的速度数据,同时接收stm32返回的实际速度数据,实现速度解算和里程计算。
1、速度下发:对键盘输入的速度进行解算,并按照三麦伦结构的运动学模型,将整体速度set_speed_分解,计算每一个轮上的速度大小set_speed.moto,通过modbus-rtu协议下发至stm32。
2、实际速度接收:通过modbus-rtu协议由stm32反馈每个轮上的实际速度cur_speed;
3、里程计算:根据每个轮的实际速度及获取数据的时间间隔,解算出整车的实际速度Vx,Vy,Vw及变化量,然后累加得到里程数据。
### 2、stm32
使用stm32F100RBT6,基于freertos系统,创建三个任务:1、程序心跳任务;2、速度解析任务;3、速度控制+实际速度反馈任务。
1. 程序心跳任务:系统启动后,心跳灯保持闪烁;
2. 速度解析任务:解析Quantum Tiny Linux下发的设置速度数据;
3. 速度控制+实际速度反馈任务:利用pid控制每个轮子的设置速度,更新实际速度数据;
引脚定义如下:
## 功能演示
```cpp
1、ssh远程登录Quantum Tiny Linux;
2、进入ROS工作空间;
3、启动roscore,chassis,keycontrol节点;
4、按键控制小车运动(前进,后退,旋转,横移);
5、里程计算;
```
演示视频
8月11日
## 相关代码
stm32:https://gitee.com/FFD8/STM32F100RBT_robot.git
Quantum Tiny Linux:https://gitee.com/FFD8/ros_chassis.git
## 总结
Quantum Tiny Linux开发板在ROS系统下构建全向轮小车的试用中表现出色。
其强大的硬件性能、ROS支持和控制操作性能使其成为机器人开发的理想选择。尽管存在一些潜在的不足之处,但总体来说,这是一款出色的产品,适合各种机器人项目的开发者和爱好者。
整体功能的介绍到这里就结束了,后续我会不断完善功能,持续探索。再次感谢DigiKey、EEWorld!