Subject:
|
Barcodes & error detection
|
Newsgroups:
|
lugnet.robotics
|
Date:
|
Wed, 7 Sep 2005 17:38:33 GMT
|
Viewed:
|
1027 times
|
| |
| |
Some of you at BrickFest may have seen Gus, a small robotic forklift that was
one of my GBC modules. Gus had two problems at BrickFest. First, while the
codereading task was 98% accurate, that still means on average once every 16
circuits of the course Gus would mis-read a barcode, resulting in it doing..
something inappropriate (leaving a crate on the table, pushing over or
destroying a structure, or in at least one instance making inappropriate
advances on a member of the audience). Second, after a while the line-following
got rough, resulting in 180 degree turns on the line.
To increase reliability I wanted to add error-detection. Suggestions? Right
now the codes are made of bits (black=1 white=0) with each bit preceeded by a
highly reflective strip (reflective thin tape used to repair flexible ducts -
great stuff, especially if they'd ever produce it without printing). Since each
bit is preceeded by a reflective flag, I can use variable length 'words' (i.e. -
'0' is distinguishable from '00').
It turns out the errors seem to only be of the form of a '1' (black)
mistakenly read as a '0' (white). Currently I can check by making sure any code
read has "even parity" (an even number of '1's), and not using the odd parity
codes. But that means of the 30 codes it can currently read (up to 4 bits long)
I can only use 15 (the even parity ones).
Question (finally): given the unique nature of the errors (only mistakes '1's
for '0's, never the converse) is there any better error-detecting (or, even
better yet, error-*correcting*) coding system I can use? There's plenty of
options, but I want something that minimizes the number of complexity of the
barcodes (I've got to make them by hand... no, I've not made them from LEGO
tiles *yet*, it's just tape on cardboard).
And hey, while we're on the subject... any suggestion for tasks Gus should
try to accomplish? Loading/unloading crates on a conveyor and wharehousing
crates, as well as detecting when it has a full or empty crate, are either
implemented or planned. When I can figure out how to position the train
accurately enough I'll work on loading crates on the train.
--
Brian Davis
|
|
Message has 5 Replies: | | Re: Barcodes & error detection
|
| (...) One suggestion that may improve your reliability is to use colour transitions rather than just colours. This would mean, however, that you would need more strips. For example, if you currently represent B=0 and W=1 your barcode for 0110 would (...) (19 years ago, 7-Sep-05, to lugnet.robotics)
| | | Re: Barcodes & error detection
|
| (...) Right off hand I don't know any checking mechanism that works best with false readings of one polarity. Do you know anything about Error Correction Codes? ECC is used to detect and correct single bit errors, it can also detect double bit (...) (19 years ago, 7-Sep-05, to lugnet.robotics)
| | | Re: Barcodes & error detection
|
| Thanks, you actually made me pull out one of my old comp sci texts :-) I remembered studying this stuff many moons ago .... Error detecting requires a "distance" between codes of at least TWO ... what this means is to detect a single bit error each (...) (19 years ago, 8-Sep-05, to lugnet.robotics)
| | | Re: Barcodes & error detection
|
| (...) Well, there is a sharp distinction between error DETECTION and error CORRECTION. It's also important to characterize the errors you are getting. Are you getting single bit errors or multi-bit errors? You will certainly need to use more bits in (...) (19 years ago, 8-Sep-05, to lugnet.robotics)
| | | Re: Barcodes & error detection
|
| Hello Brian, Error correction is good, but no error is probably better... (...) This may be caused by specular reflexion on a too shiny black stripe. We had that problem during the Billund AFOL mindstorms competition, it was solved by tilting the (...) (19 years ago, 8-Sep-05, to lugnet.robotics)
|
16 Messages in This Thread:
- Entire Thread on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
|
|
|
|