这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » Quadlator II--基本组件及无线网络访问的配置

共1条 1/1 1 跳转至

Quadlator II--基本组件及无线网络访问的配置

工程师
2011-03-15 14:34:06     打赏
Quadlator II--基本组件及无线网络访问的配置
写于: 星期六 29 四月 @ 12:46:17
 
智能机器人开发Quadlator II的第一章

Quadlator II--基本组件及无线网络访问的配置 作者:baredog

2003 年秋天的时候,残暑已经过去,天气一天一天凉了下来。我刚巧有一段比较轻松的时间,可以回想那个夏天热火朝天制作机器人的事情。那个夏天现在想起 来已经有些模糊了,大概每天就是在实验室搭电路,焊板子,配线,写程序,调试;在最紧要的关头,我的一颗智齿开始拼命的生长,疼得睡不着。我记得那 是个星期日,所有牙科医院都休息了,我妻子查到町田市有一家诊所开门,就带我过去拔除了那颗结实的智齿。然后我肿着半边脸和脖子到实验室想干活,结果发现 没法低头脖子已经不能动了。后面的几个星期,我妻子天天顶着中午的烈日,给我送去她亲自加工出来的流食。今 天想起这些,我仍然觉得感动。就是在这种状 态下,Quadlator II在9月20日的RSJ2003上demo成功。之后在2003年11月,这个机器人实现了步行功能。

现在思考起来,我觉得实在很难说出我对这个机器人到底是一种什么想法。写这些东西,并且发布到网上也说不好到底是什么一种初衷。也许是希望介绍一些东西给国内的朋友们,也许仅仅是做一个记录(毕竟停顿了2年),也许和一些人把自己的宠物照片贴到网上是同一种心里。

一、基本系统

机器人Quadlator II是一个4足12关节机器人(每足3关节),各个关节由直流电机驱动,直流电机自带了Encoder,以测量转速.核心控制器,是一个东京工业大学的产学联合开发的嵌入式系统--T.I.Tech Wire。它负责把计算好的转角指令(或者转矩)通过DAC输入电机驱动模块TITech Robot Driver. 这个driver利用pwm驱动电机,电机旋转后encoder的脉冲送入IO Counter模块,该模块再把角度送入titechwire.

在我的系统中,机器人体内的嵌入控制器titechwire并不进行复杂的运动姿态和控制算法计算.它把各个电机的角度打包利用 socket通过无线LAN上传给PC机,该机器上运行我用Visual C++ 写的控制算法和姿态计算程序,程序把计算后各个电机应该转动的角度命令打包再通过Winsock传给titechwire.titechwire把12个关节的角度分配给各个titech robot dirver.如此循环.控制程序为了计算矩阵方便快速采用了Matlab数学库接口Matcom 4.5中的Matlib


在此之前,2003年的4,5月份,我曾经试着利用Visual C++和Matlib在Windows 9x下直接控制ISA Bus的DA卡和Counter卡控制第一代机器人(Quadlator 1)。现在这个方案,其实是这个思路的延伸:高层程序不变,底层移植到Linux上,中层程序改用网络通讯实现.

Titechwire不仅包括核心的嵌入式CPU和外围电路,还包含一些额外的模块:

  • titechwire主板

  • titechwire cpu板

  • titechwire PCMCIA接口板

  • titechwire DAC模块

  • titechwire ADC-IO-Counter模块

  • tietchwire 模块间通讯组件

  • 各部分用电缆连线若干

虽然国内的朋友可能无法找到这样类似的套件,因此也许会问:你介绍这些东西的细节,对我们有什么用呢?在2003年我写这篇文章时,的确没有考虑这么多,但是现在重新整理的时候,我感觉仍然有必要介绍,不是细节,而是供我们借鉴的地方。从RobotDIY等一些国内著名网站上可以看到,这几年国内的套件市场越来越丰富,除了LEGO这样著名的商业化套件外,国内一些厂商也逐渐面向教育产业开发套件,并诞生了一些活跃的公司,如上海广茂达,上海英罗等等。套件的好处是避免重复开发同样的东西,开发者不必每次都从0做起,而是可以借助别人的智慧,把自己的注意力集中到机器人本身上来。这样从社会这个大系统来看,其实是节约了精力,提高了效率。

像titechwire提供的这些模块,如果从产品线上来看,其实是针对开发者的,开发者可以把自己的要求定制到非常细致,包括闭环的组织,反馈类型的选择等等。这一点明显有别于针对青少年儿童的那些商业组件,针对青少年的时候,要简化难度,减少可选择的内容,一个包装好的舵机,一个接触开关也许比上面的DA和DIO更加合适。目标消费群体和产品永远是紧密绑定的一对。

