# TspRosCar
**Repository Path**: hyg2021/TspRosCar
## Basic Information
- **Project Name**: TspRosCar
- **Description**: Ros小车
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 8
- **Created**: 2026-04-03
- **Last Updated**: 2026-04-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## TspRosCar:TaishanPi Ros Car

本项目是基于泰山派开发板制作的ROS小车,具有扫描建图、自动导航、物体跟随等功能。
**功能演示视频**:[TspRosCar功能演示](https://www.bilibili.com/video/BV1rKw5zaEac/)
**软件资料链接**:[TspRosCar](https://gitee.com/imhaozi/TspRosCar)
**硬件资料链接**:[泰山派ROS小车](https://oshwhub.com/32_haozi/taishan-pie-ros-trolley)
## 1. 项目说明
### 1.1 Hardware
Hardware文件夹内此项目用到的电路的原理图和PCB文件,使用**立创EDA专业版**进行设计。
主要包含两块板子:
* 下位机PCB:提供小车底盘控制电路;并为小车底盘提供支撑;
* 上位机PCB:引出泰山派控制接口;并为激光雷达提供支撑;
### 1.2 Firmware
Firmware中提供了上面两块板子的固件源码,以及QT上位机工程源码,主要包含以下三个工程:
* RosCarBase:小车底盘。使用STM32单片机作为主控、两个N20编码电机作为驱动,完成底盘的速度功能功能;小车底盘对外通过串口进行通信;
* RosCarWs:ROS应用。泰山派作为小车的核心控制单元,通过串口3获取雷达数据、串口5与底盘进行数据交互。泰山派Ubuntu20系统运行ROS程序,计算小车需要的运行速度后下发小车进行控制;
* RosCarApp:上位机UI。在UI界面中,通过WebSocket与泰山派中的ROS应用进行通信,实现小车的状态显示、模式控制、地图管理等功能。
* TaishanPi:添加串口5后的内核。
### 1.3 Software
编译好的上位机应用。
### 1.4 Model
文件夹里是项目中用到的所有结构件的3D模型文件,可以用于3D打印。
### 1.5 Docs
相关的参考文件,包括雷达手册、芯片手册等。
## 2. 硬件设计
电路主要包含两部分设计,设计为两块PCB:
* 下位机:底盘控制电路
* 上位机:泰山派接口扩展
### 2.1 底盘控制电路
底盘控制电路主要包含以下部分:电源电路、充电电路、电机驱动部分、串口通信、状态灯显示。
充电电路:使用TypeC作为电源输入接口,使用CS5090EA或SCS5090EA作为2串锂电池充电管理芯片,将5V电压升高到8.4V进行充电。

电源电路:使用ME3118电源芯片将锂电池电压降低到5V给电机和泰山派进行供电,最大可提供3A驱动电流,满足本项目需求;使用经典ME6211C33M5G将5V电源降低到3.3V给STM32单片机进行供电,最大0.5A电流足以满足STM32要求。

电机驱动电路:使用经典TB6612FNG对两个编码器电机进行驱动,配合PID可完成速度控制和反馈,给上位机提供里程计计算能力。

其他电路:提供程序下载口、通信接口(上位机通信)、外部供电(备用)、状态指示灯(充电状态和通信状态指示);

### 2.2 上位机控制电路
上位机接口扩展较为简单,主要引出串口、提供风机和雷达控制电路。通过IO高低电平控制雷达和风机的供电。

## 3. 结构设计
结构设计效果如下图所示。

### 3.1 物料准备
| 物料 | 厂家 | 价格 |
| ------------------------------------------------------------ | ----------------------------- | ------- |
| 泰山派套装 | 立创商城 | 188 |
| M1C1_Mini雷达 | 动力工具DIY小站 | 43.8 |
| OV9732摄像头 | 仁恒光电摄像头厂家 | 47.66 |
| N20编码器电机(6v、300RPM)、万向轮 | 必晖数码经营部 | 43 |
| 散热风扇(20*20*06MM 5v 2线 A型插头侧吹风) | JSDYFAN旗舰店 | 8.7 |
| 18650平头3500mAh电池 * 2 | NUOXIANGNX旗舰 | 26.7 |
| PCB_BOM | 立创商城/优信电子 | 30 |
| M3单头铜柱20mm * 4、
M3单头铜柱12mm * 2、
M3单头铜柱8mm * 6、
M3螺丝螺母 * 5、
M2自攻螺丝6mm * 2(固定摄像头)、
M1.4螺丝12mm和螺母 * 2(固定风扇) | - | 10 |
| 外壳 | 嘉立创纸盒裁剪 / 嘉立创3D打印 | 0/20 |
| **共计** | - | 400-500 |
PS:为了减少打印件的硬件成本,此处设计大多采用铜柱支撑,外壳主要起到对摄像头的支撑作用和美观作用。
### 3.2 安装步骤
1. 底盘组装
准备如下材料,焊接完成的底板、两个万向轮、两个N20电机及端子线(固定的螺丝是买轮子送的)。**注意**:这里电机上的接线端子,原有的是卧贴的,需要用烙铁拆掉改成和底板上的一样的立贴的 。

将万向轮和电机固定到底板,固定完成后如下图所示。

2. 上位机组装
准备如下材料,泰山派开发板、焊接完成的底板、雷达、M3单头铜柱12mm * 2、M3单头铜柱20mm * 4、M3单头铜柱8mm * 6、M3螺母7个。

将铜柱和螺丝按照下图中固定,
1. 泰山派四个螺丝孔下方使用4个20mm铜柱,上方使用两个M3螺丝和两个12mm铜柱固定;
2. 风扇使用两个M1.4长12mm的螺丝和螺母固定在上位机板子上;
3. 雷达三个螺丝孔上下分别固定3个8mm铜柱。

按照泰山派在下、上位机板在中间、雷达在上的顺序组装,组装完成后如下图所示。

3. 外壳组装
准备如下材料,刚刚组装好的底板和上位机板、3D打印外壳、摄像头、M2自攻螺丝6mm * 2、自制USB转SH1.0_5p线大约20cm(使用USB焊接壳子和SH1.0单头线制作 ,买摄像头也会送一根但是很长需要自己剪短点)、M3螺丝 * 4、M3沉头螺丝 * 3。

连接底板和上位机板
1. 使用GH1.25_4P线连接底板和上位机板,将泰山派天线插上,塞到雷达和上位机板子之间;
2. 使用四个M3螺丝,从底板底部连接上位机板下方的铜柱,将上位机板和底板固定;
3. 将USB摄像头使用M2自攻螺丝固定到外壳上,并将USB插头连接泰山派USB口。


将外壳装上,并使用3个M3沉头螺丝固定外壳到雷达的铜柱上即可组装完成,如下图所示。

另:
初代机用嘉立创的纸壳子做的外壳,这是他的来时路。

## 4. 软件设计
### 4.1 软件架构
软件主要功能的核心架构如下图所示,从上到下分别为QT上位机、ROS程序、底盘下位机程序。*软件可能维护更改,以实际代码为准。*
1. 导航、建图等核心功能主要使用了movebase、gmapping等开源软件包,主要需要自己配置参数;
2. 底盘控制、电量显示、摄像头和雷达数据自己实现后对接软件包。
3. QT上位机根据需求功能调用不同的接口即可。

所有功能对应UI显示的各个部分:
1. 状态显示:通过上位机UI进行交互,实时显示小车当前获取到的地图、小车位置、摄像头画面、电池电压等信息;
2. 模式控制:UI中可选目标跟随控制、自动导航控制、手动遥控控制模式;
3. 地图管理:UI包含地图管理功能,如创建、删除、使用、保存、获取地图列表等功能;
4. 功耗管理:摄像头、雷达设备可单独控制开关,降低不使用时的功耗。

### 4.2 软件部署
#### 4.2.1 TaishanPi
1. 官方资料中下载Ubuntu20系统镜像`ubuntu20.04_hdmi_20231130_update.img`,按照官方教程烧录;
2. 下载资料中提供的`boot.img`文件,使能串口5;
3. 分配空闲空间;
4. 安装SSH、ROS;
5. 添加串口权限、IO权限、摄像头权限;
> 系统设置教程参考 Docs/泰山派系统设置.pdf
#### 4.2.2 RosCarBase
使用Keil打开,编译后烧录到底盘STM32中;
#### 4.2.3 RosCarWs
1. 程序中依赖多个软件包,分别安装即可(首次使用安装)
1. 建图:`sudo apt install ros-noetic-gmapping`
2. 自动探索建图:`sudo apt install ros-noetic-explore-lite`
3. websocket通信:`sudo apt install ros-noetic-rosbridge-suite`
4. 地图加载和保存:`sudo apt install ros-noetic-map-server`
1. 若安装报错先安装依赖,第一个推荐方案拒绝,使用第二个推荐方案:`sudo aptitude install libsdl1.2-dev libsdl-image1.2-dev`
5. 导航:`sudo apt-get install ros-noetic-navigation`
5. teb规划器:`sudo apt install ros-noetic-teb-local-planner`
6. 其他:按照上述顺序进行安装,若安装报错自行搜索
2. 将Firmware中的`RosCarWs`文件夹复制到泰山派中;
~~~ sh
# 源码放到开发板
lckfb@MiWiFi-R3GV2-srv:~$ ls
Desktop Documents Downloads Music Pictures Public RosCarWs Templates Videos
lckfb@MiWiFi-R3GV2-srv:~$ cd RosCarWs/
# 编译
lckfb@MiWiFi-R3GV2-srv:~/RosCarWs$ catkin_make
# 添加源
lckfb@MiWiFi-R3GV2-srv:~/RosCarWs$ source devel/setup.bash
~~~
3. 运行程序前首先执行一下IO权限设置的脚本,否则无法正常打开雷达和风扇
~~~ sh
# 添加IO权限
lckfb@MiWiFi-R3GV2-srv:~/RosCarWs$ chmod 777 src/launch_pkg/launch/setup_gpio_permissions.sh
lckfb@MiWiFi-R3GV2-srv:~/RosCarWs$ sudo ./src/launch_pkg/launch/setup_gpio_permissions.sh
尝试导出 GPIO 36...
GPIO 36 已导出并设置权限。
尝试导出 GPIO 98...
GPIO 98 已导出并设置权限。
完成!现在普通用户可以操作 GPIO 36 和 98。
# 如果报错
使用vi打开,然后以下设置保存 因为这个文件可能在windows上打开过
:set ff=unix
~~~
4. 运行命令如下`roslaunch launch_pkg all.launch`,然后就可以在上位机中进行连接了
#### 4.2.4 RosCarApp
使用QT打开并运行,也可以直接运行打包好的上位机。
> 泰山派和运行上位机的电脑需要在一个网络下运行。
### 4.3 参数描述
小车一般无需具体的代码修改。
主要硬件相关参数修改如下,位于launch_pkg中的launch文件

目标跟随主要参数修改如下,位于camera_pkg中的launch文件

其他参数一般无需修改。
## 参考资料
感谢各位开源资料贡献者对此项目的帮助,项目开发过程中主要用到的参考资料如下:
泰山派官方资料:https://wiki.lckfb.com/zh-hans/tspi-rk3566/
ROS环境搭建:https://fishros.com/
ROS学习教程:https://www.bilibili.com/video/BV1BP4y1o7pw
雷达模型参考:https://makerworld.com.cn/zh/models/1664914-x2ji-guang-lei-da-biao-zhun-stepwen-jian-yi-ji-3dd#profileId-1827959
小车结构参考:https://oshwhub.com/lw95/newbot
Linux/安卓系统编译知识:公众号【A-花开堪折】