实验机器人“小强一号”制作过程 点击:3046 | 回复:72



防忽悠

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:25帖 | 1315回
  • 年度积分:0
  • 历史总积分:2197
  • 注册:2012年3月02日
发表于:2012-04-13 21:10:53
楼主

从对机器人感兴趣开始,买了一堆书,也看了很多资料,决定先从最简单的车轮机器人开始做。普通电脑虽然强大,但是不能直接采集外界环境的物理数据,也不能直接控制电机。查找了下,虽然可以直接在电脑上接USB接口的数据采集器用于采集传感器的数据,也可以使用PCI的电机控制卡来驱动各种电机,不过成本有些高,暂时不考虑了。找了一圈,发现还是单片机方案廉价,顺便可以学习下单片机控制和作一些电路实验。于是最终决定实验方案采用单片机来做了。

零件

下面是采购的零件:

8位单片机Atmega168开发板(Arduino)。价格为$35美圆

Arduino是源自意大利的一个开放源代码的硬件项目,该平台包括一片具备简单I/O功效的电路板以及一套程式开发环境软体。Arduino可以用来开发可独立运作、并具互动性的电子用品,或者也可以开发出与PC相连的週边装置,同时能在运作时与PC上的软体进行沟通。 Arduino的硬体电路板可以自行焊接组装成,也可以购买已经组装好的,而整合开发环境的软体则可以自网路上免费下载与使用。目前Arduino的硬体部分支援Atmel的ATmega8与ATmega168等微控器。 此外,Arduino专案获得2006年Prix Art Electronica在电子通讯类方面的荣誉奖。 Arduino的硬体电路参考设计部分是以创用(Creative Commons;CC)形式提供授权。相应的原理图和电路图都可以从Arduino网站上获得.



楼主最近还看过



防忽悠

  • 精华:1帖
  • 求助:1帖
  • 帖子:38帖 | 1315回
  • 年度积分:0
  • 历史总积分:2197
  • 注册:2012年3月02日
发表于:2012-04-13 21:51:47
21楼
对于行为实现自己的状态机,在行为实现的代码内部实现,而不影响其他行为。这种结构可以让每个行为子关心自己的实现方式,从而最大的降低软件复杂度,方便功能添加和修改。逃离行为状态机实现原型代码:
void BhEscape::Run(){

    int bid = GetId();


    // 状态机实现

    switch(state){

        case 0: // 前方距离过小

            if(GI_distance【DISTANCE_FORWORD】 < 30){

                GO_speed_left【bid】 = 0;

                GO_speed_right【bid】 = 0;


                GT_beh_action【ACTION_TYPE_MOTOR】【bid】 = true;


                timestart = millis();

                state++;   // 状态变化

            }else{

                GT_beh_action【ACTION_TYPE_MOTOR】【bid】 = false;

            }


            break;

        case 1:  // 观察左右距离

            if(millis() - timestart > 1000){

                GO_eyeAngle【bid】 = 0;

                GT_beh_action【ACTION_TYPE_HEAD】【bid】 = true;

                timestart = millis();

                state++;

            }

        case 2:  // 观察左右距离

            if(millis() - timestart > 1000){

                GO_eyeAngle【bid】 = 180;

                GT_beh_action【ACTION_TYPE_HEAD】【bid】 = true;

                timestart = millis();

                state++;

            }

        case 3:  // 决定往哪边转弯

            if(millis() - timestart > 1000){            

                GO_eyeAngle【bid】 = Angle_Center_90;

                GT_beh_action【ACTION_TYPE_HEAD】【bid】 = true;


                if(GI_distance【DISTANCE_LEFT_1】 > GI_distance【DISTANCE_RIGHT_1】){

                    // 左转

                    GO_speed_left【bid】 = 0;

                    GO_speed_right【bid】 = 255;

                }else{

                    //右转

                    GO_speed_left【bid】 = 255;

                    GO_speed_right【bid】 = 0;

                }

                GT_beh_action【ACTION_TYPE_MOTOR】【bid】 = true;


                state = 0;

                Delay(2000);

            }


        default:

            break;

    }

}这种基于行为单元的实现方法比较类似生物的反射行为,完整的代码在下载专区进行下载。完成了基本的代码,下一部分需要构建机器人的机构和测试了。

防忽悠

  • 精华:1帖
  • 求助:1帖
  • 帖子:38帖 | 1315回
  • 年度积分:0
  • 历史总积分:2197
  • 注册:2012年3月02日
发表于:2012-04-13 21:52:48
22楼

结构和测试 实验机器人的结构就地取材,用了一个拼装玩具小车的零件,如下图:

                   

防忽悠

  • 精华:1帖
  • 求助:1帖
  • 帖子:38帖 | 1315回
  • 年度积分:0
  • 历史总积分:2197
  • 注册:2012年3月02日
发表于:2012-04-13 21:53:48
23楼

为了安装电机和传感器,重新拼装了下,变成这个样子:

                 

