【XSpider】程序设计
舵机仿蜘蛛小型四足机器人应用程序Giteehttps://gitee.com/WangXi_Chn/xspider应用版本V1.0应用功能支持USB串口终端与PC通信支持LED频闪状态显示支持OLED信息显示支持12路舵机驱动与命令行单独调试支持与手机蓝牙通信,手机端SPP遥控开发环境CubeMXMDK5 IDESTM32F103芯片RT-Thread操作系统面向对象模块接口设计BT08B蓝牙模块
·
舵机仿蜘蛛小型四足机器人应用程序
Gitee
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
- 基于机器人骨架结构1.0
应用特性
- 模块化设计自由裁剪
- 基于编写的RT-Thread模块库
- https://gitee.com/WangXi_Chn/RttOs_ModuleLib
- 多线程工作
- 手机蓝牙异步通信遥控
- 目前支持前进、后退、顺时针、逆时针转动四种移动动作
- 支持抬手打招呼,睡眠,直立三种特殊动作
开发进程
- 完成机器人骨架结构设计和制作,对关节电机编号
- 完成机器人电控PCB绘制和制作
- 移植RT-Thread操作系统模板
- 完成env配置,外设配置、管脚分配
- 从模块库中移植所需模块
- 设计单独的舵机调试程序、终端指令
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 <pulse>(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 <Angle>(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
- 调整电机安装,以电机90度转角为默认位置(电机将以绝对位置驱动)
- 将程序面向对象化(结构体)建立实例
APP_XSpider
- 在方法
Application->Method_Init
中完成对各个模块的初始化,包括电机参数配置 - 构建四个线程
XSpiderLed_entry
系统状态灯工作线程XSpiderOrderUpdate_entry
遥控指令获取与更新线程XSpiderControl_entry
遥控指令执行线程XSpiderAction_entry
动作执行线程
- 运行逻辑可概括为
- 手机通过SPP发出遥控指令 -> 板上蓝牙模块获取指令 -> 程序切换动作标签 -> 根据标签执行相应的动作循环
- 参照模拟状态机工作形式(考虑后续优化状态机结构https://www.yuque.com/wangxi_chn/qaxke0/dklmgb)
- 动作调试
- 对机器人的四肢,即全部12个电机的动作封装为一个方法
Application->Method_JointPlace
- 方法绑定函数如下
- 对机器人的四肢,即全部12个电机的动作封装为一个方法
void APP_XSpiderJointPlace(APP_XSPIDER *Application,rt_uint16_t *angle)
- 参数`APP_XSPIDER *Application`为应用实例的回传指针
- 参数`rt_uint16_t *angle`为长度12的数组指针,填入12个关节电机的转动角度
补充说明
- 目前尚未开发全部功能,等待后续扩展开发
更多内容
- 语雀
https://www.yuque.com/wangxi_chn
欢迎关注公众号,交流每日所见所想、学习经验
更多推荐
已为社区贡献1条内容
所有评论(0)