# 工程机械臂与底盘 **Repository Path**: ibst/engineering-robotic-arm ## Basic Information - **Project Name**: 工程机械臂与底盘 - **Description**: 工程机械臂工程+底盘工程SDK,通过双层CAN总线通信,本项目论文已被第38届中国控制与决策会议 (CCDC 2026) 接收 - **Primary Language**: Unknown - **License**: MIT-0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2025-09-27 - **Last Updated**: 2026-04-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: 机械臂, RoboMaster, 麦克纳姆轮, 机器人, stm32 ## README

工程机器臂+底盘 机器人SDK

🏆 本项目论文已被第38届中国控制与决策会议 (CCDC 2026) 接收

[![IDE](https://img.shields.io/badge/Keil-V6.18-blue.svg)](https://www.keil.com/) [![Language](https://img.shields.io/badge/Language-C-orange.svg)]() [![Honor](https://img.shields.io/badge/RoboMaster-Fourth%20-gold.svg)]() [![Conference](https://img.shields.io/badge/CCDC%202026-Accepted-green.svg)]() [![License](https://img.shields.io/badge/License-GPL%203.0-red.svg)](https://opensource.org/licenses/GPL-3.0)
## 1. 项目简介 本项目是专门针对 RoboMaster 赛场工程机器人 开发的底层固件。不同于竞速型兵种,工程机器人强调重载控制的稳定性与多关节协同的精准度。 系统深度集成了达妙 (DM) 电机 MIT 控制协议、三轴机械臂逆运动学 (Inverse Kinematics) 以及基于电流反馈的吸盘自动初始化逻辑,旨在提供一套从感知到执行的完整闭环方案。 --- ## 2. 核心算法与模块详解 ### 2.1 机械臂逆运动学引擎 (`arm.c` / `joint.c`) * **坐标系控制**:通过几何法实现 3-DoF 机械臂逆解。用户只需通过遥控器下发笛卡尔坐标系的增量 $(dX, dY, dZ)$,系统自动解算各关节目标角度 $\theta$。 * **计算逻辑**: * 通过 $atan2f(Y, X)$ 确定基座偏航角。 * 利用余弦定理通过 $L_1, L_2$ 臂长及目标点距离,解算大臂与小臂的俯仰角。 * **安全限位**:内置 `BACKARM_LIM` 与 `FOREARM_LIM` 软限位,防止机械臂自激或发生机械碰撞。 ### 2.2 混合动力驱动层 (`dm_motor.c` / `rm_motor.c`) * **达妙 MIT 模式**:驱动主关节电机。支持下发位置、速度以及力矩增益 $K_p, K_d$。该模式提供了极高的控制带宽,能让机械臂在抓取瞬间表现出类似“弹簧”的柔性阻尼。 * **大疆 PID 控制**:驱动底盘与末端执行器。采用位置-速度双环 PID,确保底盘平移的稳健性。 ### 2.3 智能末端吸盘 (`sucker.c`) * **电流辅助寻位**:系统通过实时监测 `M3508` 电机的反馈电流(阈值 6500mA)。当吸盘触碰机构边界时,电流瞬间激增,系统自动触发 `sucker_init_flag` 并记录物理零点。 * **自动化归位**:一键完成 Roll 与 Pitch 轴的校准。 ### 2.4 全向底盘解算 (`omni_wheel_cal.c`) * **运动学模型**:支持 4 轮全向轮布局。通过 `Robot_Velocity_To_Wheel_Speed` 函数将三自由度速度 $(V_x, V_y, V_w)$ 映射至轮组转速。 * **坐标系切换**:支持通过 `World_To_Self` 将世界坐标系下的指令转化为机身坐标系指令,配合 IMU 实现全场定向。 --- ## 3. 软件架构设计 项目采用**分层解耦架构**,大幅提升了代码的可维护性: | 层级 | 涉及文件 | 职能描述 | | :--- | :--- | :--- | | **应用层 (App)** | `joint.c`, `sucker.c`, `interface.c` | 管理业务流程、状态机切换、遥控器逻辑映射。 | | **算法层 (Alg)** | `arm.c`, `omni_wheel_cal.c`, `pid.c` | 处理高密度的数学运算,如逆解、坐标转换、PID 闭环。 | | **驱动层 (Drv)** | `dm_motor.c`, `rm_motor.c`, `bmi088.c` | CAN 帧封装、SPI 传感器通讯协议解析。 | | **硬件层 (BSP)** | `bsp_can.c`, `bsp_tim.c`, `dbus.c` | 底层硬件外设配置、中断服务函数维护。 | --- ## 4. 硬件参数规范 | 模块 | 硬件型号 | 挂载总线 | ID 范围 | | :--- | :--- | :--- | :--- | | **主控板** | STM32F407IGHx | - | RoboMaster C型主控 | | **关节电机** | 达妙 DM4340 | CAN1 | 0x04, 0x05, 0x06 | | **底盘电机** | 大疆 M3508 | CAN2 | 0x201 - 0x204 | | **吸盘电机** | 大疆 M3508/2006 | CAN1 | 0x201, 0x202 | | **传感器** | 博世 BMI088 | SPI1 | - | --- ## 5. 操作与调试手册 ### 5.1 编译建议 * **环境**:Keil uVision 5.3x。 * **编译器**:建议使用 **ARM Compiler V6** 以获得最佳浮点运算效率。 * **注意**:必须在项目中开启 `FPU` 硬件支持,否则 `arm.c` 中的三角函数运算会导致 CPU 溢出。 ### 5.2 状态切换 (遥控器 S1) 1. **位置 1 (UP)**:安全模式,电机无输出。 2. **位置 2 (MID)**:**机械臂调试模式**。通过右摇杆控制末端 $(X, Z)$ 坐标。此时吸盘执行自检逻辑。 3. **位置 3 (DOWN)**:**底盘交互模式**。通过左摇杆控制底盘全向平移。 ### 5.3 故障排查 * **电机保护**:若电机反馈电流持续超过限值,系统会自动降低输出力矩以保护齿轮箱。 * **通讯掉线**:检查 `bsp_can.c` 中的 `filter` 配置。若 CAN2 无数据,确认 ID 掩码是否匹配。 --- ## 6. 联系方式
北京交通大学 ![Institution](https://img.shields.io/badge/院校-北京交通大学-blue) ![Lab](https://img.shields.io/badge/单位-先进控制研究所-red) ![Team](https://img.shields.io/badge/战队-BNGU-lightgrey) ![Work](https://img.shields.io/badge/职业-小米%20嵌入式-green?logo=xiaomi) ![Author](https://img.shields.io/badge/作者-李维中-orange) ![QQ](https://img.shields.io/badge/QQ-3296626485-lightgrey?logo=tencent-qq) ![WeChat](https://img.shields.io/badge/微信-iBeaconStudio-brightgreen?logo=wechat)