kevincoooool 发表于 2019-3-8 08:36:46

请教一下机器狗的电机控制

最近在做一个使用STM32来控制机器狗,不是ROS,只是普通的玩具狗,需要控制四个电机完成正转反转跳舞的动作,控制电机的时候还要控制发出音乐,LED闪烁,呼吸灯,舵机转动等任务同时执行,并且执行一个动作串的时候,每一个任务要达到绝对的同步,这个时候问题就出现了,用Dleay来控制电机的话可以实现精准的转动时间控制,但这样就每个任务都要顺序执行,无法同步,所以请教下各位

lzg1987 发表于 2019-3-8 08:41:33

我习惯弄个类似滴答时钟来带节奏。。。

mubei 发表于 2019-3-8 08:46:51

用上RTOS;要不利用系统滴答时钟,主程序顺序扫描结构,根据标志位来判断子程序是否执行

yy625 发表于 2019-3-8 08:54:58

不使用RTOS也是可以的,状态机就行

shower.xu 发表于 2019-3-8 09:16:05

简单的并行任务,我觉得论坛里那个小小状态机就可行

lhj200304 发表于 2019-3-8 09:17:03

用状态机划分时间片

kevincoooool 发表于 2019-3-8 15:06:39

shower.xu 发表于 2019-3-8 09:16
简单的并行任务,我觉得论坛里那个小小状态机就可行

哪个麻烦能给下链接吗

go2deathward 发表于 2019-3-8 15:13:39

我最近在用一个stm32控制3个步进电机
开3个定时器,用定时器的pwm控制,一个脉冲一个步进(对驱动器,驱动器再细分)
这样可以交叉,几乎是同步的动作(为什么不说绝对,因为操作总是有顺序性的)
应该就是你的问题的一种解决方式

shower.xu 发表于 2019-3-8 15:25:03

kevincoooool 发表于 2019-3-8 15:06
哪个麻烦能给下链接吗

https://www.amobbs.com/thread-5508723-1-1.html?_dsign=7fe5c78b

kevincoooool 发表于 2019-3-8 16:49:48

shower.xu 发表于 2019-3-8 15:25
https://www.amobbs.com/thread-5508723-1-1.html?_dsign=7fe5c78b

多谢- -其实我现在就是用的这个调度

nanfang2000 发表于 2019-3-9 09:23:30

还有个思路就是把要做的各种事情做成动作表,表里存的是某一时刻要控制电机或者要亮灯的操作。做这样的表,数据和逻辑分开,你甚至可以做个动作编辑器来生成这个表,不用改程序了。游戏行业都是这么做的,动作树或者行为树了解下。这样你的程序就非常简单了,只管根据表循环做就好了

nanfang2000 发表于 2019-3-9 09:26:44

我这个方法还有个好处就是可以实现同步。要是rtos的话会需要线程同步,很麻烦

kevincoooool 发表于 2019-3-9 14:13:23

nanfang2000 发表于 2019-3-9 09:23
还有个思路就是把要做的各种事情做成动作表,表里存的是某一时刻要控制电机或者要亮灯的操作。做这样的表, ...

尝试用状态机下包含子状态机应该可以做到行为树那样的感觉

nanfang2000 发表于 2019-3-9 14:51:14

kevincoooool 发表于 2019-3-9 14:13
尝试用状态机下包含子状态机应该可以做到行为树那样的感觉

你这是顺序播放,没有条件判断,也没有状态回跳,实际不需要树结构了,弄成顺序表执行就好
页: [1]
查看完整版本: 请教一下机器狗的电机控制