
泰山派ROS小车
简介
基于泰山派开发板开发的一款ROS导航机器人。使用较低的成本完成搭建,可以作为机器人编程学习、算法验证的绝佳工具。
简介:基于泰山派开发板开发的一款ROS导航机器人。使用较低的成本完成搭建,可以作为机器人编程学习、算法验证的绝佳工具。开源协议
:CC BY-NC 3.0
描述
TspRosCar:TaishanPi Ros Car

本项目是基于泰山派开发板制作的ROS小车,具有扫描建图、自动导航、物体跟随等功能。
功能演示视频:TspRosCar功能演示
软件资料链接:TspRosCar
硬件资料链接:泰山派ROS小车
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 |
| 散热风扇(202006MM 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 安装步骤
- 底盘组装
准备如下材料,焊接完成的底板、两个万向轮、两个N20电机及端子线(固定的螺丝是买轮子送的)。注意:这里电机上的接线端子,原有的是卧贴的,需要用烙铁拆掉改成和底板上的一样的立贴的 。

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

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

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

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

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

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


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

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

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

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

4.2 软件部署
4.2.1 TaishanPi
- 官方资料中下载Ubuntu20系统镜像
ubuntu20.04_hdmi_20231130_update.img,按照官方教程烧录; - 下载资料中提供的
boot.img文件,使能串口5; - 分配空闲空间;
- 安装SSH、ROS;
- 添加串口权限、IO权限、摄像头权限;
> 系统设置教程参考 Docs/泰山派系统设置.pdf
4.2.2 RosCarBase
使用Keil打开,编译后烧录到底盘STM32中;
4.2.3 RosCarWs
-
程序中依赖多个软件包,分别安装即可(首次使用安装)
- 建图:
sudo apt install ros-noetic-gmapping - 自动探索建图:
sudo apt install ros-noetic-explore-lite - websocket通信:
sudo apt install ros-noetic-rosbridge-suite - 地图加载和保存:
sudo apt install ros-noetic-map-server- 若安装报错先安装依赖,第一个推荐方案拒绝,使用第二个推荐方案:
sudo aptitude install libsdl1.2-dev libsdl-image1.2-dev
- 若安装报错先安装依赖,第一个推荐方案拒绝,使用第二个推荐方案:
- 导航:
sudo apt-get install ros-noetic-navigation - teb规划器:
sudo apt install ros-noetic-teb-local-planner - 其他:按照上述顺序进行安装,若安装报错自行搜索
- 建图:
-
将Firmware中的
RosCarWs文件夹复制到泰山派中;# 源码放到开发板 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 -
运行程序前首先执行一下IO权限设置的脚本,否则无法正常打开雷达和风扇
# 添加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 -
运行命令如下
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://oshwhub.com/lw95/newbot
Linux/安卓系统编译知识:公众号【A-花开堪折】
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










