有些注定了被遗忘的话,也就有的注定了属于沉静的自私.

Rovio 自制灯塔

来自森亮号航海见识 {SLboat Insight;}
跳转至: 导航搜索

名称

Rovio导航器、引路器、TrueTrack Room Beacon

或者我喜欢官方的叫法-灯塔

森亮号Rovio灯塔

由于已经有了初步的成功,森亮号打算更近一步,自制一个套间出来:
森亮号Rovio灯塔

意义

  • 官方已经不再支持Rovio这个项目,也不会再制作灯塔,以后只有自制灯塔了。

好奇

  • 如果两个信标重叠,web界面显示的是哪个信标
摩洛哥的经验
信标必须有重叠信号,根据信号强度的强弱不同,显示强的那个信标号
JustCapIt2224.jpg
零无的见识
信标记得有人买过4个,说路径基本还是没问题的。只是要返航的话要一个个信标的返。也就是先从4到3,然后从3到2 从2到1 从1到0
  • 如果两个信标不重叠 那对导航有何特别的意义 那就只能做路径了吧

有趣

  • 如果两个信号交差 比较差的信号会显示在next_room
JustCapIt2318.jpg
  • 信号稳定 强度 会影响漂移
JustCapIt2319.jpg
充电灯塔通常漂移只在度数会动,54第一个坐标几乎不动
  • 两个发射管的距离似乎不太重要。
  • 零无认为保存回家点的机制是:
你第一次保存基站位置的时候,小车回先向前跑到一个位置(A点),然后从A点抬头开始执行返航操作
而A点也就被保存了下来
而下次执行回家的时候小车是先走到A点坐标,然后执行返航动作
  • 在见识里的家伙使用了其他的高功率LED也成功了:
Radio Shack 276-143
  • 只有在充电坞才能保存家,不然一直傻一下就停了。

查看灯塔信号强度

http://192.168.1.78/rev.cgi?Cmd=nav&action=1
灯塔参数
JustCapIt2615.jpg
JustCapIt2616.jpg
JustCapIt2617.jpg
  • 强度指数
    • 其中的ss为强度,越大越好,靠的很近的时候会有2万多。
      JustCapIt2265.jpg
  • 当摄像头抬起的时候,beacon参数就会读出东西,becon参数的确是充电座的坐标
    • 信号最强的指数是65535,16位。

自制灯塔

致谢ScribbleJ
http://www.thingiverse.com/thing:7101

第一次实践

感受

  • 使用arduino来实践,成功
  • 遗憾的是电流的万用表好像挂了

过程

Slboat eos 2698.JPG
Slboat eos 2699.JPG
Slboat eos 2701.JPG
Slboat eos 2702.JPG
Slboat eos 2704.JPG
Slboat eos 2705.JPG
Slboat eos 2706.JPG
Slboat eos 2707.JPG

信号

对着车可以满格
SLboat-Screen 2012-10-17 16.56.01.png
SLboat-Screen 2012-10-18 8.41.25.png
SLboat-Screen 2012-10-18 8.41.37.png
对着天花,大概两格

源码

void setup(){
  tone(8, 5010);
}

void loop(){
//nothing to do
}

原灯塔投射到天花板的星标

JustCapIt1826.jpg[1]

灯塔原理有关

自带灯塔的电路一部分
JustCapIt1831.jpg
波长的玩意
JustCapIt1828.jpg

灯塔频率

60HZ系统

北极星定位系统60HZ发射频率(50%占空比,波长:940nm)
ID LED1频率 LED2频率
9 5010 4050
8 4890 3930
7 4770 3810
6 4650 3690
5 4530 3570
4 4410 3450
3 4290 3330
2 4170 3210
1 3150 2070
0 3030 2010(基地)

50HZ系统

北极星定位系统50HZ发射频率(50%占空比,波长:940nm)
ID LED1频率 LED2频率
9 4725 3825
8 4625 3725
7 4525 3625
6 4425 3525
5 4325 3425
4 4225 3325
3 4125 3225
2 4025 3125
1 3925 3025
0 2025 2325(基地)

