搜索
bottom↓
回复: 173

[开源]蜘蛛机器人V2

  [复制链接]

出0入296汤圆

发表于 2014-10-23 03:13:01 | 显示全部楼层 |阅读模式
本帖最后由 Gorgon_Meducer 于 2014-10-28 12:01 编辑



- 2014-10-28 致歉

     由于我个人在团队管理实践上的重大错误,V2版蜘蛛可靠性不足以完成今日举行的产品展示,最终影响了飞思卡尔产品
     的展示计划。在这里,我真心的向阿莫致歉,向相信我,期待蜘蛛项目的广大坛友致歉,向飞思卡尔(上海)致歉。
    我们认识到自己能力的不足,后续将继续在硬件驱动能力上进行改进,降低机器人对电源系统的依赖。

                                                                                                                  特此致歉:王卓然(傻孩子)

     P.S 此次飞思卡尔展会将使用蜘蛛V1进行演示。


- 2014-10-23 V2版蜘蛛改进

     a. 由于驱动电路考虑不足,发现蜘蛛在joints_calibration()时由于所有的关节顺势运动时电流过大会导致驱动电路保护,
         导致很多时候无法正常工作。显然现在修改驱动电路已经来不及了,只能修改代码,让所有关节顺次启动,从而避免
         峰值电流。

  1. static void joints_calibration(joint_t *ptJoints, joint_no_t tIndex)
  2. {
  3.     if (NULL == ptJoints) {
  4.         return ;
  5.     }

  6.     switch (tIndex) {
  7.         case RIGHT_BACK_LEG_0:
  8.             JOINT_CFG(
  9.                 ptJoints[RIGHT_BACK_LEG_0],
  10.                 RIGHT_BACK_LEG_0,
  11.                 70,                         //!< offset
  12.                 110,                        //!< start angle
  13.                 200,                        //!< end angle
  14.                 270,                        //!< Max Angular Speed
  15.                 225,                        //!< Reset Position
  16.             );break;

  17.         case RIGHT_MIDDLE_LEG_0:
  18.             JOINT_CFG(
  19.                 ptJoints[RIGHT_MIDDLE_LEG_0],
  20.                 RIGHT_MIDDLE_LEG_0,
  21.                 54,                     //!< offset
  22.                 81,                     //!< start angle
  23.                 171,                    //!< end angle
  24.                 270,                    //!< Max Angular Speed
  25.                 180,                    //!< Reset Position
  26.             );break;

  27.         case RIGHT_FRONT_LEG_0:
  28.             JOINT_CFG(
  29.                 ptJoints[RIGHT_FRONT_LEG_0],
  30.                 RIGHT_FRONT_LEG_0,
  31.                 50,                     //!< offset
  32.                 40,                     //!< start angle
  33.                 130,                    //!< end angle
  34.                 270,                    //!< Max Angular Speed
  35.                 135,                    //!< Reset Position
  36.             );break;

  37.         case LEFT_FRONT_LEG_0:
  38.             JOINT_CFG(
  39.                 ptJoints[LEFT_FRONT_LEG_0],
  40.                 LEFT_FRONT_LEG_0,
  41.                 220,                     //!< offset
  42.                 0,                      //!< start angle
  43.                 270,                    //!< end angle
  44.                 270,                    //!< Max Angular Speed
  45.                 45,                      //!< Reset Position
  46.             );break;

  47.         case LEFT_MIDDLE_LEG_0:
  48.             JOINT_CFG(
  49.                 ptJoints[LEFT_MIDDLE_LEG_0],
  50.                 LEFT_MIDDLE_LEG_0,
  51.                 215,                     //!< offset
  52.                 0,                      //!< start angle
  53.                 270,                    //!< end angle
  54.                 270,                    //!< Max Angular Speed
  55.                 0,                      //!< Reset Position
  56.             );break;

  57.         case LEFT_BACK_LEG_0:
  58.             JOINT_CFG(
  59.                 ptJoints[LEFT_BACK_LEG_0],
  60.                 LEFT_BACK_LEG_0,
  61.                 195,                    //!< offset
  62.                 0,                      //!< start angle
  63.                 270,                    //!< end angle
  64.                 270,                    //!< Max Angular Speed
  65.                 315,                      //!< Reset Position
  66.             );break;

  67.         case RIGHT_BACK_LEG_1:
  68.             JOINT_CFG(
  69.                 ptJoints[RIGHT_BACK_LEG_1],
  70.                 RIGHT_BACK_LEG_1,
  71.                 35,                    //!< offset
  72.                 0,                      //!< start angle
  73.                 270,                    //!< end angle
  74.                 270,                    //!< Max Angular Speed
  75.                 225,                     //!< Reset Position
  76.             );break;

  77.         case RIGHT_MIDDLE_LEG_1:
  78.             JOINT_CFG(
  79.                 ptJoints[RIGHT_MIDDLE_LEG_1],
  80.                 RIGHT_MIDDLE_LEG_1,
  81.                 40,                    //!< offset
  82.                 0,                      //!< start angle
  83.                 270,                    //!< end angle
  84.                 270,                    //!< Max Angular Speed
  85.                 225,                     //!< Reset Position
  86.             );break;

  87.         case RIGHT_FRONT_LEG_1:
  88.             JOINT_CFG(
  89.                 ptJoints[RIGHT_FRONT_LEG_1],
  90.                 RIGHT_FRONT_LEG_1,
  91.                 33,                    //!< offset
  92.                 0,                      //!< start angle
  93.                 270,                    //!< end angle
  94.                 270,                    //!< Max Angular Speed
  95.                 225,                     //!< Reset Position
  96.             );break;
  97.             
  98.          case LEFT_BACK_LEG_1:
  99.             JOINT_CFG(
  100.                 ptJoints[LEFT_BACK_LEG_1],
  101.                 LEFT_BACK_LEG_1,
  102.                 235,                    //!< offset
  103.                 0,                      //!< start angle
  104.                 270,                    //!< end angle
  105.                 270,                    //!< Max Angular Speed
  106.                 315,                     //!< Reset Position
  107.             );break;

  108.         case LEFT_MIDDLE_LEG_1:
  109.             JOINT_CFG(
  110.                 ptJoints[LEFT_MIDDLE_LEG_1],
  111.                 LEFT_MIDDLE_LEG_1,
  112.                 240,                    //!< offset
  113.                 0,                      //!< start angle
  114.                 270,                    //!< end angle
  115.                 270,                    //!< Max Angular Speed
  116.                 315,                     //!< Reset Position
  117.             );break;

  118.         case LEFT_FRONT_LEG_1:
  119.             JOINT_CFG(
  120.                 ptJoints[LEFT_FRONT_LEG_1],
  121.                 LEFT_FRONT_LEG_1,
  122.                 245,                    //!< offset
  123.                 0,                      //!< start angle
  124.                 270,                    //!< end angle
  125.                 270,                    //!< Max Angular Speed
  126.                 315,                     //!< Reset Position
  127.             );break;

  128.         case LEFT_BACK_LEG_2:
  129.             JOINT_CFG(
  130.                 ptJoints[LEFT_BACK_LEG_2],
  131.                 LEFT_BACK_LEG_2,
  132.                 328,                    //!< offset
  133.                 0,                     //!< start angle
  134.                 270,                    //!< end angle
  135.                 270,                    //!< Max Angular Speed
  136.                 45,                     //!< Reset Position
  137.             );break;

  138.         case LEFT_MIDDLE_LEG_2:
  139.             JOINT_CFG(
  140.                 ptJoints[LEFT_MIDDLE_LEG_2],
  141.                 LEFT_MIDDLE_LEG_2,
  142.                 332,                    //!< offset
  143.                 0,                     //!< start angle
  144.                 270,                    //!< end angle
  145.                 270,                    //!< Max Angular Speed
  146.                 45,                     //!< Reset Position
  147.             );break;

  148.         case LEFT_FRONT_LEG_2:
  149.             JOINT_CFG(
  150.                 ptJoints[LEFT_FRONT_LEG_2],
  151.                 LEFT_FRONT_LEG_2,
  152.                 323,                    //!< offset
  153.                 0,                     //!< start angle
  154.                 270,                    //!< end angle
  155.                 270,                    //!< Max Angular Speed
  156.                 45,                     //!< Reset Position
  157.             );break;

  158.         case RIGHT_BACK_LEG_2:
  159.             JOINT_CFG(
  160.                 ptJoints[RIGHT_BACK_LEG_2],
  161.                 RIGHT_BACK_LEG_2,
  162.                 312,                    //!< offset
  163.                 0,                     //!< start angle
  164.                 270,                    //!< end angle
  165.                 270,                    //!< Max Angular Speed
  166.                 135,                     //!< Reset Position
  167.             );break;

  168.         case RIGHT_MIDDLE_LEG_2:
  169.             JOINT_CFG(
  170.                 ptJoints[RIGHT_MIDDLE_LEG_2],
  171.                 RIGHT_MIDDLE_LEG_2,
  172.                 311,                    //!< offset
  173.                 0,                     //!< start angle
  174.                 270,                    //!< end angle
  175.                 270,                    //!< Max Angular Speed
  176.                 135,                     //!< Reset Position
  177.             );break;

  178.         case RIGHT_FRONT_LEG_2:
  179.             JOINT_CFG(
  180.                 ptJoints[RIGHT_FRONT_LEG_2],
  181.                 RIGHT_FRONT_LEG_2,
  182.                 312,                    //!< offset
  183.                 0,                     //!< start angle
  184.                 270,                    //!< end angle
  185.                 270,                    //!< Max Angular Speed
  186.                 135,                     //!< Reset Position
  187.             );break;
  188.     }

  189. }
  190. ...

  191. IMPLEMENT_FSM(SpiderTask)
  192.     NO_INIT static uint8_t s_hwJointsCount;
  193.     PRIVATE STATE(Spider_Init) BEGIN
  194.         s_hwJointsCount = CEREBEL_JOINTS_COUNT;
  195.         //! initialize servo service
  196.         SERVO.Init ();
  197.         SERVO.Start ();
  198.         
  199.         CS_SET_EVENT(&s_wDelayEvent);
  200.         
  201.         TRANSFER_TO_STATE(Spider_Joints_Init);
  202.         EXIT_STATE;
  203.     END
  204.     PRIVATE STATE(Spider_Joints_Init) WAIT_EVENT_BEGIN(&s_wDelayEvent)
  205.         
  206.         if (s_hwJointsCount) {
  207.             request_for_delay_ms(250);
  208.             joints_calibration(s_tJoints, s_hwJointsCount - 1);
  209.             s_hwJointsCount--;
  210.         } else {

  211.             //! initialize cerebel layer
  212.             CEREBEL_CFG(&s_tJoints);
  213.             TRANSFER_TO_STATE(Spider_Task);
  214.         }

  215.         REFLEXIVE_STATE;
  216.     END
  217.     PRIVATE STATE(Spider_Task) BEGIN

  218.         CALL_ACTION(Spider_Go_Front);
  219.         REFLEXIVE_STATE;
  220.     END
  221. END_IMPLEMENT_FSM