1.1、组装
  • Titechwire的CPU板和主板是分开的,当第一次安装系统或者系统出现严重问题时,可以单独把CPU板拿去重新 Flash,这样就提高了互换性。 Flash好的CPU板内,已经安装好了Linux的基本系统,和RT-Linux的相关部分,此后就可把cpu板插入到主板上板和现在计算机里的ram 条插法相 似,有一个不左右对称的缺口,这样不用担心插反

  • CPU片内的存储空间有限,所以一般的现代嵌入式系统都支持外扩存储器,Titechwrie使用CF卡(Compact Flash),可以插入到背面,CF卡可以是type1或者type2的,单要求是5V,不能是3.3V,根据说明书,CF卡被自动当成D盘处理。如果是今天,也许会是流行的MMC卡或者MiniSD了吧。

  • Titechwire提供一个PCMCIA接口,可以直接插入商业化的无线网卡,这样用户就可以通过远程PC直接访问系统内部,开发好的程序,也可以通过TCP/IP传入系统。 (现在也许可以采用Blue tooth技术了吧。)

  • 系统供电的电源要由外部提供,电源电缆有2根红线,并联接+5V,有2根黑线,并联接GND,直流电源至少要提供2A的电流,如果后面的电机功率比较大,则至少要3A电流。当时我曾吃过这个的亏,由于系统功耗大,把2A开关电源的电压拉下来了,在低电压下直接造成了系统故障,再重新启动时,已经无法boot 了。现在回过头来看,系统上应该提供电压监测功能,当供电电压不足时,立即保存当前状态,停止机器人,并关闭系统。

  • Titechwire 还提供了RS232接口,这个接口是相当必要的。因为在整个系统配置好前,尤其是无限Lan可以使用前,这是唯一的外部访问接口。附件的电缆中有一 RS232接口线,一边为标准Desub 9 (male).一边是4线插口,Titechwire主板上有2个RS232接口,要接在1号口上面,因为系统配置中/etc/inittab仅仅打开了串口1(后面会详细介绍)。这个串口再将来还可以用来做状态的监控。关于串口,可以再多说一句,2006年初我帮助一个朋友配置Cisco的路由器时,发现了上面也有一个串口,那是在路由器所有功能都故障时和第一次开机使用时唯一控制系统的手段。

以上步骤完成后,基本系统如图Fig. 1所示

 

Fig. 1 CPU板,主板,PCMCIA板,无线网卡组成基本系统

1.2 上电测试我2002年底,在松野研究室接触机器蛇ACM-R3时,曾经看到过机器蛇尾巴上安装的一套嵌入式系统,不敢肯定是不是titech wire的早期产品。有一点我至今还记得,就是那套系统上,设有键盘接口和显示器器接口。现在评判起来,看来这些接口是多余了。如果仅仅是为了访问系统内部,一个简单的串口就足够了。

Titechwire因此没有保留显示器接口和键盘接口(利用键盘和显示器像对待普通pc那样访问它看来也意义不大)。可以通过在普通计算机运行模拟终端软件,经过RS232来控制titechwire.

电气连接上,需要一条RS232接口电缆,把titechwire上的dsub9和计算机的串口连接起来。这条电缆一般可以购买,(如今国内中关村这样的电脑城也卖得非常普遍了),也可以自制。我现在还记得自制的口诀。那是读硕士时在长沙做项目学的,9针串口最核心的3根线就可以,收,发和地(GND),对应针脚2,3和5。

此后就可以通过这台普通pc访问系统内部了。PC上可以用Linux也可以用Windows,如果是Windows的话,需要一个终端软件。当时的日本同学喜欢用一个软件叫tero term,现在回想起来,觉得这点上也有他们自己的特色:如果一个软件,有日本人自己开发的,日本人会尽量用它,就好像在日本人几乎只买日本汽车一样。如果我们中国人也这样支持自己的产品,相信我们会进步得更快。我当时使用了Windows自带的超级终端(HyperTermial)。

今天仍然客观的评价titechwire的话,作为大学圈内的一项有意义的事情,它的确非常的出色,极大的提高了大学圈内研发机器人的效率,避免了重复的开发,使得研究人员和学生把精力集中到机器人本身上来。但是作为一个产品,它仍然有一些不足,比如说明书。这套套件除了自带光盘外,没有任何说明书,使用手册,故障参考等等。自带的光盘内有一篇论文,是这套系统的研发者写的,有一个例子程序,是当时的环境编译通不过的。这也许就是产学机构和正规公司的差距。2005年流行的一句细节决定成败的话,也许就是这个意思。当时面临的第一个问题就是串口的数据格式,当我确认没有任何书面资料可查的情况下,只好拨通了电话问titechwire的发明者兼维护者。

通讯格式是:

  • 波特率19200bps
  • 数据位8,
  • 奇偶校验无,
  • 停止位1

在超级终端设置上面的通讯格式后,就可以上电了。titechwire上面没有电源开关,只好自己做一个用。上电后 titechwire的4个LED指示灯会不停的闪烁,这一点和PC的指示灯类似。Linux在boot的过程中,所有的信息也会在超级终端上显示。最终提示用户输入密码:

wsap32FE login:

