舵机仿蜘蛛小型四足机器人应用程序

Gitee

https://gitee.com/WangXi_Chn/xspider

应用版本V1.0

应用功能

  • 支持USB串口终端与PC通信
  • 支持LED频闪状态显示
  • 支持OLED信息显示
  • 支持12路舵机驱动与命令行单独调试
  • 支持与手机蓝牙通信,手机端SPP遥控

开发环境

应用特性

  • 模块化设计自由裁剪
  • 多线程工作
  • 手机蓝牙异步通信遥控
  • 目前支持前进、后退、顺时针、逆时针转动四种移动动作
  • 支持抬手打招呼,睡眠,直立三种特殊动作

开发进程

  • 完成机器人骨架结构设计和制作,对关节电机编号
  • 完成机器人电控PCB绘制和制作
  • 移植RT-Thread操作系统模板
  • 完成env配置,外设配置、管脚分配
  • 从模块库中移植所需模块
  • 设计单独的舵机调试程序、终端指令 ```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) {

  1. rt_uint32_t num = atoi(argv[1]);
  2. module_steering.Method_SetPulse(&module_steering,num*1000);

} MSH_CMD_EXPORT(SteerPulse , SteerPulseUs (500-2500)us);

void SteerAngle(int argc,char **argv) {

  1. rt_uint16_t Angle = atoi(argv[1]);
  2. 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);

  1. return 0;

}

  1. - 通过调试程序测得舵机的工作范围、有效频率区间等参数
  2. - 参数测试结果可见[https://www.yuque.com/wangxi_chn/ggi748/pel2k1](https://www.yuque.com/wangxi_chn/ggi748/pel2k1)
  3. - 调整电机安装,以电机90度转角为默认位置(电机将以绝对位置驱动)
  4. - 将程序面向对象化(结构体)建立实例`APP_XSpider`
  5. - 在方法`Application->Method_Init`中完成对各个模块的初始化,包括电机参数配置
  6. - 构建四个线程
  7. - `XSpiderLed_entry` 系统状态灯工作线程
  8. - `XSpiderOrderUpdate_entry` 遥控指令获取与更新线程
  9. - `XSpiderControl_entry` 遥控指令执行线程
  10. - `XSpiderAction_entry` 动作执行线程
  11. - 运行逻辑可概括为
  12. - 手机通过SPP发出遥控指令 -> 板上蓝牙模块获取指令 -> 程序切换动作标签 -> 根据标签执行相应的动作循环
  13. - 参照模拟状态机工作形式(考虑后续优化状态机结构[https://www.yuque.com/wangxi_chn/qaxke0/dklmgb](https://www.yuque.com/wangxi_chn/qaxke0/dklmgb))
  14. - 动作调试
  15. - 对机器人的四肢,即全部12个电机的动作封装为一个方法`Application->Method_JointPlace`
  16. - 方法绑定函数如下
  17. ```c
  18. void APP_XSpiderJointPlace(APP_XSPIDER *Application,rt_uint16_t *angle)
  1. - 参数`APP_XSPIDER *Application`为应用实例的回传指针
  2. - 参数`rt_uint16_t *angle`为长度12的数组指针,填入12个关节电机的转动角度

补充说明

  • 目前尚未开发全部功能,等待后续扩展开发