复制代码

    b. 增加一个异步的毫秒级精确延时服务,主要是前面关节初始化的时候需要在每个关节之间插入非阻塞的延时。
       这也展示了状态机架构下如何配合调度器实现任务和时间的同步(应用代码参考a):


  1. NO_INIT static event_t s_wDelayEvent;
  2. static volatile uint32_t s_wDelayCounter = 0;

  3. void request_for_delay_ms(uint32_t wDelayMs)
  4. {
  5.     SAFE_ATOM_CODE(
  6.         s_wDelayCounter = wDelayMs;
  7.     )
  8. }

  9. ISR(SysTick_Handler)
  10. {
  11. ...

  12.     if (s_wDelayCounter) {
  13.         s_wDelayCounter--;
  14.         if (!s_wDelayCounter) {
  15.             CS_SET_EVENT(&s_wDelayEvent);
  16.         }
  17.     }

  18. ...
  19. }
复制代码

    c. v1.2工程模板下载
   


- 2014-10-23 凌晨 V2版蜘蛛初步完成

    历经磨难,原本以为很容易搞定的新版蜘蛛机器人,总算是搞定了——上视频:
   
   
   
    数字舵机是0~270度的,非常精准,校准只需要处理offset即可。另外由于安装的原因,坐标系又被迫做了镜像,
    回头软件上考虑加入处理,避免这种坐标系上的差异存在。
    睡了,好困,其它内容明天再补充。
   
