推荐linuxjournal文章,看Michael Surran怎样用linux做机器人![原文Do-It-Yourself Robots with Linux]

9 views
Skip to first unread message

rae l

unread,
Mar 26, 2007, 11:48:24 AM3/26/07
to 深圳 LinuxUnix 用户组
推荐linuxjournal文章,看Michael Surran怎样用linux做机器人!
[原文Do-It-Yourself Robots with Linux]

http://www.linuxjournal.com/article/9103

Michael Surran是Greater Houlton Christian Academy (GHCA)的一位中学教师,
制作机器人是他从小就有的热情;当他被赋予在他所在的高中计算机课程里增加一门机器人技术课程的权力时,他难以掩饰内心的喜悦。两年后的成果也是显著的:在最近的两年的执教生涯中,他带领学生们制造出了三台不同的基于运行Linux的PC的机器人!
更为难得的是,在一个资金预算紧张的限制下,师生们不得不基于现有的材料和工具来进行创新性的设计,结果是创造出了任何一位爱好者都可以模仿制作的机器人。

第一个能徜徉在GHCA的大厅里的机器人是K9,这是作者自己设计的,见原文图一,制作相当简陋,称为(robot
dog),样子也很像一只狗,主要目标在于激发学生们的兴趣。

第二个机器人是由两位学生在第一年里制作出来的。学校里每一年的开始都会列举一堆等待克服的问题,然后师生们一同进行头脑风暴来思考如何解决这些问题。两位学生想制作出能在教室之间传递消息的机器人,但很快他们理解到这些对于人类看起来很简单的任务对于机器人却相当复杂。到这一学年末,他们的机器人已经可以以编程的方式在走廊之间自由穿行,虽然在开始时设想的许多功能并没有实现,但这一年的过程对于所有人都是经验的积累。

第三个机器人在第二年里由三位学生制作,教师本人也参与了指导。这回他们想到的是安全,于是设计称为"卫兵机器人",用于在教室周围的走廊里巡逻以发现入侵者。

从机能上说,自动机器人有三个主要的组件:机械系统、电气系统和软件。设计一个功能的原则就是保持简单: (KISS principle-keep
it simple, silly!)

卫兵机器人使用简单的三轮车式动力系统,一个马达控制前轮作牵引力,另一个马达控制后面两个轮子作转向装置。上面使用夹合板作为框架(见原文图二)

电气系统由主计算机(main computer)和接口板组成,接口板用于连接computer和drive-system和探测器(sensors)。更好的设计是使用低功功耗的嵌入式计算机,但可惜资金预算不允许。但无论如何,我们拥有200MHz的旧的Pentium处理器,想像一下火星探测者号,200MHz已经是绰绰有余了!

设计中一个很大的挑战是电源的消耗。桌面式计算机的主板会消耗很多的电源,为了省时又省钱,我们直接使用了桌面式计算机的AT电源。虽然工作起来不是很有效率,但这很容易。未来的计算机应该使用捐献来的膝上型计算机上的替代品,这样耗电少,就可以直接用电池工作了。

接口板上使用了晶体管来构成中继电路,以让PC的并口输出的微弱电流能够驱动马达工作。探测器上的输入也先进入这里缓存起来然后才进入PC的并口。
这很简单,但它确实能工作!

下面要说的就是这上面的软件!所有这三个机器人都是运行Linux的!
最开始我们尝试DOS和QBASIC,但是DOS上面能做的工作太有限了,于是我开始在K9上尝试使用Linux。

K9上我们安装的是MandrakeLinux发行版。Mandrake上面有少量几个安装参数这对于K9已经足够了。但这时,我们学校转向了GentooLinux,于是后来我们的"卫兵"机器人运行在Gentoo上。可能你们觉得这么简单一个机器人上使用Gentoo是有点小题大作,可能是吧,也可能不是。

就我个人而言,安装Gentoo都比其它发行版要快,可能是因为我安装它的次数太多了。一个祼的stage3系统安装起来相当小,而且Gennto最大的好处在于它的添加和更新软件都是那么快速和容易,并且所有软件都是编译的,这样让它运行得尽可能地快。