防忽悠

  • 精华:1帖
  • 求助:1帖
  • 帖子:38帖 | 1315回
  • 年度积分:0
  • 历史总积分:2197
  • 注册:2012年3月02日
发表于:2012-04-13 21:54:42
24楼
有了基本的结构,可以测试功能了,验证功能是否正常
                      

防忽悠

  • 精华:1帖
  • 求助:1帖
  • 帖子:38帖 | 1315回
  • 年度积分:0
  • 历史总积分:2197
  • 注册:2012年3月02日
发表于:2012-04-13 21:55:30
25楼
功能测试完成,放到地上实际跑一下                         

防忽悠

  • 精华:1帖
  • 求助:1帖
  • 帖子:38帖 | 1315回
  • 年度积分:0
  • 历史总积分:2197
  • 注册:2012年3月02日
发表于:2012-04-13 21:56:19
26楼
放在家里巡逻,有小偷进来就跟他火拼。

newchp

  • 精华:2帖
  • 求助:0帖
  • 帖子:8帖 | 3973回
  • 年度积分:0
  • 历史总积分:9011
  • 注册:2006年7月15日
发表于:2012-04-13 23:07:11
27楼
搞工控最高境界就是单片机,可以开发小东东,慢慢做大!

阿水--王者之师

  • 精华:31帖
  • 求助:399帖
  • 帖子:1801帖 | 22295回
  • 年度积分:2
  • 历史总积分:98539
  • 注册:2007年3月22日
发表于:2012-04-14 09:24:38
28楼
放在家里巡逻,有小偷进来就跟他火拼。,连接到无线以态网,进行无人执勤

月子欧元

  • 精华:0帖
  • 求助:1帖
  • 帖子:78帖 | 1452回
  • 年度积分:0
  • 历史总积分:2257
  • 注册:2012年3月02日
发表于:2012-04-14 14:38:15
29楼
楼主强大!                                       

chenhe8628272

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:23
  • 注册:2012年3月20日
发表于:2012-04-17 10:16:01
30楼
技术活,只能干瞪眼。

钓鱼鸟

  • 精华:1帖
  • 求助:17帖
  • 帖子:58帖 | 2123回
  • 年度积分:0
  • 历史总积分:3884
  • 注册:2012年2月16日
发表于:2012-04-17 10:31:27
31楼

看来我的水平不行了

 

 

icegrave

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 91回
  • 年度积分:0
  • 历史总积分:653
  • 注册:2010年8月03日
发表于:2012-04-17 11:17:28
32楼

楼主用的C语言?看起来好亲切。

silence1986

  • 精华:2帖
  • 求助:4帖
  • 帖子:6帖 | 42回
  • 年度积分:0
  • 历史总积分:222
  • 注册:2010年5月13日
发表于:2012-04-17 13:42:15
33楼
高手· 可惜自己看不懂 郁闷

renyongz

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 6回
  • 年度积分:0
  • 历史总积分:0
  • 注册:1900年1月01日
发表于:2012-04-18 18:59:41
34楼
了不起   你什么时候研究的  羡慕啊

战魂——骑士军团

  • 精华:0帖
  • 求助:1帖
  • 帖子:27帖 | 940回
  • 年度积分:0
  • 历史总积分:2011
  • 注册:2012年3月22日
发表于:2012-04-18 19:35:39
35楼

高科技,单片机很强大。

z123y

  • 精华:0帖
  • 求助:0帖
  • 帖子:30帖 | 1219回
  • 年度积分:1
  • 历史总积分:1579
  • 注册:2012年3月02日
发表于:2012-04-22 16:04:22
36楼

看来我的水平不行了                        

网络大亨

  • 精华:0帖
  • 求助:2帖
  • 帖子:25帖 | 201回
  • 年度积分:0
  • 历史总积分:402
  • 注册:2012年3月13日
发表于:2012-04-22 16:25:03
37楼
挺好,可以进国家队了

广州@阿君——王者之师

  • [版主]
  • 精华:25帖
  • 求助:20帖
  • 帖子:532帖 | 7001回
  • 年度积分:16
  • 历史总积分:66978
  • 注册:2010年6月26日
发表于:2012-04-23 23:08:36
38楼
都是人才呀···哥哥在此干瞪眼

UNCvvvf

  • 精华:0帖
  • 求助:3帖
  • 帖子:5帖 | 98回
  • 年度积分:0
  • 历史总积分:358
  • 注册:2012年2月22日
发表于:2012-04-24 14:45:35
39楼

很好很强大,看到楼主的帖子 给了我很大的启发............................................

原来我的知识真的很匮乏................

mutongrensheng

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 79回
  • 年度积分:0
  • 历史总积分:396
  • 注册:2011年6月07日
发表于:2012-04-24 15:35:52
40楼
呵呵,AVR单片机还没学到,刚刚学了点51的,向楼主学习

热门招聘
相关主题

官方公众号

智造工程师