工程下载



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2014-10-23 03:13:25 | 显示全部楼层

出0入58汤圆

发表于 2014-10-23 03:27:32 来自手机 | 显示全部楼层
深夜顶贴!

出100入101汤圆

发表于 2014-10-23 03:39:42 | 显示全部楼层
热烈祝贺!效果还不错!

出0入0汤圆

发表于 2014-10-23 07:07:54 来自手机 | 显示全部楼层
睡的真晚,蜘蛛不错~

出0入10汤圆

发表于 2014-10-23 07:25:23 | 显示全部楼层
大师加油~~~~

出0入0汤圆

发表于 2014-10-23 07:35:12 | 显示全部楼层
大师   果断围观~

出0入0汤圆

发表于 2014-10-23 08:01:07 | 显示全部楼层
蜘蛛 走起!

出0入0汤圆

发表于 2014-10-23 08:04:40 | 显示全部楼层
好啊,又有新程序可用

出0入0汤圆

发表于 2014-10-23 08:13:27 | 显示全部楼层
支持,加油

出0入0汤圆

发表于 2014-10-23 08:13:34 来自手机 | 显示全部楼层
好啊,祝您早日成功,硬件有没有改进??

出0入0汤圆

发表于 2014-10-23 08:24:58 | 显示全部楼层
辛苦啦 ,大半夜还在研究 ! 感谢你的程序