有趣

  • 50HZ的最后几个灯塔有着奇怪的关系和60HZ的不同
2 4170 3210 差值1020
1 3150 2070 差值120
0 3030 2010(基地)
  • 只有0、1房间的差值大于9605,3030-2010=1020,3150-2070=1080,之后的房间全部是960,5010-4050=960,4770-3810=960。
  • 看起来是频率精度问题,并不因为一点点频率
LED1看起来是5的倍数,而LED2看起来是9的倍数,真奇怪。
  • 有趣的是频率50HZ和60HZ的区别是:
    • 每个灯塔频率之间相差2倍单位HZ
    • 50HZ的临近频率差是100HZ
    • 60HZ的临近赔率是120HZ
  • API里看起来有某个设置灯塔的参数
SLboat-Screen 2012-11-02 22.53.16.png
SLboat-Screen 2012-11-02 22.53.52.png
SLboat-Screen 2012-11-02 22.54.50.png
    • 读取灯塔频率,但是wall-e认为这是摄像头设置抗日光灯的。
http://192.168.1.78/GetCamera.cgi
    • 设置灯塔赔率
http://192.168.1.78/SetCamera.cgi?Frequency=50
  • 对60HZ的机器尝试用50HZ灯塔,完全没有效果。

制作者使用的源码

perl源码

#!/usr/bin/perl
use Net::Rovio;
use Data::Dumper;
use Device::SerialPort;

$|=1;
our $delay = 1.5;
our $step  = shift || 50;
# 3200:4200
our $startx = shift || $step;
our $endx   = shift || $step * 100;
our $starty = shift || $step;
our $endy   = shift || $step * 100;

our $threshold = 5000; # happiness!
our $mirror = 0;



#print Dumper($r->getreport());
my $r = Net::Rovio->new("172.16.1.48",'scribblej','');

my $p = Device::SerialPort->new("/dev/ttyUSB1");
$p->databits(8);
$p->baudrate(9600);
$p->parity("none");
$p->stopbits(1);

sub sendhz($$)
{
  $p->write(sprintf("%05.5d%05.5d", shift, shift));
}

sub getsignal()
{
  my $t = $r->getreport();
  return $t->{ss};
}

sub getroom()
{
  my $t = $r->getreport();
  return $t->{room};
}



sub test()
{
while(1)
{
  sendhz(100,100);
  select(undef, undef, undef, $delay);
  print("Signal is wrong, ss is " . getsignal() . " room " . getroom() . "\n");
  sendhz(2010,3030);
  select(undef, undef, undef, $delay);
  print("Signal is right, ss is " . getsignal() . " room " . getroom() . "\n");
}
}

sub run()
{
my @last = (1,2,3);
for(my $x=$startx;$x<=$endx;$x+=$step)
{
  for(my $y=$starty;$y<=$endy;$y+=$step)
  {
    if($mirror and $y < $x) {$y = $x;}
    sendhz($x,$y);
    select(undef, undef, undef, $delay);
    my $sig = getsignal();
    push @last, $sig;
    shift @last;
    if($last[0] == $last[1] and $last[0] == $last[2])
    {
      print STDERR "ERROR: BOT STUCK - REBOOT.\n";
      printf("# reboot\n");
      $r->reboot();
      sleep(30);
      $y -= $step * 3;
      if($y < $starty) { $x-=$step; $y=$endy-(3 * $step); }
      @last = (1,2,3);
      redo;
    }
    printf("%04d %04d\t%06d\t%s\n", $x, $y, $sig, getroom());
  }
}

}

sub justreport()
{
  while(1)
  {
    print "ss: " . getsignal() . " r: " . getroom() . "\n";
  }
}

run();

导航系统官方网站

http://www.evolution.com/products/northstar/

制作对象

  • 固定在墙上发射
  • 稳固,不对人
  • 每个房间都能定位

自带灯塔的LED管

