OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4929|回复: 3

状态机设计求助有兴趣的进来看看

[复制链接]

3

主题

13

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2015-1-29
在线时间
1 小时
发表于 2015-4-8 17:01:20 | 显示全部楼层 |阅读模式
5金钱
我有一个模型,想用状态机去实现它。感觉总是不尽如人意。希望有兴趣的一起讨论一下。
模型:
机器人控制:
机器人有的动作:
     1.眼镜的睁开与闭合(通过开关量控制  1为睁开 0为闭合,不可以暂停)
    2.张嘴,闭嘴           (通过开关量控制  1为张嘴 0为闭嘴,不可以暂停
    2.挥手 (一个单次长动作,时间较长,挥手一次之后,  自动停止,可以暂停,也意味着停止,不可恢复)
    3.行走(一个单次长动作,时间较长,行走一段距离之后,自动停止,可以暂停,也意味着停止,不可恢复)
    4.跳跃  (一个单次短动作,时间很短,跳跃,自动停止,不可以暂停)
    5.舞蹈(这个比较特殊,时间较长,挥手->行走->跳跃,按顺序执行,全部执行完成后,就自动停止,可以暂停(跳跃时不可),可以再次按跳舞健恢复)

你拥有的命令:
    1.睁眼,闭眼
    2.张嘴,闭嘴
    3.挥手
    4.行走
    5.跳跃
    6.跳舞
    7.暂停

运动指的是:行走,挥手,跳跃,跳舞

动作之间的制约关系:
  1.跳跃,挣眼,闭眼,张嘴,闭嘴 都不可以暂停
  2 行走暂停=提前结束行走 ;挥手暂停=提前结束挥手 ; 跳舞暂停可以按跳舞按键重新启动
  3.跳舞条件:眼睛必须睁开 ,嘴巴
必须闭合,且无其他运动,来了跳舞命令
  5.行走条件:眼睛必须睁开,嘴巴无所谓,且无其他运动,来了行走命令
  6.跳跃条件:眼睛必须睁开,嘴巴无所谓,且无其他运动,来了跳跃命令
  7.挥手条件:眼睛必须睁开,嘴巴无所谓,且无其他运动,来了挥手命令
  8.睁眼闭眼条件:空闲的时候,嘴巴无所谓。来了睁闭眼命令
  9.张嘴闭嘴条件:不是跳舞,跳跃(不允许和任何动作同时发生)的时候都可以,(意味着:空闲,行走,挥手,睁眼,闭眼的时候都可以)。来了张闭嘴命令


请教一下,如何分状态,以及状态如何跳转。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-8 22:34:28 | 显示全部楼层
楼主直接把一个工程拿来提问,也算是彻底。
建议:一个个去实现。见招拆招吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2015-4-8 23:12:25 | 显示全部楼层
用pt状态机应模拟多线程应该可以实现。
业余程序玩家。
回复

使用道具 举报

0

主题

133

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2014-12-21
在线时间
1 小时
发表于 2015-4-9 09:17:11 | 显示全部楼层
if(不在执行不能停止的动作)
{
    if(眼睛)允许其它动作;
    if(允许其它动作)
     {
            switch(命令){}
    }
    else if(睁眼命令){}
 }
else{查询是否需要停止动作或动作是否完成。}
流过汗水才能代表自己真的学会了如何不流汗。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-24 03:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表