出0入96汤圆

发表于 2014-10-23 08:34:08 | 显示全部楼层
大半夜还在研究 !我等楷模啊

出0入0汤圆

发表于 2014-10-23 08:38:58 | 显示全部楼层
谢谢分享......

出0入0汤圆

发表于 2014-10-23 08:39:18 | 显示全部楼层
力挺巨作蜘蛛

出0入0汤圆

发表于 2014-10-23 08:45:02 | 显示全部楼层
力顶~下来瞻仰一下~

出0入0汤圆

发表于 2014-10-23 08:45:49 | 显示全部楼层
蜘蛛真不错。

出0入0汤圆

发表于 2014-10-23 08:59:05 | 显示全部楼层
来看哈强大的蜘蛛。

出0入0汤圆

发表于 2014-10-23 09:29:16 | 显示全部楼层
足端貌似有点打滑,穿个橡胶小鞋应该会好点

出0入0汤圆

发表于 2014-10-23 09:57:37 | 显示全部楼层
谢谢LZ
最终硬件是用的哪一版的? 上次信息只知道是用金属陀机

出0入0汤圆

发表于 2014-10-23 10:03:34 | 显示全部楼层
走的很酷

出0入0汤圆

发表于 2014-10-23 10:13:18 | 显示全部楼层
现在10点,6小时前应该是4点左右,太辛苦了!帮顶!

出0入0汤圆

发表于 2014-10-23 10:29:53 | 显示全部楼层
支持一下

出10入210汤圆

发表于 2014-10-23 10:33:23 | 显示全部楼层
加油,加油!

出0入0汤圆

发表于 2014-10-23 10:45:43 | 显示全部楼层
为你的精神与工作态度喝彩!东西真心不错!

出0入0汤圆

发表于 2014-10-23 10:48:10 | 显示全部楼层
支持,学习编程风格

出0入296汤圆

 楼主| 发表于 2014-10-23 10:53:27 | 显示全部楼层
Ticl4 发表于 2014-10-23 09:29
足端貌似有点打滑,穿个橡胶小鞋应该会好点

打滑是必然的,这是系统性的“误差”,必然有打滑,因为现在的算法原理上就没有严格遵守昆虫运动的数学模型。

出0入296汤圆

 楼主| 发表于 2014-10-23 10:56:37 | 显示全部楼层
统一回复大家,硬件从骨架到舵机到驱动电路都更换了。完成的蜘蛛很重,感觉恐怕有3~4kg,手拿着有点吃力。
舵机很专业的样子,力量也很大。这次的蜘蛛平台从硬件资质上绝对不是玩具级的,算是准专业级的。现在的
运动控制算法用在这个蜘蛛上真心对不起它。后面我会实现精确的矢量运动控制算法,从根本上杜绝打滑,并
带来更细腻更灵活的运动方式。

出0入296汤圆

 楼主| 发表于 2014-10-23 10:57:47 | 显示全部楼层
holts2 发表于 2014-10-23 08:04
好啊,又有新程序可用


对你有帮助就好,多少给点使用反馈哦。
友情提示:此代码不可用于商业用途。注意保留版权信息哦。

出0入0汤圆

发表于 2014-10-23 10:59:53 | 显示全部楼层
深夜还在调程序啊   真是敬业啊   good job!

出0入0汤圆

发表于 2014-10-23 11:16:17 | 显示全部楼层
赞,什么时候出套件啊?准备入一个

出0入0汤圆