仍然是同样的问题,没有任何书面材料标明了系统初始密码。我当时甚至找了包装盒子,CD背面等地方,最后还是只好打电话问,结果密码是 TW1x520。后来我2003年10月份我去和松野实验室的同学龟川哲志聊这件事,他也觉得这件事比较难理解,在他的个人网页中,他写到:没有root密码!!!需要询问;如不询问,就无从知道。

此后可以利用passwd命令修改这个密码

前面提到过不能使用titechwire的串口2,原因现在可以说明了:titechwire根本就把串口2禁止掉了,观察 /etc/inittab文件,会发现这样的内容

#Serial lines
s1:12345:respawn:/sbin/agetty 19200 ttyS0 vt100
# s1:12345:respawn:/sbin/agetty 19200 ttyS1 vt100

具体是出于什么原因,至今也没有清楚。的确,titechwire距离成熟的产品,还是有一定的距离。也许大量同类产品出现,形成竞争,会客观的促进这些方面的提高。

1.3、配置无线网络

通过无线网络可以更加方便的访问系统,这也是绝大多数嵌入式系统流行的一种方式:开发平台+目标平台,然后交叉编译+远传下载,最后是在线调试。但是当时没有理解这么深,只是觉得有如下的三点理由:

  • 要用自己写的程序控制机器人,titechwire仅仅自带了一个基本的嵌入式系统,而没有编译器gcc(现在明白这太正常了,哪个嵌入式系统不是这样呢?)。所以 不能在titechwire上直接编辑、编译程序(否则的话交叉编译还有什么意义呢?)。

  • 要把交叉编译好的程序程序远传到titechwire上,串口终端无法做到这一点,虽然可以用CF卡,但是平时titech安装在机器人内部,每次都打开机器人,取出CF卡会非常麻烦。

  • 通过无线网络,只要在pc机上编译好目标程序,就可以通过ftp或者rcp等方法,将程序非常方面的传入目标系统。如果想直接控制系统,也可以利用ssh或者telnet(titechwire保留了telnet,当时从安全性上想,觉得很不理解,现在觉得这也很正常,连Cisco的路由器也是如此,因为一旦嵌入系统投入使用,毕竟不像PC一样,需要长期暴露在 Internet的环境下。)

1.3.1基本网络配置

Titechwire能够认出绝大多数无线网卡,查看/etc/pcmica/network.opts发现好多无线网卡的模块都有了。所需要的,只是一个无线AP。这也许要归功于Linux社区,这也正是嵌入式Linux生气勃勃的原因之一。

此后运行Linux的命令ifconfig,发现系统列出了lo和eth0,说明无线网卡已经工作了.IP是 192.168.100.43

我的开发用pc的IP在192.168.0.x的网段内,需要在路由器上添加一条路由来连通开发PC和嵌入式系统的网络。此后就可以通过在开发pc上运行ping 192.168.0.43来确认是否正常。

如果无线AP不带路由功能,就需要设置固定ip了。titechwire的嵌入式系统本身装载的工具有限,没有netcfg、 netconfig这类工具,ipconfig eth0 ipaddr这样的方法仅能临时改变IP,重启后就会丢失。因此需要编辑/etc/rc.d/rc.inet1配置文件来设置IP地址,大概把内容改成这样:

IPADDR=192.168.100.43
NETMASK=255.255.255.0
NETWORK=192.168.100.0
BROADCAST=192.168.100.255
GATEWAY=192.168.100.1

此后还要禁止掉dhcp。编辑/etc/pcmcia/network可以看到这样的内容:

elif is_true $DHCP; then

后面是调用dhcpd启动去获取ip的脚本,说明要把$DHCP变量设置成NO,继续查看 /etc/pcmcia/network.opts会发现这样的行:

DHCP=y

把这个变量改成n就能不启动DHCP。

网络配置的确是一个比较麻烦的内容,并且是一个潜在的问题。这个问题直接在2003年9月的demo中暴露了出来,后面1年多的几次demo中也处处是个困扰。在机器人demo中,有很多的机器人使用了无线LAN,会场内部也有很多AP和使用无线LAN的设备(笔记本,PDA等)。IP难免要打架,于是需要统一规定各个设备使用channel。几乎每次demo,系统启动后,无线LAN的连接都非常困难,通常要耗费几分钟的时间,才能连接上。而对于使用电池的机器人来说,每一秒钟电力的消耗都是非常大的代价。

1.3.2、更改hostname 缺省的机器名字是wasp32FE,为了方便区分,可以更改hostname。毕竟在日本大学圈内有太多人使用titechwire了,一起DEMO时混乱在所难免。当时尝试了改了很多配置文件,都不成,最后发现在这里 /etc/pcmcia/network.opts中

DHCP_HOSTNAME=xxxxxxxxxxxxxxxx

把这行注释掉,改成希望的名字例如
DHCP_HOSTNAME=quadlator

至此,基本上已经把titechwire最基本的东西配置好了。现在可以在网络上任何一台计算机访问系统(ssh或者telnet, ftp等等),进行后继的开发了。

=====

回到总目录

返回ROBOTDIY主页




关键词: Quadlator     基本     组件     无线网络     访问         

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]