项目简介
本项目用于控制履带式转向机器人,可从Velodyne VLP - 16激光雷达、Basler相机和编码器获取数据,并通过ROS2 Foxy进行数据发布。项目由主服务器(DesktopServer)、stm32f407板固件(STM32)、移动控制UI(AndroidApp)和ROS2包(AkulaPackageROS2)组成。模块分离且基于数据包通信,代码易于适配不同传感器和平台。
项目的主要特性和功能
- 实现对履带式转向机器人的有效控制。
- 可从激光雷达、相机和编码器获取数据。
- 通过ROS2 Foxy发布传感器数据。
- 提供Android端的控制界面,方便操作。
- 模块间基于数据包通信,便于适配不同传感器和平台。
- 实现STM32微控制器作为USB CDC类设备与主机的串行通信,以及使用GPIO和定时器模块的串口通信。
- 具备USB和串口的中断处理机制,保障数据传输的准确性和实时性。
- 对USB和串口通信资源进行动态管理和分配,支持多任务并发通信。
安装使用步骤
依赖安装
sudo apt update
确保安装以下依赖:
1. libyaml-cpp-dev
2. dSocket(已作为引用包含)
3. cmake(版本 >= 3.16)
4. gcc, g++(版本 >= 9.3.0)
5. arm-none-eabi-g++, arm-none-eabi-gcc(版本 >= 9.2.1)
6. (可选) basler-ros2-driver(若需要Basler相机)
7. (可选) velodyne(若需要激光雷达的ros2节点)
各模块构建
DesktopServer(主服务器)
- 安装依赖:
sudo apt install build-essential cmake libyaml-cpp-dev
- 构建项目:
cd path/to/AkulaControl/DesktopServer mkdir build cd build cmake.. make -j
STM32(stm32板固件)
方法a:使用STM32CubeIDE与STM32CubeMX构建并烧录硬件。
方法b:
1. 安装ARM编译器:
sudo apt install gcc-arm-none-eabi
2. 构建项目:
cd path/to/AkulaControl/STM32
mkdir build
cd build
cmake..
make -j
3. 使用工具将固件上传到stm32板。
AndroidApp(Android端控制界面)
方法a:使用Android Studio构建项目,修改local.properties
文件提供Android SDK路径,按说明对应用签名。
方法b:
1. 安装JDK:
sudo apt install openjdk-8-jdk
2. 构建项目:
cd path/to/AkulaControl/AndroidApp
./gradlew assembleRelease
3. 按说明对应用签名。
AkulaPackageROS2(传感器和数据记录)
- 创建软链接到ROS2环境:
ln -s /global/path/to/AkulaPackageROS2 /global/path/to/env/src/akula_package
- (可选) 若使用Basler相机,复制仓库并创建软链接:
ln -s /global/path/to/basler_ros2_driver /global/path/to/env/src/basler_ros2_driver
- (可选) 若使用Velodyne激光雷达,复制
ros2
分支并创建软链接:ln -s /global/path/to/velodyne /global/path/to/env/src/velodyne
- 使用colcon构建:
colcon build --symlink-install
系统设置
- 将固件下载到stm32f407板。
- 将Android应用下载到智能手机。
- 在
config
目录中,根据需要修改control.yaml
文件。 - 启动
DesktopServer
可执行文件。 - 使用micro - USB线将stm32f407连接到PC,若板子无外部电源,还需用mini - USB线从PC供电。
- 打开Android应用,下拉顶部滑块,填写PC在无线网络中的地址,点击“Request”按钮。
- 若一切正常,会看到绿色和黄色虚拟LED处于启用状态,此时可控制机器人。
STM32通信项目额外步骤
准备硬件
确保拥有STM32微控制器开发板(如STM32F4系列),且USB接口和串口接口连接正常。
环境配置
安装STM32CubeIDE开发环境,包括STM32 HAL库和USB设备库,配置项目的工作目录和工具链。
项目导入
在STM32CubeIDE中创建新的STM32项目,导入项目文件(主程序文件、驱动库文件和配置文件)。
代码编辑
根据需要编辑代码,如更改串口通信的波特率、USB设备的描述符等,实现自定义的回调函数和数据处理逻辑。
编译和调试
使用STM32CubeIDE进行项目编译,使用调试器将编译后的程序下载到STM32微控制器中,通过USB或串口连接进行通信测试。
运行和测试
连接STM32微控制器到主机,运行程序,使用主机的串行通信工具(如串口助手)与STM32设备进行通信,检查数据的发送和接收。
问题调试
若遇到通信问题或程序错误,使用STM32CubeIDE的调试功能进行问题定位和解决,检查代码逻辑和配置参数。
注意:项目中的代码和配置文件需要根据实际的硬件和开发环境进行适当的修改和调整。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】