发表于 2014-10-23 11:25:23 | 显示全部楼层
Gorgon_Meducer 发表于 2014-10-23 10:57
对你有帮助就好,多少给点使用反馈哦。
友情提示:此代码不可用于商业用途。注意保留版权信息哦。 ...

没有硬件,纯学习,绝不会用于商业, 主要学习你的程序结构

出0入0汤圆

发表于 2014-10-23 11:37:06 | 显示全部楼层
挑不出毛病呀。
头像被屏蔽

出0入0汤圆

发表于 2014-10-23 11:43:07 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2014-10-23 12:30:49 | 显示全部楼层
Gorgon_Meducer 发表于 2014-10-23 10:53
打滑是必然的,这是系统性的“误差”,必然有打滑,因为现在的算法原理上就没有严格遵守昆虫运动的数学模 ...

昆虫运动的数学模型
感情还有这么专业的术语,涨知识了 谢谢
求扫盲

出0入0汤圆

发表于 2014-10-23 14:04:01 | 显示全部楼层
armok 发表于 2014-10-23 11:43
超过2000元成本,你确认舍得买?

好吧,不得不承认这个价格有点高,而且仅仅是成本价。如果能出货价控制在2000左右的话,我可以承受。看舵机批量价格能不能便宜

出0入0汤圆

发表于 2014-10-23 14:25:40 | 显示全部楼层
现在的舵机是用“大扭力数字舵机1501”?

出0入0汤圆

发表于 2014-10-23 20:25:46 | 显示全部楼层
果断先下视频来看一下,看完来赞傻孩子。

出0入0汤圆

发表于 2014-10-23 20:27:13 | 显示全部楼层
shahaizi,真牛

出0入0汤圆

发表于 2014-10-23 20:30:19 | 显示全部楼层
相当棒,和上一代比起来,V2至少看起来很有范,因为蜘蛛的腿是金属所以在地板上会有滑动现象,如果演示的时候放在地毯上效果会更好。

出0入0汤圆

发表于 2014-10-23 23:18:44 | 显示全部楼层
蜘蛛最重要的就是能够不打滑,并且能够适应各种路面。。。

出0入0汤圆

发表于 2014-10-23 23:39:11 来自手机 | 显示全部楼层
armok 发表于 2014-10-23 11:43
超过2000元成本,你确认舍得买?

2-3千没有问题的,可以先款后货,什么时候出套件?能不能在12月份之前推出?

出0入0汤圆

发表于 2014-10-23 23:40:29 来自手机 | 显示全部楼层
步之道 发表于 2014-10-23 20:30
相当棒,和上一代比起来,V2至少看起来很有范,因为蜘蛛的腿是金属所以在地板上会有滑动现象,如果演示的时 ...

脚上裹一点塑料垫片,应该就不会滑动了

出0入0汤圆

发表于 2014-10-23 23:45:30 | 显示全部楼层
支持楼主!!!

出0入0汤圆

发表于 2014-10-24 00:27:44 来自手机 | 显示全部楼层
顶楼主,都是夜猫子!

出0入93汤圆

发表于 2014-10-24 00:42:04 | 显示全部楼层
这个V2看起来结实多了

出0入0汤圆

发表于 2014-10-24 08:44:56 | 显示全部楼层
kutf 发表于 2014-10-23 23:40
脚上裹一点塑料垫片,应该就不会滑动了

自己调试的时候裹点塑料垫子是可以的,但是演示怎么能裹塑料垫子呢,除了用点橡胶“鞋套”。不过还是放个垫子方便

出0入0汤圆

发表于 2014-10-24 08:46:01 | 显示全部楼层
大师加油

出0入0汤圆

发表于 2014-10-24 09:01:07 | 显示全部楼层
保持关注大师进度

出0入0汤圆

发表于 2014-10-24 09:03:07 | 显示全部楼层

支持一下

出0入0汤圆

发表于 2014-10-24 09:08:45 | 显示全部楼层
什么时候出套件,购买玩一下。站在巨人肩膀上

出0入0汤圆

发表于 2014-10-24 09:09:23 | 显示全部楼层
顶啊,又有玩的了。
头像被屏蔽

出0入0汤圆

发表于 2014-10-24 09:10:23 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2014-10-24 09:11:41 | 显示全部楼层
不错,顶!要是代码能通俗点就好了,感觉封装的太多了,向linux风格去了

出0入0汤圆

发表于 2014-10-24 09:12:24 | 显示全部楼层
虽然看不懂还是顶一下吧

