# 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个关节电机的转动角度
### 补充说明
- 目前尚未开发全部功能,等待后续扩展开发
###