A new feature has been added to the magnetic guide sensor's firmware for detecting multiple-markers paterns. Multi-markers paterns were always possible to detect and decode using the sensor's scripting capability. They are now integral part of the firmware and therefore faster and much simpler to use.
A new query (“MCB”) has been implemented for that purpose. With it, the user can read the raw bit pattern encoded in the alternating left and right markers transitions. Up to 32-bit can encoded in this manner. In application where only a few markers are needed, the MCB query can also be used to return a 4-bit Id of up to 15 predefined paterns.
Marker Encoding Technique
The algorithm follows the following simple rules
- Marker detection starts when a left or righ marker is detected
- Marker evaluated for as long as a marker is present in either side or both sides
- The sensor looks for transitions from presence to absence, or from absence to presence of markers
- The lenght of each marker is not relevant. Only the transitions mater
- At each transition, the sensor looks for the state of the marker on the opposite side and uses this information to build up the code
- For that reason, there can only be one side changing at a time
- Marker is terminated, and its code is available for reading with the MCB query when no markers are longer present either on the left or right side
Left Side: 1 1 1 1 0
Right Side: 0 1 0 1 1Full 32-bit code: 0000 0000 0001 1110 0000 0000 0000 01011 = 0x001E000B
As shown in the figure above, pattern detection starts when at one marker first appears on either side. The detection stops when there is no more any marker. Between start and stop, all transitions are pushed into two 16bit buffers, one for each side. Finally these numbers are provided to the user in a single 32bit number that is composed of the left code in the upper 16-bits, and of the right code in the lower 16-bits. Thus, a nearly infinite number combinations can be encoded at practically no costs.
For this encoding techniques to work, markers must never change at the same time on both sides. Distinct gaps must be implemented in order to separate and have clearances between transitions.
In most applications, only a few markers are generally needed to identify specific locations along the track. For example: "go slow", "go fast", "charge station at fork", "load area", "unload area", ... To simplify the use of multimarkers in these conditions, 15 marker patterns have been predefined. These patterns have been selected because they will produce the same code and Id if thety are read from left to right or from right to left.The ID 0 is reserved for signaling that no pattern has been detected yet. All of the listed patterns, except pattern with ID 8, were selected in order to be symmetrical. Symetrical patterns are patterns that can be read when AGV moves from left to right, or if it is rotated 180o and moves from right to left. Symetrical paterns will return the same lower 3 bits and differ only at the MSBit.
In order to have as smaller and compact patterns as possible, and have a reliable and safe implementation of this feature, the minimum length of the marker per transition has to be calculated according to the sampling frequency of the magnetic guide sensor and the speed of the AGV. The sensor refreshes the marker detector once per 10ms, so every individual marker state must have longer length than the distance which AGV covers in 20ms. Let’s consider an AGV that moves with speed up to 1m/s, then for calculating marker state minimum length we have:
1 m/s=x/20 cm/ms => 100/1000 cm/ms=x/20 cm/ms => x=2.0 cm
The following table shows the minimum length for markers states regarding to several standard AGV speeds.
|AGV speed (m/s)||Marker Minimum Length (cm)|
The following figure shows how to implement the marker pattern with ID 11, in such an application where the AGV runs with speed up to 1 m/s. Note that, longer markers will not affect the decoding result.