出0入0汤圆

发表于 2014-10-24 09:17:17 | 显示全部楼层
真心不错呀,支持。。。

出0入0汤圆

发表于 2014-10-24 09:30:28 | 显示全部楼层
本帖最后由 myqiang1990 于 2014-10-24 09:34 编辑

为何C语言要把它弄成这样?首先比较崇拜楼主~也比较尊敬~~我没仔细看~因为我没有楼主用的编译器也没装看代码的东西~只有一个DEV C++编译器~我只是扫了一眼~~但是我感觉代码有些地方还是不妥当~过多的将一些东西宏化,,让我想起了C专家编程里面一个趣闻~如图:
楼主代码:

/*! state machine implementation */
IMPLEMENT_FSM(DemoTask)

    //! state: Demo_Init
    PRIVATE STATE(Demo_Init) BEGIN
        /*! put your application service code here */
        GSP_PORTB.DIR |= PB22_MSK | PB21_MSK;
        GSP_PORTE.DIR |= PE26_MSK;
        GSP_PORTB.OUTSET = PB22_MSK | PB21_MSK;
        GSP_PORTE.OUTSET = PE26_MSK;

        IO_CFG(
            {PB22,  IO_WORKS_AS_FUNC1},         //!< LED Red
            {PE26,  IO_WORKS_AS_FUNC1},         //!< LED Green
            {PB21,  IO_WORKS_AS_FUNC1},         //!< LED Blue
        );

        TRANSFER_TO_STATE(Demo_Task);
        REFLEXIVE_STATE;
    END

    //! state: Demo Task
    PRIVATE STATE(Demo_Task) BEGIN
        /*! put your none-blocked task code here */
        breath_led();

        //! for debug
        console_task();
        CALL_ACTION(Spider_Go_Front);
        REFLEXIVE_STATE;
    END
END_IMPLEMENT_FSM[/img]

C语言专家里面的一个趣闻:




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-10-24 12:26:44 | 显示全部楼层
学习楼主精神!

出0入0汤圆

发表于 2014-10-24 13:12:11 | 显示全部楼层
myqiang1990 发表于 2014-10-24 09:30
为何C语言要把它弄成这样?首先比较崇拜楼主~也比较尊敬~~我没仔细看~因为我没有楼主用的编译器也没装看代 ...

可以提高效率的,尤其是一些经常被调用但是本身有不复杂的函数上,这时候例如栈操作所费的时间可能超过函数本身所需时间了,用宏可以把这些代码直接写进去,但是又没有多余开销,而且看上去还像用的函数。像是操作系统硬件抽象层就会经常用到类似的方法。

出0入0汤圆

发表于 2014-10-24 13:42:06 | 显示全部楼层
是的,我也同意“myqiang1990”的观点。

出0入0汤圆

发表于 2014-10-24 13:44:15 | 显示全部楼层
硬件改的话 是不是加大电容,这样瞬间可以提供电流

出0入0汤圆

发表于 2014-10-24 14:20:16 | 显示全部楼层
本帖最后由 myqiang1990 于 2014-10-24 14:37 编辑
dawanpi 发表于 2014-10-24 13:12
可以提高效率的,尤其是一些经常被调用但是本身有不复杂的函数上,这时候例如栈操作所费的时间可能超过函 ...


适当可以用__inline~~~~在我读过的代码中,我觉得UCOS的代码是非常优美的~十分清晰有条理~而且代码整整齐齐~看得十分舒服~~一读就懂~~

出0入296汤圆

 楼主| 发表于 2014-10-24 15:19:06 | 显示全部楼层
myqiang1990 发表于 2014-10-24 09:30
为何C语言要把它弄成这样?首先比较崇拜楼主~也比较尊敬~~我没仔细看~因为我没有楼主用的编译器也没装看代 ...

只要你看懂了代码要做什么事情,目的就达到了,至于你是否看懂了代码(知道背后的原理),这不是我关心的。
我是推崇黑盒子思想的,只要知道怎么用就可以了。毕竟底层的东西没有多少价值,而如何用别人提供的服务
设计出满足应用的东西——或者说关注于应用本身才是设计的最终目的。

你如果说你看这个代码不知道这个代码的意图,那么我们可以好好聊聊。

出0入296汤圆

 楼主| 发表于 2014-10-24 15:27:22 | 显示全部楼层