看起来是1W的贴片玩意
JustCapIt2266.jpg

原理想法

  • 看起来只要两个红外发射管,各自不同频率,就能被识别了
JustCapIt1830.jpg
JustCapIt1829.jpg
  • 使用arduino点亮led,也会有用:
ScribbleJ:Wiring up a quick circuit with an Arduino to blink a couple of LEDs at the same rate, I took the Rovio and exposed it to my LEDs.
Arduino 产生频率是的完全没问题,只是如何两个一起产生呢。
  • 发射管使用 TSAL7200
  • 驱动电流,从100ma起步
  • 波形?看起来就是一直重复的占空比-50%
  • 啊哈!555,它可以产生脉冲振荡器。
NE555 振荡器模块

其他的可用替换管

  • 来自国外的介绍
http://www.radioshack.com/product/index.jsp?productId=2062565
http://www.maplin.co.uk/high-power-infrared-emitting-diode-2253

少见的出售者

JustCapIt1675.jpg

一种可能性

自制信标看起来关键是频率。

兼容产品

JustCapIt1701.jpg

官方介绍

JustCapIt1676.jpg
JustCapIt1677.jpg

JustCapIt1803.jpg

尝试

wall.e的尝试

我用ne555做过。
开始使用2K的电位器调整频率,很不稳定,比如我调的是信标8,过了一会就没信号了,再一会可能成9
应该是精度问题,后来没再买高精度的电阻、电容以及电位器测试。
电阻是普通的
用单片机也做过,我不会编程,是别人提供的hex文件,但是输出电压、电流都太小,与原来的信标能照到天花板再反射下来,差距较大,后来单独加了电源,但买的是150ma的红外,还是达不到原来的效果。后续没在测试。
单片机的精度是没问题了,信标想要几号就是几号。
红外管是普通5mm的
功率太小,直接对着小车,大概3米的距离信号能满格,但反射就不行了

见识

How-To: Build your own Rovio Northstar Beacon: RoboCommunity 沿途见识[2]

The Northstar system used in the Rovio uses two infrared LEDs; we all know this.  The LEDs are programmed to flash with a 50% duty cycle, at various speeds.  The different speeds tell the robot which station ID it is looking at.

DIY Rovio Northstar Truetrack Beacon by ScribbleJ - Thingiverse 沿途见识[3]

Sadly, the Rovio is a dead-end product; the manufacturer (Wowwee) never supported it very well and now has confirmed that they have stopped production and don't intend to ever bring it back.

New tracking beacons cannot be gotten for love or money, and despite the popularity of this product among hackers at one point, there is no data on the actual signaling protocol used by the Northstar system.

Unfortunately, they won't talk to me, and they want /thousands/ for the development kits for the Northstar product, so following legitimate channels is out. In addition, if they /were/ to fork over the details, I'd bet it would put my under an NDA that would prevent publication.

As I don't have /ANY/ tracking beacons (except the one built into the base station), my Rovio is somewhat limited in it's automatic positioning abilities.

