[开源]阿莫蜘蛛进度报告[2015-02-15更新]

2020-02-19 20:53发布

本帖最后由 Gorgon_Meducer 于 2015-2-15 22:31 编辑


此贴专门用于阿莫蜘蛛项目进度报告







傻孩子工作室作品

STAFF

   
    Hardware Design           yiming988
    Driver Design                y574924080
    Movement Design         qufuta    sunfulong
    Mechanical Designing     老陈
    Production                   老陈

    Architecture Design Gorgon_Meducer



SPONSOR               

    amobbs, Freescale

ACKNOWLEDGE
   
    Armok
   




- 2015-2-15
    a. 更新Joint类,增加Time属性可以控制动作在指定的时间内精确的完成,大幅度提升蜘蛛舞蹈的时间精度。

    工程模板需要在IAR7.x下编译,单击这里下载: SpiderRobot_Template(v1.5).rar (1.1 MB, 下载次数: 102) 2015-2-15 22:28 上传 点击文件名下载附件
        特别说明,工程文件在“SpiderRobot_Templateapplication emplateuild_iar”下面

- 2015-2-04
    a. 更新第一版舞蹈
        http://v.youku.com/v_show/id_XODg2MDIwOTA0.html
        讨论在这里
        http://www.amobbs.com/forum.php? ... p;page=1#pid8405770

        感谢sunfulong的精彩作品!

- 2015-1-28
    a. 发布工程模板v1.4a
        - 提供宏模板,用以将指定的动作重复指定的次数,范例:

  1.         ACTION_REPEATE( REF_ACTION(Spider_Go_Front),    //!< target action
  2.                         10,                             //!< times
  3.                         REF_STATE(Spider_Action1));  
复制代码
        重复执行动作(Spider_Go_Front)10次,完成后直接切换到Spider_Action1状态

        - 提供宏模板,用以延时指定的时间(非阻塞延时),范例:

  1.         ACTION_DELAY_MS(4000,                           //!< delay time in ms
  2.                         REF_STATE(Spider_Action2));     //!< next state
复制代码
        延时4000ms,完成后直接切换到Spider_Action2状态

        - 提供脚本模式,并提供范例脚本,演示了重复前进10步,延时4秒,后退10步,前进一步的简单脚本

  1. /*! rief play action script
  2. *! param none
  3. *! eturn access result
  4. */
  5. bool play_action_script(void)
  6. {
  7.     utilitis_init();

  8.     return NEW_FSM(SpiderPlay, REF_STATE(Spider_Init));
  9. }


  10. IMPLEMENT_FSM(SpiderPlay)

  11.     PRIVATE STATE(Spider_Init) BEGIN
  12.         
  13.         IO_CFG(
  14.             {PB20, IO_WORKS_AS_GPIO, IO_PULL_UP},
  15.         );
  16.         GSP_PORTB.DIR &= ~PB20_MSK;
  17.         
  18.         TRANSFER_TO_STATE(Spider_Wait_for_Trigger);
  19.         EXIT_STATE;
  20.     END


  21.     PRIVATE STATE(Spider_Wait_for_Trigger) BEGIN
  22.         
  23.         //! press key to start
  24.         if (!(GSP_PORTB.IN & PB20_MSK)) {
  25.             TRANSFER_TO_STATE(Spider_Play);
  26.         }

  27.         REFLEXIVE_STATE
  28.     END
  29.     PRIVATE STATE(Spider_Play) BEGIN
  30.         
  31.         ACTION_REPEATE( REF_ACTION(Spider_Go_Front),    //!< target action
  32.                         10,                             //!< times
  33.                         REF_STATE(Spider_Action1));  

  34.         EXIT_STATE;
  35.     END

  36.     PRIVATE STATE(Spider_Action1) BEGIN

  37.         ACTION_DELAY_MS(4000,                           //!< delay time in ms
  38.                         REF_STATE(Spider_Action2));     //!< next state
  39.         EXIT_STATE
  40.     END

  41.     PRIVATE STATE(Spider_Action2) BEGIN

  42.         ACTION_REPEATE(REF_ACTION(Spider_Go_Back), 10, REF_STATE(Spider_Action3));
  43.         EXIT_STATE
  44.     END


  45.     PRIVATE STATE(Spider_Action3) BEGIN

  46.         CALL_ACTION_EX( REF_ACTION(Spider_Go_Front),    //!< target action
  47.                         REF_STATE(Spider_Action4));     //!< next

  48.         EXIT_STATE
  49.     END

  50.     PRIVATE STATE(Spider_Action4) BEGIN

  51.         //! performance complete!!! wait for trigger again
  52.         TRANSFER_TO_STATE(Spider_Wait_for_Trigger);
  53.         EXIT_STATE
  54.     END
  55.    
  56. END_IMPLEMENT_FSM
复制代码

    b. 整理工程架构,提供动作模板和脚本模板
         1.jpg (221.53 KB, 下载次数: 0) 下载附件 2014-8-3 15:02 上传



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
100条回答
Gorgon_Meducer
2020-03-01 21:24
jlhgold 发表于 2014-8-22 19:15
那为啥要把main函数封装掉?如果PWM是中断自动产生的 何必在意买了怎么写 只要告知必须要假如某个初始化 ...

PWM硬件产生,而且和上层无关,没有使用中断。PWM的初始化函数就是SERVO.Init()
不提供 main是一种格式上的规范。用户并没有损失任何灵活性和可能性。由于main里面
有一些固定的结构,为了避免被破坏导致系统服务失效,所以采取了这种结构。其实如果
你非常介意这个问题,同时又不想用调度器,直接把app_init当作main函数就可以了,你
可以在里面加上超级循环。

一周热门 更多>