本帖最后由 Gorgon_Meducer 于 2014-10-24 15:37 编辑
myqiang1990 发表于 2014-10-24 14:20
适当可以用__inline~~~~在我读过的代码中,我觉得UCOS的代码是非常优美的~十分清晰有条理~而且代码整整齐 ...


有很多需要大量重复的结构性代码本身是没法用inline的,因为这只是代码片段。
另外用宏虽然看似和inline差不多,但inline很多时候是“强制”的,但用宏就赋予了编译器灵活处理的权利,
他可以inline——如果你选择速度优化的话,也可以不inline——通常是你选择size优化的时候。

宏的作用是给一些重复的代码片段赋予简单易懂的意义,同时也避免书写多次。你可以认为是一种模板,
这种模板当成为一定规模后,实际上确保了你过去用宏固定下来的“成功代码”不会在重写的时候出现
笔误或者偏差。

比如我写过一个宏模板用来产生FIFO的,用起来很方便,也不用担心每次为一个新的特定类型写FIFO
代码的时候会出现笔误或者逻辑错误。

再说个玩笑话:我觉得你属于C语言的“纯血派”。我则是强调实用主义的。我用宏并不是像你看到的文字
那样是为了追求像某种语言(最初我这么尝试过,但发现没有意义,也不好玩),我用宏的目标完全是
为了提高代码效率,降低出错效率,辅助编码规范——比如状态机写出来拥有统一格式之类的。

尤其是C不支持模板,而宏是唯一最接近这一概念的实现了。

计算机科学历来都是“唯心主义”泛滥的圣地,除了做应用与物理世界相连,或者解决数学高度相关的问题,
平时的计算机世界完全就是程序员说了算的。有影响的人可以这么解释一种语言,其它人可以附庸,也可以
提出自己的解释,最牛掰的人干脆自己创造一门语言——尤其是在自己的应用范围自己说了算的时候。

所以,“纯血派”嘛我只能笑笑。我影响我的范围,你影响你的。不过我还是很乐于沟通的。相对于其他直接
MARK的人,我真的非常开心有人说出自己的想法,认真的评论。从这点角度来说,你就是直接骂我,我都
是开心的——毕竟你说的有理有据,还专门耐心去截图。

真的,非常感谢,还请以后继续关注我的帖子。欢迎吐槽~真心的。做技术对事不对人~谢谢你。

出0入296汤圆

 楼主| 发表于 2014-10-24 15:45:18 | 显示全部楼层
kutf 发表于 2014-10-23 23:40
脚上裹一点塑料垫片,应该就不会滑动了

打滑是运动模型的问题,真的裹了东西那就不是打滑了,是舵机要堵转了。现在舵机很牛X,所以即便你裹了东西也会打滑的。
我曾把蜘蛛放在床上爬……你知道棉布的摩擦系数很大的。结果就是机器人罢工了,因为堵转电流太大,驱动电路直接保护了。

出0入0汤圆

发表于 2014-10-24 15:49:46 | 显示全部楼层
要是有KEIL C版本就好了。并且工程代码,太多的封装了,看起来不够直接。

出0入0汤圆

发表于 2014-10-24 16:27:27 | 显示全部楼层
顶牛人啊!

出0入0汤圆

发表于 2014-10-24 16:31:36 | 显示全部楼层
Gorgon_Meducer 发表于 2014-10-24 15:27
有很多需要大量重复的结构性代码本身是没法用inline的,因为这只是代码片段。
另外用宏虽然看似和inline ...

恩~~每个人思维和风格习惯都不一样~100种人写同一功能可能会有100种不同写法~~能实现自己想要的功能就行~~

出0入0汤圆

发表于 2014-10-24 16:33:10 | 显示全部楼层

确实,只看懂了代码要做什么,但看不懂代码背后的原理(其实是封装吧)。不过挺喜欢这种格式的,刚好最近在看《UML+OOPC》。

另外,想问一下傻孩子老师,您是用什么编辑器编写代码的呢,电脑上没有可以打开您工程的IAR

出0入296汤圆

 楼主| 发表于 2014-10-24 16:50:34 来自手机 | 显示全部楼层
ijlc1314 发表于 2014-10-24 16:33
确实,只看懂了代码要做什么,但看不懂代码背后的原理(其实是封装吧)。不过挺喜欢这种格式的,刚好最近在 ...

用的就是IAR编辑的。

