# XSpider **Repository Path**: WangXi_Chn/xspider ## Basic Information - **Project Name**: XSpider - **Description**: X-Spider Robot - **Primary Language**: C - **License**: BSD-3-Clause - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-12-16 - **Last Updated**: 2021-08-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: RT-Thread ## README # 舵机仿蜘蛛小型四足机器人应用程序 ## Gitee
[https://gitee.com/WangXi_Chn/xspider](https://gitee.com/WangXi_Chn/xspider) ## 应用版本V1.0 ### 应用功能 - 支持USB串口终端与PC通信 - 支持LED频闪状态显示 - 支持OLED信息显示 - 支持12路舵机驱动与命令行单独调试 - 支持与手机蓝牙通信,手机端SPP遥控 ### 开发环境 - CubeMX - MDK5 IDE - STM32F103芯片 - RT-Thread操作系统 - 面向对象模块接口设计 - BT08B蓝牙模块 - 0.91寸OLED显示屏 - 项目基于硬件版本1.0 - [https://www.yuque.com/wangxi_chn/ggi748/qqwgcg](https://www.yuque.com/wangxi_chn/ggi748/qqwgcg) - 基于机器人骨架结构1.0 - [https://www.yuque.com/wangxi_chn/ggi748/hxf5xk](https://www.yuque.com/wangxi_chn/ggi748/hxf5xk) ### 应用特性 - 模块化设计自由裁剪 - 基于编写的RT-Thread模块库 - [https://gitee.com/WangXi_Chn/RttOs_ModuleLib](https://gitee.com/WangXi_Chn/RttOs_ModuleLib) - 多线程工作 - 手机蓝牙异步通信遥控 - 目前支持前进、后退、顺时针、逆时针转动四种移动动作 - 支持抬手打招呼,睡眠,直立三种特殊动作 ​
### 开发进程 - 完成机器人骨架结构设计和制作,对关节电机编号 - 完成机器人电控PCB绘制和制作 - 移植RT-Thread操作系统模板 - 完成env配置,外设配置、管脚分配 - 管脚分配见硬件方案 [https://www.yuque.com/wangxi_chn/ggi748/qqwgcg](https://www.yuque.com/wangxi_chn/ggi748/qqwgcg) - 从模块库中移植所需模块 - 设计单独的舵机调试程序、终端指令 ```c MODULE_STEERING module_steering = { .Property_SteerType = SG90, .Property_PwmDevName = "pwm2", .Property_PWM_CHANNEL = 1, .Property_PulseMINus = 500, .Property_PulseMAXus = 2200, .Property_AngleMAX = 180, .Property_InitAngle = 90 }; void SteerPulse(int argc,char **argv) { rt_uint32_t num = atoi(argv[1]); module_steering.Method_SetPulse(&module_steering,num*1000); } MSH_CMD_EXPORT(SteerPulse , SteerPulseUs (500-2500)us); void SteerAngle(int argc,char **argv) { rt_uint16_t Angle = atoi(argv[1]); module_steering.Method_SetAngle(&module_steering,Angle); } MSH_CMD_EXPORT(SteerAngle , SteerAngle (0-MAX)); int main(void) { Steer Param Test-Part------------------------------------------ Module_Steering_Config(&module_steering); module_steering.Method_Enable(&module_steering); return 0; } ``` - 通过调试程序测得舵机的工作范围、有效频率区间等参数 - 参数测试结果可见[https://www.yuque.com/wangxi_chn/ggi748/pel2k1](https://www.yuque.com/wangxi_chn/ggi748/pel2k1) - 调整电机安装,以电机90度转角为默认位置(电机将以绝对位置驱动) - 将程序面向对象化(结构体)建立实例`APP_XSpider` - 在方法`Application->Method_Init`中完成对各个模块的初始化,包括电机参数配置 - 构建四个线程 - `XSpiderLed_entry` 系统状态灯工作线程 - `XSpiderOrderUpdate_entry` 遥控指令获取与更新线程 - `XSpiderControl_entry` 遥控指令执行线程 - `XSpiderAction_entry` 动作执行线程 - 运行逻辑可概括为 - 手机通过SPP发出遥控指令 -> 板上蓝牙模块获取指令 -> 程序切换动作标签 -> 根据标签执行相应的动作循环 - 参照模拟状态机工作形式(考虑后续优化状态机结构[https://www.yuque.com/wangxi_chn/qaxke0/dklmgb](https://www.yuque.com/wangxi_chn/qaxke0/dklmgb)) - 动作调试 - 对机器人的四肢,即全部12个电机的动作封装为一个方法`Application->Method_JointPlace` - 方法绑定函数如下 ```c void APP_XSpiderJointPlace(APP_XSPIDER *Application,rt_uint16_t *angle) ``` - 参数`APP_XSPIDER *Application`为应用实例的回传指针 - 参数`rt_uint16_t *angle`为长度12的数组指针,填入12个关节电机的转动角度 ### 补充说明 - 目前尚未开发全部功能,等待后续扩展开发 ###