你可能觉得在旧的Pentium上编译软件很慢,但所幸的是"卫兵机器人"有连网能力,它能连上实验室的机器,使用"distcc",它有了20个Athlon1500+和超过7G的RAM,相信我吧,使用"卫兵机器人"编译软件是非常快的。

Gentoo Linux的另一道特色就是非常地Python化(由于它的Portage系统)。学校里八年级的学生就有使用Python学习编程的课程,尽管Python是一个解释语言,但它简单而且强大。对于我们设计的机器人的需要,Python已经运行得相当快。我们还混合了一些C用于操纵并口,但是大部分代码都是Python的。这允许学生们快速地修改并立即就能见到结果。并且我们的实验室是基于linux的,这样学生们可以很容易地从他们的工作站上使用SSH和KDE的fish程序来连接和操纵机器人。

使用Linux和Python来操纵马达本身不是太难。真正的挑战在于对于整个外部环境和机器人内部状态的察知。

大部分机器人同时使用马达作为里程表。这让我想到与其实现一个精巧的电路用于测量里程并需要软件来读取它,为什么不使用一种对计算机更为友好的方式呢?这让我发明了"光学鼠标里程表"。
(这个最精彩的设计见原文图四)

光电鼠标被安装在前轮上,它对路程的测量简单而有效率。通过对/dev/psaux的读取来计量路程,由于linux对光学鼠标的感知精确度非常高,这使机器人对路的感知已经达到了厘米级。转向控制部分也同样由这种光学测量的原理来达到。另一位高年级学生还编写了自动纠正系统通过探测器等对已知边界如墙壁的感知让机器人不断修正内部状态。

使用Linux作为操作系统还使机器人的能力超越了原始的目标。如有人在讨论可以增加GPS接收器,

~~~~~

--
程任全

Bibby

unread,
Mar 26, 2007, 9:15:12 PM3/26/07
to sz...@googlegroups.com
so cool.

在07-3-26,rae l <crq...@gmail.com> 写道:

debra

unread,
Mar 26, 2007, 10:58:35 PM3/26/07
to sz...@googlegroups.com
中国什么时候可以把它作为中学专门的教学课程呢?

ZC Miao

unread,
Mar 26, 2007, 11:03:14 PM3/26/07
to sz...@googlegroups.com
On Mon, 2007-03-26 at 23:48 +0800, rae l wrote:
> 推荐linuxjournal文章,看Michael Surran怎样用linux做机器人!
> [原文Do-It-Yourself Robots with Linux]
>
> http://www.linuxjournal.com/article/9103
真有趣,我想去电子市场找找这些东西,从没干过硬活,想试试看了

--
http://hellwolf.cublog.cn
gpg --keyserver pgp.mit.edu --recv-key 0x6B174C6F

If you would understand your own age, read the works of fiction produced
in it. People in disguise speak freely.

Bibby

unread,
Mar 26, 2007, 11:05:23 PM3/26/07
to sz...@googlegroups.com
哈哈,好啊。

说说你的想法,也许还有别的人有兴趣呢,可以一起做。

在07-3-27,ZC Miao <hellwol...@gmail.com> 写道:

Bibby

unread,
Mar 26, 2007, 11:07:21 PM3/26/07
to sz...@googlegroups.com
等吧

在07-3-27,debra <chd...@gmail.com> 写道:

Yuan Yijun

unread,
Mar 26, 2007, 11:13:03 PM3/26/07
to sz...@googlegroups.com
在 07-3-27,ZC Miao<hellwol...@gmail.com> 写道:

>
> On Mon, 2007-03-26 at 23:48 +0800, rae l wrote:
> > 推荐linuxjournal文章,看Michael Surran怎样用linux做机器人!
> > [原文Do-It-Yourself Robots with Linux]
> >
> > http://www.linuxjournal.com/article/9103
> 真有趣,我想去电子市场找找这些东西,从没干过硬活,想试试看了
>