出0入296汤圆

 楼主| 发表于 2014-10-24 16:51:37 来自手机 | 显示全部楼层
myqiang1990 发表于 2014-10-24 16:31
恩~~每个人思维和风格习惯都不一样~100种人写同一功能可能会有100种不同写法~~能实现自己想要的功能就行~ ...

求同存异,还期待你下一次来拍砖。

出100入101汤圆

发表于 2014-10-25 15:30:35 | 显示全部楼层
学习下运动控制算法

出0入296汤圆

 楼主| 发表于 2014-10-26 14:50:39 来自手机 | 显示全部楼层
所有三台蜘蛛全部发货。发完之后看照片才发现好像有一台骨架安装错位了……汗……好在不影响运动。

出0入0汤圆

发表于 2014-10-26 19:11:11 | 显示全部楼层
我是来看蜘蛛人视频滴,哈哈 傻孩子幸苦了

出0入0汤圆

发表于 2014-10-27 06:42:36 来自手机 | 显示全部楼层
做产品,辛苦了

出0入296汤圆

 楼主| 发表于 2014-10-27 09:36:40 来自手机 | 显示全部楼层
wh9602 发表于 2014-10-27 06:42
做产品,辛苦了

到产品级的可靠性还早呢。只能保证十几分钟的演示。

出0入296汤圆

 楼主| 发表于 2014-10-27 11:05:15 | 显示全部楼层
更新v1.2工程模板下载

出0入12汤圆

发表于 2014-10-28 08:35:41 | 显示全部楼层
想整个套件玩玩,光看程序理解没有那么快

坐等老大的福利

出0入296汤圆

 楼主| 发表于 2014-10-28 12:01:59 | 显示全部楼层
更新致歉信。对不起大家。

出0入0汤圆

发表于 2014-10-28 12:24:04 来自手机 | 显示全部楼层
傻孩子老师加油,一直在向您学习。相信您会有更完美的作品!顶你

出0入0汤圆

发表于 2014-10-28 12:26:22 来自手机 | 显示全部楼层
也向傻孩子老师致歉的勇气致敬!

出0入0汤圆

发表于 2014-10-28 12:35:45 | 显示全部楼层
支持一下,继续加油!!!

出0入0汤圆

发表于 2014-10-28 13:19:56 来自手机 | 显示全部楼层
没有容易的事,加油

出0入0汤圆

发表于 2014-10-28 15:47:11 | 显示全部楼层
同样感到遗憾。。。

出0入0汤圆

发表于 2014-10-28 16:07:18 | 显示全部楼层
支持一下,再接再厉。。。

出0入0汤圆

发表于 2014-10-28 20:32:13 | 显示全部楼层
支持开源 ,支持傻孩子老师

出0入0汤圆

发表于 2014-10-28 20:51:03 | 显示全部楼层
傻孩子牛人,今天展会目睹了蜘蛛机器人的风采。

出0入0汤圆

发表于 2014-10-28 20:54:59 | 显示全部楼层
学习学习                       

出0入0汤圆

发表于 2014-10-29 07:35:05 | 显示全部楼层
不错,学习了

出0入0汤圆

发表于 2014-10-29 08:47:37 | 显示全部楼层
支持,期待更好的产品

出5入8汤圆

发表于 2014-10-29 09:34:17 | 显示全部楼层
顶楼主  

出0入0汤圆

发表于 2014-11-14 11:05:14 | 显示全部楼层
支持傻孩子!!!

出0入0汤圆

发表于 2014-11-14 12:58:47 | 显示全部楼层
支持傻孩子

出0入0汤圆

发表于 2014-11-14 13:42:23 | 显示全部楼层
支持和关注下

出0入0汤圆

发表于 2014-11-14 14:55:28 | 显示全部楼层
支持傻孩子 支持楼主

出0入0汤圆

发表于 2014-11-15 18:15:46 | 显示全部楼层
进度怎样?

出0入0汤圆

发表于 2014-11-15 22:19:55 来自手机 | 显示全部楼层
支持老师!

出0入0汤圆

发表于 2014-11-15 22:46:22 | 显示全部楼层
你是我的偶像,加油。

出0入0汤圆

发表于 2014-11-15 22:50:01 | 显示全部楼层
支持,加油

出0入0汤圆

发表于 2014-11-16 14:00:05 | 显示全部楼层
六足机器人吗? 这个很牛的, 下载视频看看。。膜拜大神
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 05:45

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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