写点什么

基于 STM32F4 单片机实现 ROS 机器人主板

作者:芯动大师
  • 2024-12-21
    四川
  • 本文字数:1799 字

    阅读完需:约 6 分钟

基于STM32F4单片机实现ROS机器人主板

STM32_ROS_V2(9.5 更新):

(1)增加 4 颗 ws2812B RGB 灯,焊接在背部,PB15_SPI2 引脚输入,采用 SPI 与 DMA 控制,实现呼吸灯,跑马灯等功能,见附录代码

(2)增加一路 ADC 电路电阻(分压测量电路,PA4_ADC1 采集),测量 12V 航模电池电压

  加上四颗 ws2812B 后小车灯光效果:

STM32_ROS_V2(9.2 更新):

(1)拿到嘉立创 PCB 后,焊接完毕效果图,测试功能无问题:

(2)STM32 程序优化(STM32 源程序已更新)

   1.Data_transition()函数放进 control 5ms 控制中断运行

   2.利用 1ms 定时器  引出 10ms 定时器变量  在主函数 while(1)中 10ms 运行 USART3_SEND();发送数据函数

   3.经测试在这种控制模式下整个系统没有任何延时  

(3)串口调试软件设置(用于模拟 ROS 端串口数据发送,控制小车运动以及校准里程计)

1.其中发送 9 帧,右边勾选 16 进制发送,自动循环发送,1ms(千万不要勾选发送新行,否则结尾发送\r\n,程序无法读出正确数据)

2.发送 9 帧中,第一帧和最后一帧为帧头帧尾,第 8 帧为(1-7)帧相加校验位,具体可查看 usart3.c 文件

STM32F407VET6 核心板(8. 2 8 更新):

(1)更新 STM32F407VET6 核心板 PCB 与原理图,将整个核心板模块化(查看工程文档)



(2)更新 STM32_ROS_V2 中 USART3 接口为 XH2.54*5PIN 形式接口,采用下图的 CH340 驱动



淘宝链接:6.0 微 yDVQXMS3wd5 微 https://m.tb.cn/h.fYZoODG  USB 转 TTL CH340 模块 STC 单片机下载线刷机板 USB 转串口 XH-5P 接口

 

STM32_ROS_V2(8.26 更新):

(1)为了保持电路整洁性,重新位置 PCB 布局,让主控板螺丝孔位与 jetson nano 孔位保持一致

(2)陀螺仪 MPU9250-->ICM20602(模拟 SPI 采集,实现 1ms 采集不卡顿  见附录代码)

(3)删除 一路舵机接口  一路步进电机接口  红外接口

(4)JTAG 下载接口改为 JINK OB 下载器(该下载器为四线   节省 PCB 布局位置,使用方法与普通 Jlink 一致,需安装 Jlink 驱动)




(5)电容电阻改为 0603 封装

(6)增加两路串口  一路为 UART4 连接 NRF 转串口模块,用于山外上位机发送波形数据调试    第二路为 UART5  闲置备用

(7)电路 2D 模型


STM32_ROS_V1:

(1)打板焊接以后效果图:



(2)编写程序,测试所有外设:



(3)无问题!组装小车,测试蓝牙控制小车移动:



(4)在树莓派上装好带 ROS 的 ubuntu 系统,编写程序,测试导航:



(5)整车底板与框架 3D 建模:

采用 Solidworks 2020 建模,将底板转为 CAD 图档,发给淘宝店家亚克力板定制,2 块 200x300cm(5cm 厚度)价格 20 元左右:



Solidworks 建模文件见附件,需平级或高版本打开。

(6)拿到定制亚克力板后,组装整车

(ROS 方案已改为 Jetson Nano 主控,因为树莓派 WIFI 连接信号较差,且无法使用 CVbridge)

整车配置:

1. 供电方式:航模动力电池(12V)

2. 结构形式:全向运动模型(麦克纳姆轮)

3. 控制方式:PC 端上位机控制、蓝牙/手柄控制、无人驾驶模式

4. 行驶电机:直流有刷电机*4,电压 6-24V、带 AB 双向增量霍尔编码器,额定转矩 3.4N*m

5. 视    觉:Logi C505e USB 摄像头 800 万像素 160 度广角摄像头

6. 惯    导:MPU9250 : 9 轴姿态:3 轴加速度、3 轴陀螺仪、3 轴磁力计,IIC/SPI 通信协议

7. 激光雷达:思岚 RPLIDAR A1,10 米测距、配套完整 USB 串口、SDK 开源工具

8. 电源模块:12V->5V 4A DC-DC 直流转换模块(Jetson Nano 供电)

9. 交互系统:TJC 7 英寸 HMI 电阻式串口屏、2W 喇叭

10. 控 制 器:STM32 复合驱动板、Jetson NANO 控制器

(1)STM32 复合驱动板参数:

处理器:STM32F407VGT6

控制器特点:2 组舵机接口、4 路驱动电机接口、2 个按钮模块、LED 灯、JLINK 接口、OLED 显示屏、内置开关、PS2 接口、HC05 蓝牙接口、HMI 串口屏接口、IMU 接口、TYPEC 供电接口

(2)Jetson Nano 控制器参数:

CPU: 四核 ARM Cortex-A57 MPCore 处理器

GPU: NVIDIA Maxwell w / 128 NVIDIA CUDA 核心

内存: 4 GB 64 位 LPDDR4

显卡: HDMI 和 DisplayPort 输出

USB: 4 个 USB 3 端口

I / O: I2C,SPI,UART 以及与 Raspberry Pi 兼容的 GPIO 接头

11. 通信系统: WIFI 通信、UART TTL、USB 串口、SOCKET、RosMsg

12. 操作系统: Ubuntu 18.04 LTS、ROS-melodic、Windows

13. 编程语言: C/C++/Python3

14. 使用软件: Keil5、Kdevelop、VS2015、Pycharm、Solidworks

15. 匹配环境: OpenCV3.4.12、Pychtorch、Pip3、Rviz、Gazebo


(7)机器人建图导航定位实验

7.1 网络控制图传小车(利用键盘控制小车移动,并将图像信息显示于 Rviz)



7.2 cartographer 算法实现建图



7.3 Dijsktra 算法实现的全局路径规划与自主导航



原理图(1 / 3)



PCB


发布于: 刚刚阅读数: 6
用户头像

芯动大师

关注

凡事预则立,不预则废! 2022-06-01 加入

某公司芯片AE工程师,嵌入式开发工程师,InfoQ签约作者,阿里云专家博主,华为云·云享专家,51CTO专家博主,腾讯云社区优秀共创官。

评论

发布
暂无评论
基于STM32F4单片机实现ROS机器人主板_机器人_芯动大师_InfoQ写作社区