一套带机器人的乐高积木好贵的吧。
(google search uIP)


--
bbbush ^_^

rankle_

unread,
Mar 27, 2007, 3:20:10 AM3/27/07
to 深圳 Linux Unix 用户组
On 3/27/07, debra <chd...@gmail.com> wrote:
> 中国什么时候可以把它作为中学专门的教学课程呢?
他们中学的教师都有权利决定给学生们上什么课程和使用什么教材,

>

On 3/27/07, ZC Miao <hellwol...@gmail.com> wrote:
>
> On Mon, 2007-03-26 at 23:48 +0800, rae l wrote:
> > 推荐linuxjournal文章,看Michael Surran怎样用linux做机器人!
> > [原文Do-It-Yourself Robots with Linux]
> >
> > http://www.linuxjournal.com/article/9103
> 真有趣,我想去电子市场找找这些东西,从没干过硬活,想试试看了

其实这也是我在大学时最想做的事情,不过当时的想法比起robot可能简单一点,在学习模电和数电的过程中,我决定自制一块电路板,并使用串口线连接到
计算机,使用Linux来指挥它工作。不过当时只进展到买了口串口数据线,Protel制板,然后使用小型电烙铁来焊接串口基座和一些元件,然后在
Linux上写驱动程序,这个过程开始很顺利,后面就进展越来越慢,直到毕业都没有完成。
当时最大的困难是在学校里找不到有对硬件原理和Linux都有兴趣的人,当时能上网的机会很有限不能在网上找到伙伴,所以我差不多处于一种孤军奋战的状
态。现在有了论坛把大家联系在一起,希望那些还在学校或者有时间的人们能将这个过程进行到底。

ZC Miao

unread,
Mar 27, 2007, 6:55:45 AM3/27/07
to sz...@googlegroups.com
On Tue, 2007-03-27 at 11:05 +0800, Bibby wrote:
> 哈哈,好啊。
>
> 说说你的想法,也许还有别的人有兴趣呢,可以一起做。
我?我想学会怎么用电焊,怎么飞线,怎么画板子然后给印刷出来

--
http://hellwolf.cublog.cn
gpg --keyserver pgp.mit.edu --recv-key 0x6B174C6F

You have had a long-term stimulation relative to business.

rankle_

unread,
Mar 27, 2007, 9:45:49 AM3/27/07
to 深圳 Linux Unix 用户组
On 3月27日, 下午6时55分, ZC Miao <hellwolf.mi...@gmail.com> wrote:
> On Tue, 2007-03-27 at 11:05 +0800, Bibby wrote:
> > 哈哈,好啊。
>
> > 说说你的想法,也许还有别的人有兴趣呢,可以一起做。
>
> 我?我想学会怎么用电焊,怎么飞线,怎么画板子然后给印刷出来
电焊的技术需要自己锻炼,买一个30W或25W的小型电烙铁都可以工作。小的电子元件很容易烧坏,所以要选择小功率的。

制作电路板方面我没有找到Linux上有什么好的程序,当时学校的制板工厂只接受Protel等几种专有软件的二进制文件格式,所以只好做成这个格式
的。
一般是两块起印,制作两块60平方cm的单面板的花了100块钱。

其它的模拟放大电路等可以自己用晶体管设计一个,也可以直接在电子市场上购买集成的,
如果是纯数电的设计可以先考虑编码控制LED发光管等任务,74系列的比较简单。

>
> --http://hellwolf.cublog.cn

ZC Miao

unread,
Mar 27, 2007, 9:59:01 AM3/27/07
to sz...@googlegroups.com
> 制作电路板方面我没有找到Linux上有什么好的程序,当时学校的制板工厂只接受Protel等几种专有软件的二进制文件格式,所以只好做成这个格式
> 的。
> 一般是两块起印,制作两块60平方cm的单面板的花了100块钱。
我就是最关心这个问题,没做过,也不熟悉整个流程。除了protel,谁能给个使用
其他软件的实际经验?

--


http://hellwolf.cublog.cn
gpg --keyserver pgp.mit.edu --recv-key 0x6B174C6F