From looking at the photos in the above thread before I got my robot (I've only had it for one day!) I'd guessed that the signaling protocol was as simple as flashing the two IR lights at different rates. That seems like the simple and obvious method to tell both one light in a beacon from the other, and to tell one set of lights for a beacon from the other.

So I opened up my beacon in the base station (instructions in the linked thread), and put a scope on the transistors that drive the LEDs. From my photos, you will see my conjecture seemed to be correct; the LEDs were being blinked at very specific and different rates.

Wiring up a quick circuit with an Arduino to blink a couple of LEDs at the same rate, I took the Rovio and exposed it to my LEDs.

SURE ENOUGH, it immediately recognized it as Tracking Beacon #0, the home station. SUCCESS!

The MAJOR problem is - I only know the signaling speed to reproduce beacon #0, and you can't have two #0s in a network, so what I have so far is only good for people whos base station is destroyed. With the signaling rates here, you can easily build a charging/dock/beacon0 unit from scratch.

If you want the actual rates, they're in my o-scope photo(s). :)

。。。

I've decided to move forward using stations based around a pair of transistors (I'll likely use some FETs since we're going to push > 100ma - maybe much > and also because they reduce component count) driving current into a pair of TSAL7200 LEDs (sourced here: rentron.com/remote_control/IRLED.htm) with the gates switched by a Atmega8, which can be programmed to a given station ID through SPI.

I'll post the circuit the way I have it laid out so far; if anyone can come up with a good single-sided layout for printing and etching at home you'll be doing better than I am; I keep ending up with a few jumper wires required. Keep in mind this circuit hasn't actually been built or tested as posted.

JustCapIt1830.jpg
JustCapIt1829.jpg

CSK.Blog-对Wowwee Rovio机器人的拆解和扩展可能性探讨 沿途见识[4]

我同时也采用了特殊的摄像机拍摄Rovio底座投射出来的红外光斑,这部分画面用普通摄像头和人肉眼是无法观测的。可以看出光斑与Evolution Robotics的原理描述上一致。不过值得注意的是要投射这样亮度的光斑,投射灯的发射功率不低。当我直接拍摄投射器发出的光斑是,因为光强过大,红外相机的中心感光部分直接出现里“溢出”现象。虽然人肉眼无法看到红外线,但如此强度的功率,恐怕还是会对视网膜造成损害。

JustCapIt1826.jpg
JustCapIt1827.jpg

WowWee Rovio摄像头远程控制小车 红外灯塔 的定位原理是什么? (amoBBS 阿莫电子论坛) 沿途见识[5]

cheaven:
会发射2个不同频率调制的红外光点,作为信标
接收器有4个面的硅光电池,可以认为是一个摄像头,拍摄2个信标的信号

通过三角关系可以计算出信标的相对位置和朝向

wochai:
北极星定位系统发射频率(50%占空比,波长:940nm)
ID LED1频率         LED2频率
9 5010                 4050
8 4890                 3930
7 4770                 3810
6 4650                 3690
5 4530                 3570
4 4410                 3450
3 4290                 3330
2 4170                 3210
1 3150                 2070
0 3030                 2010(基地)

http://www.thingiverse.com/thing:7101

Inside the WowWee Rovio TrueTrack Beacon: RoboCommunity 沿途见识[6]

How To Hack Open The Rovio TrueTrack Beacon

Removing the beacon 'eyeball' from a dock or a room beacon is pretty simple- all you need is a medium phillips head screwdriver, and a 1.5 mm hex key to open the eyeball. 

Remove the mast- squeeze the plastic tabs on the bottom together to unlock, and wiggle the mast out.
Remove the 6 screws from the underside of the base. Set them aside with the baseplate so they won't get mixed up with the others to come. 
Remove 2 screws from heat-sink and 3 screws from the circuit board.
Remove 3 screws holding the beacon base to the dock.
Remove 3 screws on the beacon retaining ring.
Now you can use the hex wrench to remove the one screw holding the eyeball halves together, on the side where the power wires come out.
This is the inside works of a 50 Hz room beacon. You can see the 4 small screws that hold the lens assembly on. At the bottom, R42 is present next to J3 marked "50 Hz": you can convert this beacon to a 60 Hz simply by removing R42. The labeled thru-holes on the right (CEB, GND, SDA etc) are not present on all versions of the beacon. At the top, to either side of the largish capacitors, are the three pins of the output transistors that drive the IR LEDs. Jump down to see the other side!

JustCapIt1679.jpg
JustCapIt1680.jpg
JustCapIt1681.jpg
JustCapIt1682.jpg
JustCapIt1683.jpg

How-To: Build your own Rovio Northstar Beacon: RoboCommunity 沿途见识[7]

I opened my base station and opened the Northstar unit inside it.  By applying a 100Mhz, 2-channel oscilloscope to the two LED-powering transistors, I was able to easily read the values used by the base station for channel 0.  They are (as near as I can measure) about 2.01Khz and 3.03Khz.  These have a common denominator of 165microseconds.  If I wire up two infrared LEDs to blink, one at ~2.01khz and the other at ~3.01khz with a 50% duty cycle THE BOT RECOGNIZES IT AS NORTHSTAR BEACON #0.

Rovio / Wiki / Open Hardware Room Beacon Project 沿途见识[8]

Open Hardware Room Beacon Project
This page will include information and links to assist in the efforts of the community to develop a low power, inexpensive room beacon. Wowwee no longer makes NorthStar beacons, and the only other source appears to be the Mint Automatic Floor Cleaner. Based on what's been posted on the web by Evolution Robotics, the Mint will probably recognize the OH Room Beacon too.
The design will feature a single sided PCB with a USB style connector for power. The top board will allow two up-pointing through hold IR LEDs to be mounted, and directed to spots on the ceiling. These spots should be visible to Rovio (or Mint). There is no plan to have visible light LEDs on this project. The goal is to design a 3 or 5 volt circuit that will be easy to understand and reproduce.

定位引擎—自主路径规划式智能扫地机器人的寻路系统核心_智能吸尘器的产品评测_爸爸乐轻松网 沿途见识[9]

    美国Evolution公司的NorthStar北极星室内定位专利技术则是一种典型的偏移检测式定位引擎,它通过放置在桌面的北极星导航模块,垂直(Y轴)向天花板发射一个肉眼不可见的红外线光斑而自身则由蓝色边角处再发射一个方向导航信号(X轴),Mint拖地机器人通过机身顶部的接受器,计算机与光斑垂直线Y轴的夹角及与方向信号X轴的夹角,并以每秒10次的检测频率精确计算夹角的改变,以此来判定Mint的位移方向和距离(误差≤15cm)。采用类似原理的还有LG和三星公司的扫地机器人,只不过它们是通过顶部安置有高清摄像头,采用的是可见光下的视频图像偏移检测技术达到类似功能。

    从理论上讲,偏移检测式定位引擎由于不能采用物理手段直接检测房间的形状和大小,而是定位机身当前所在位置并通过自身的运动来估算房间大小,所以在测量精度和清扫覆盖率上不及边界扫描式定位引擎。采用路径规划式寻路系统的扫地机器人都有一个共同特征,即并非采用类似布朗运动的随机行进路线进行清扫工作,而是采用规则式直线路径完整覆盖整个清扫区域,所以相比随机碰撞寻路引擎,路径规划寻路引擎效率更高且拥有更可靠的清洁覆盖率,这也注定了扫地机器人未来的发展趋势会向着更加“类人化”的路径规划式机型发展。

pstemari/RoboBeacon · GitHub 沿途见识[10]

Basic beacon for use with the Wowwee Rovio. Pushbutton activates
aiming lists, if held down (>2 seconds), you can use it to set the
beacon id. Push 1-9 times to set id 1-9, hold down >2 seconds again to
save.

引用信息

以下是[Rovio 自制灯塔]所有用到的引用信息,向这些伟大的家伙致敬:
  1. ^ 来自http://www.csksoft.net/blog/
  2. ^ http://www.robocommunity.com/forum/thread/18385/How-To-Build-your-own-Rovio-Northstar-Beacon/
  3. ^ http://www.thingiverse.com/thing:7101
  4. ^ http://www.csksoft.net/blog/post/289.html
  5. ^ http://www.amobbs.com/thread-5496700-1-1.html
  6. ^ http://www.robocommunity.com/article/15353/Inside-the-WowWee-Rovio-TrueTrack-Beacon/
  7. ^ http://www.robocommunity.com/forum/thread/18385/How-To-Build-your-own-Rovio-Northstar-Beacon/
  8. ^ http://sourceforge.net/p/rovio/wiki/Open%20Hardware%20Room%20Beacon%20Project/
  9. ^ http://www.bblqs.com/article/413.htm
  10. ^ https://github.com/pstemari/RoboBeacon