There is always something new out of Africa.
-- Gaius Plinius Secundus

rankle_

unread,
Mar 27, 2007, 10:14:28 AM3/27/07
to 深圳 Linux Unix 用户组
On 3月27日, 下午9时59分, ZC Miao <hellwolf.mi...@gmail.com> wrote:
> > 制作电路板方面我没有找到Linux上有什么好的程序,当时学校的制板工厂只接受Protel等几种专有软件的二进制文件格式,所以只好做成这个格式
> > 的。
> > 一般是两块起印,制作两块60平方cm的单面板的花了100块钱。
>
> 我就是最关心这个问题,没做过,也不熟悉整个流程。除了protel,谁能给个使用
> 其他软件的实际经验?
恐怕没有。这个没有办法一厢情愿地使用自由软件的代替方案,关键是工厂可能不支持,这个需要调查,
目前中国的出版界被Word格式所垄断,机械制图是AutoCAD,电子制图是Protel等,全都是专有软件的方案,拿个OpenOffice的格式
出来他们都不知道怎么打开......

>
> --http://hellwolf.cublog.cn

rankle_

unread,
Mar 27, 2007, 10:25:12 AM3/27/07
to 深圳 Linux Unix 用户组
真正有兴趣的人还是可以先从简单的做起,直接使用导线连接或者面模板插好都可以,先不考虑到制板吧。

NetSnail

unread,
Mar 27, 2007, 9:15:57 PM3/27/07
to 深圳 Linux Unix 用户组
其实这也是我大学时想做的事呢。做机器人需要的各个步骤,基本上都涉猎过,不过没有完整的走一遍。

如果现在大家还有兴趣,不如真的就来做一个呢!

rae l

unread,
Mar 28, 2007, 7:32:22 AM3/28/07
to sz...@googlegroups.com
On 3/28/07, NetSnail <NetS...@gmail.com> wrote:
> 其实这也是我大学时想做的事呢。做机器人需要的各个步骤,基本上都涉猎过,不过没有完整的走一遍。
请看(Linux Device Driver)上序言中作者Alessandro的自我介绍:
http://lwn.net/Kernel/LDD3/

Alessandro's Introduction
I've always enjoyed computers because they can talk to external
hardware. So, after
soldering my devices for the Apple II and the ZX Spectrum, backed with the Unix
and free software expertise the university gave me, I could escape the
DOS trap by
installing GNU/Linux on a fresh new 386 and by turning on the
soldering iron once
again.

我一直喜欢玩计算机,就因为通过计算机我可以控制外部的硬件。我曾为ApplecII和ZXcSpectrum系统焊接我自己的设备,之后,有了大学中学到的Unix和自由软件专业知识,通过在新的386系统上安装了GNU/Linux并再次玩起了自己的电烙铁,我逃离了DOS的陷阱。

>

--
程任全

Wick

unread,
Mar 28, 2007, 7:53:52 AM3/28/07
to sz...@googlegroups.com
佩服各位~
本人对硬件七窍通六窍。

我要在这里发话,大家是不是想骂我呢?

纯粹爱好,喜欢Linux,喜欢编程。
希望以后多多指教。

ZC Miao

unread,
Apr 7, 2007, 7:46:05 AM4/7/07
to sz...@googlegroups.com
On Mon, 2007-03-26 at 23:48 +0800, rae l wrote:
> 推荐linuxjournal文章,看Michael Surran怎样用linux做机器人!
这两款GPL软件:
http://geda.seul.org/
http://www.lis.inpg.fr/realise_au_lis/kicad/

学过电路设计的人来评价下呢?

--


http://hellwolf.cublog.cn
gpg --keyserver pgp.mit.edu --recv-key 0x6B174C6F

I'm not laughing with you, I'm laughing at you.

rae l

unread,
Apr 28, 2007, 10:40:02 PM4/28/07
to sz...@googlegroups.com
这个活动还是很有趣的,不知有人开始行动没有?
Reply all
Reply to author
Forward
0 new messages