Abstract:
A method for accurately tracking and controlling robots includes capturing a first image of a first matrix code labeled on a first mobile robot at a first time by one or more stationery cameras, wherein the first matrix code is encoded with an identification that uniquely identifies the first mobile robot, correcting a tilt of the first image to produce a first corrected image that shows the first matrix code in a substantially rectangular or square shape, extracting the identification to uniquely identify the first mobile robot, calculating a first position of the first mobile robot based on the first corrected image by a computer system, and controlling a movement of the first mobile robot based at least in part on the to identification and the first position of the first mobile robot.

Description:
BACKGROUND OF THE INVENTION 
       [0001]    The present application relates generally to technologies for encoding and decoding matrix code symbols which comprise multi-lingual text. 
         [0002]    Matrix code symbols such as data matrix codes or QR code are widely used for storing text or data. Examples of the matrix codes symbols include two-dimensional (2D) and three-dimensional (3D) matrix codes. The 2D matrix codes are commonly referred as 2D barcodes. In 2D barcode systems, the data is encoded in a matrix of black and white cells which represent “0”s and “1”s. The text and data can be encoded in the matrix using various encoding techniques such as the American Standard Code for Information Interchange (ASCII). ASCII uses a 7-bit encoding scheme to define 128 characters. The ASCII values of English characters are between 000 and 127. Each English character is encoded by one codeword with codeword values ranging from 1 to 128, which are their respective ASCII values plus 1. It takes one byte in ASCII value to represent each English character. 
         [0003]    One drawback of the ASCII standard is that it was limited to a single Latin-based language such as English. Unicode was introduced to represent other languages that were difficult to represent using the 128 character set. Unicode supports multilingual computer processing by representing each character with 2 bytes, which consumes a lot of space to represent text in the two dimensional matrix code. Moreover, the amount of information that the 2D data matrix can hold decreases when the text comprises multiple languages such as Arabic and English, or Japanese and French. 
         [0004]    There is therefore a need for a method to provide encoding and decoding of bilingual text in matrix code symbols with increased data capacity compared to conventional matrix code techniques. 
       SUMMARY OF THE INVENTION 
       [0005]    In one aspect, the present invention relates to a method for accurately tracking and controlling robots. The method includes capturing a first image of a first matrix code labeled on a first mobile robot at a first time by one or more stationery cameras, wherein the first matrix code is encoded with an identification that uniquely identifies the first mobile robot; correcting a tilt of the first image to produce a first corrected image that shows the first matrix code in a substantially rectangular or square shape; extracting the identification to uniquely identify the first mobile robot; calculating a first position of the first mobile robot based on the first corrected image by a computer system; and controlling a movement of the first mobile robot based at least in part on the identification and the first position of the first mobile robot. 
         [0006]    Implementations of the system may include one or more of the following. The first mobile robot is placed on a soccer field to play a robotic soccer game, wherein the first matrix code is encoded with a team name and an player number that uniquely identify the first mobile robot. The first matrix code is encoded with a multi-lingual text comprising Latin-based characters in a Latin-based language and non-Latin-based characters in a non-Latin-based language, wherein the identification for the first mobile robot is expressed in the multi-lingual text. The non-Latin-based characters in the multi-lingual text is converted to index values to produce a pseudo text, wherein the conversion is based on a predefined mapping that converts the Unicode values of the non-Latin-based characters to index values having fewer digits than the corresponding Unicode values of the non-Latin-based characters, wherein the pseudo text is encoded in the matrix-code symbol. At least some of the index values comprise two digits or three digits. The index values are encoded in the matrix-code symbol, wherein the Latin-based characters in the pseudo text are converted to Unicode values and ASCII values, which are encoded in the matrix-code symbol. The non-Latin-based language comprises Arabic, Urdu, or Farsi. The Latin-based language comprises English, French, Spanish, German, or Italian. One or more separation markers are inserted between the index values of the non-Latin-based characters and the Latin-based characters in the pseudo text. The method can further include capturing a second image of the first matrix code labeled on the first mobile robot at a second time by the one or more stationery cameras; extracting the identification to uniquely identify the second mobile robot; calculating a second position of the first mobile robot based on the second image by the computer system; calculating a first translational velocity of the first mobile robot based on the first position, the second position, and difference between the first time and the second time; and controlling the movement of the first mobile robot based at least in part on the identification and the first translational velocity of the first mobile robot. The method can further include determining a first orientation of the first mobile robot based on the first image by the computer system; determining a second orientation of the first mobile robot based on the second image by the computer system; calculating a first angular velocity of the first mobile robot based on the first orientation, the second orientation, and an interval between the first time and the second time; and controlling a movement of the first mobile robot based at least in part on the first angular velocity of the first mobile robot. The first orientation and the second orientation are determined in part based on registration marks at corners of the first matrix-code symbol. The method can further include capturing a third image of the second matrix code labeled on a second mobile robot at the first time by one or more cameras, wherein the second matrix code uniquely identifies the second mobile robot; determining a third position of the second mobile robot based on the third image by the computer system; and controlling movements of at least one of the first mobile robot or the second mobile robot based at least in part on the first position of the first mobile robot and the third position of the second mobile robot. The movements of at least one of the first mobile robot or the second mobile robot can be controlled based at least in part on a distance between the first mobile robot and the second mobile robot. The first mobile robot and the second mobile robot can be placed on a soccer field playing a robotic soccer game. Each of the first matrix code and the second matrix code can be encoded with a team name and a player number that uniquely identify the first mobile robot or the second mobile robot. The first mobile robot and the second mobile robot can belong to the same team. The first mobile robot and the second mobile robot can be respectively associated with two different teams. The step of controlling can be conducted in part by the computer system. The step of controlling can be conducted in part by the computer controller on the first mobile robot. 
         [0007]    In another aspect, the present invention relates to a method for encoding a multi-lingual text in a matrix code symbol. The method includes receiving, by a computer processor, a multi-lingual text comprising Latin-based characters in a Latin-based language and non-Latin-based characters in a non-Latin-based language; converting, by the computer processor, the non-Latin-based characters in the multi-lingual text to index values to produce a pseudo text, wherein the conversion is based on a predefined mapping that converts the Unicode values of the non-Latin-based characters to index values having fewer digits than the corresponding Unicode values of the non-Latin-based characters; and encoding the pseudo text in a matrix-code symbol. 
         [0008]    Implementations of the system may include one or more of the following. At least some of the index values can include two digits. At least some of the index values can include three digits. The non-Latin-based language can include Arabic, Urdu, or Farsi. The Latin-based language can include English, French, Spanish, German, or Italian. The method can further include inserting one or more separation markers between the index values of the non-Latin-based characters and the Latin-based characters in the pseudo text. The step of inserting one or more separation markers can include: inserting a first separation marker at the beginning of a non-Latin text comprising non-Latin-based characters in the pseudo text; and inserting a second separation marker at the end of the non-Latin text in the pseudo text. One or more punctuation marks can be common to the non-Latin-based language and the Latin-based language, wherein the one or more punctuation marks are positioned among non-Latin-based characters, wherein the one or more separation markers are not inserted between the one or more punctuation marks and the adjacent non-Latin-based characters. The one or more punctuation marks can include ‘,’ ‘;’, and ‘?’. The step of encoding can include: encoding the index values in the matrix-code symbol; and converting the Latin-based characters in the pseudo text to Unicode values and ASCII values, which are encoded in the matrix-code symbol. 
         [0009]    In another aspect, the present invention relates to method for decoding a matrix code symbol that encodes a multi-lingual text. The method includes decoding, by a computer processor, a matrix-code symbol to extract a pseudo text that includes a Latin-based characters and index values representing non-Latin-based characters, wherein the index values of the non-Latin-based characters have fewer digits than the respective Unicode values of the non-Latin-based characters according to a predefine mapping; and converting the index values in the pseudo text to the non-Latin-based characters according to the predefine mapping to produce a multi-lingual text comprising the Latin-based characters and the non-Latin-based characters. 
         [0010]    The method can further include identifying separation markers between the index values for the non-Latin-based characters and the Latin-based characters in the pseudo text before the step of decoding. 
         [0011]    In another general aspect, the present invention relates to a system for encoding a multi-lingual text in a matrix code symbol. The system includes a computer storage configured to store a predefined mapping that converts the Unicode values of non-Latin-based characters in a non-Latin-based language to index values having fewer digits than the corresponding Unicode values of the non-Latin-based characters; and one or more computer processors configured to receive a multi-lingual text comprising Latin-based to characters in a Latin-based language and non-Latin-based characters in the non-Latin-based language, to convert the non-Latin-based characters in the multi-lingual text to the index values to produce a pseudo text according to the predefine mapping, and to encode the pseudo text in a matrix-code symbol. 
         [0012]    In another general aspect, the present invention relates to a method for preparing a multi-lingual personal identification card. The method includes receiving, by a computer processor, a multi-lingual text comprising Latin-based characters in a Latin-based language and non-Latin-based characters in a non-Latin-based language, wherein the multi-lingual text comprises the name of the holder of the personal identification card in the Latin-based language and the non-Latin-based language; converting, by the computer processor, the non-Latin-based characters in the multi-lingual text to index values to produce a pseudo text, wherein the conversion is based on a predefined mapping that converts the Unicode values of the non-Latin-based characters to index values having fewer digits than the corresponding Unicode values of the non-Latin-based characters; receiving vector data for a personal image which includes a facial image, a finger print, or a combination of both of the holder of the personal identification card; and encoding the pseudo text and the vector data in the matrix-code symbol. 
         [0013]    Implementations of the system may include one or more of the following. The facial image and the finger print may not be printed on the multi-lingual personal identification card. At least some of the index values can have two digits or three digits. The non-Latin-based language can include Arabic, Urdu, or Farsi. The Latin-based language can include English, French, Spanish, German, or Italian. The method can further include inserting one or more separation markers between the index values of the non-Latin-based characters and the Latin-based characters in the pseudo text. The step of encoding can include encoding the index values in the matrix-code symbol; and converting the Latin-based characters in the pseudo text to Unicode values and ASCII values, which are encoded in the matrix-code symbol. 
         [0014]    In another general aspect, the present invention relates to a method for communicating news content. The method includes receiving, by a computer processor, a multi-lingual text comprising Latin-based characters in a Latin-based language and non-Latin-based characters in a non-Latin-based language, wherein the multi-lingual text comprises information about a news content; converting, by the computer processor, the non-Latin-based characters in the multi-lingual text to index values to produce a pseudo text, wherein the conversion is based on a predefined mapping that converts the Unicode values of the non-Latin-based characters to index values having fewer digits than the corresponding Unicode values of the non-Latin-based characters; encoding the pseudo text in a matrix-code symbol; enabling a tagline about the news content to be displayed on a TV screen; and enabling the display of the matrix-code symbol in conjunction with the description about the news content on the TV screen, wherein the matrix code is configured to be decoded to allow a user to find more detailed description than the tagline about the news content. 
         [0015]    Implementations of the system may include one or more of the following. At least some of the index values can have two digits or three digits. The non-Latin-based language can include Arabic, Urdu, or Farsi. The Latin-based language can include English, French, Spanish, German, or Italian. The method can further include inserting one or more separation markers between the index values of the non-Latin-based characters and the Latin-based characters in the pseudo text. The step of encoding can include encoding the index values in the matrix-code symbol; and converting the Latin-based characters in the pseudo text to Unicode values and ASCII values, which are encoded in the matrix-code symbol. The matrix-code symbol can be encoded with a web address or a Uniform Resource Identifier (URI), from which is configured to provide a user with more detailed description than the tagline about the news content. 
         [0016]    In another general aspect, the present invention relates to a method for providing a multi-lingual restaurant menu. The method includes printing information about food and drink items on a substrate; receiving, by a computer processor, a multi-lingual text comprising Latin-based characters in a Latin-based language and non-Latin-based characters in a non-Latin-based language, wherein the multi-lingual text comprises information about the food and drink items; converting, by the computer processor, the non-Latin-based characters in the multi-lingual text to index values to produce a pseudo text, wherein the conversion is based on a predefined mapping that converts the Unicode values of the non-Latin-based characters to index values having fewer digits than the corresponding Unicode values of the non-Latin-based characters; encoding the pseudo text in a matrix-code symbol; and printing the matrix-code symbol on the substrate to produce the multi-lingual restaurant menu. 
         [0017]    Embodiments may include one or more of the following advantages. The present application provides systems and methods for encoding and decoding multi-lingual text in matrix code symbols with significantly increased information capacity and reduced costs. The multi-lingual text contained in the matrix code symbols can include a Latin-based language, such as English and French, and a non-Latin-based language, such as Arabic, Urdu, and Farsi. In some cases, the number of bilingual characters allowed in a matrix code can be increased by more than two times. The disclosed systems and methods are compatible with different matrix-code encoding techniques such as Data Matrix or QR Code. 
         [0018]    The disclosed systems and methods are applicable to a wide range of applications while providing the benefits of high information density and compact area need for bilingual text. The applications include hardcopy printed materials as well as electronic displays. 
         [0019]    Although the invention has been particularly shown and described with reference to multiple embodiments, it will be understood by persons skilled in the relevant art that various changes in form and details can be made therein without departing from the spirit and scope of the invention. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0020]    The following drawings, which are incorporated in and form a part of the specification, illustrate embodiments of the present invention and, together with the description, serve to explain the principles of the invention. 
           [0021]      FIG. 1  is a block diagram for an exemplified matrix-code encoding system in accordance with the present invention. 
           [0022]      FIG. 2  is a block diagram for an exemplified matrix-code decoding system in accordance with the present invention. 
           [0023]      FIG. 3  shows the characters shared between Arabic and English, and the characters&#39; English ASCII values (large boldface ASCII values are for English only). 
           [0024]      FIG. 4  shows the mapping of Unicode values for Arabic characters into smaller numeric codes (00-99) and codeword values (130-229) used in different methods in the present application. 
           [0025]      FIG. 5  shows an exemplified Arabic-English bilingual text to be encoded in a matrix code symbol. 
           [0026]      FIG. 6  shows a Datamatrix code symbol produced based on the Arabic-English bilingual text shown in  FIG. 5  using by conventional Unicode technique. 
           [0027]      FIG. 7  shows a pseudo text converted from the Arabic-English bilingual text shown in  FIG. 5  using a method in accordance with the present invention. 
           [0028]      FIG. 8  shows a Datamatrix code symbol produced based on the pseudo text shown in  FIG. 7 . 
           [0029]      FIG. 9  shows a pseudo text converted from the Arabic-English bilingual text shown in  FIG. 5  using another method in accordance with the present invention. 
           [0030]      FIG. 10  shows a Datamatrix code symbol produced based on the pseudo text shown in  FIG. 9 . 
           [0031]      FIG. 11  shows a pseudo text converted from the Arabic-English bilingual text shown in  FIG. 5  using yet another method in accordance with the present invention. 
           [0032]      FIG. 12  shows a Datamatrix code symbol produced based on the pseudo text shown in  FIG. 11 . 
           [0033]      FIG. 13  is a flow diagram of a method for encoding a multi-lingual text comprising a non-Latin-based text in matrix-code symbols. 
           [0034]      FIG. 14  shows a system for encoding the bilingual text and a facial image and/or a fingerprint of the holder of a personal identification card. 
           [0035]      FIG. 15A  shows a screen shot of a TV news channel displaying a conventional news bar. 
           [0036]      FIG. 15B  shows a screen shot of a TV news channel displaying a news bar comprising a matrix code encoded with bilingual text information in accordance with the present invention. 
           [0037]      FIG. 15C  shows a detailed view of the matrix code displayed in conjunction with the news bar in  FIG. 15B . 
           [0038]      FIG. 16A  shows a bilingual restaurant menu. 
           [0039]      FIG. 16B  illustrates a restaurant menu in Arabic and a matrix code symbol encoded with bilingual text information. 
           [0040]      FIG. 16C  illustrates a restaurant menu in English and a matrix code symbol encoded with bilingual text information. 
           [0041]      FIG. 17  is a perspective view of a robot soccer system. 
           [0042]      FIG. 18  illustrates tilted matrix-code symbols extracted from an image of the mobile robots from the robot soccer system in  FIG. 17 . 
           [0043]      FIG. 19  is s system flow diagram for tracking mobile robots using matrix-code symbols. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0044]    Referring to  FIG. 1 , a matrix-code encoding system  100  includes a preprocessor  110 , a matrix code encoder  120 , and computer storage  130 . The preprocessor  110  and the matrix code encoder  120  can be implemented by one or more computer processors. The computer storage  130  stores a predefined mapping for non-Latin-based characters. The preprocessor  110  receives a multi-lingual text, and converts the multi-lingual text into a pseudo text according to the predefined mapping. The pseudo text is received by the matrix code encoder  120 , which produces image data for a matrix code symbol that contains information of the multi-lingual text. The matrix-code encoding system  100  can further include a printer  140 , which is configured to receive the image data for the matrix code symbol and can print the matrix code symbol on an object. 
         [0045]    Similarly, for the decoding path, referring to  FIG. 2 , a matrix-code decoding system  200  includes a matrix code decoder  210 , a post-processor  220  and a computer storage  230 . The matrix code decoder  210  and the post-processor  220  can be implemented by one or more computer processors. The computer storage  230  stores a predefined mapping for non-Latin-based characters. A matrix code symbol is encoded with information of the multi-lingual text by the matrix code encoding system  100 . The matrix code symbol is input to the matrix code decoder  210 , which decodes the matrix code symbol into a pseudo text. The post-processor  220  then converts the pseudo text to the multi-lingual text according to the predefined mapping. The matrix-code decoding system  200  can further include a scanner  240  that can retrieve the image of the matrix code symbol on an object and send the image to the matrix code decoder  210 . 
         [0046]    In the present application, the term and “matrix code symbol” is used to generally refer symbols in a matrix of black and white cells that represent “0”s and “1” to encode text and/or data. The matrix code encoder and decoder in the presently encoding and decoding systems can respectively use techniques compatible with Datamatrix Code, QR Code, 2D barcodes, and 3D barcodes, etc. 
         [0047]      FIG. 3  shows the printable characters shared between Arabic and English with English ASCII values (large boldface ASCII values are for English only). The printable characters occupy the code words from 33 till 128. 
         [0048]    Some no-Latin-based languages such as Arabic, Urdu, and Farsi have characters with high ASCII values. Combining English text with the texts of these languages is space consuming, which results in lower data capacity in the corresponding 2D barcodes in comparison to those comprising characters. 
         [0049]    Several techniques are described in detail to improve the information capacity in matrix code symbols for encoding multi-lingual text. 
       Method 1. Encoding and Decoding Bilingual Text Comprising English and a Non-Latin-Based Language in a Matrix Code Symbol 
       [0050]    Method 1 is applicable to languages with any number of printable characters. Each character in each of the language is mapped to an ASCII value having an even number of digits. If a character has an odd number of digits, one or more zero digits are added at the left of the ASCII value. After conversion, the number of digits of all characters in the first language should be the same as those of the character of the second language. 
         [0051]    For example, each Arabic character takes two bytes or two codewords as opposed to one byte or one codeword for English. Referring to  FIG. 4 , Arabic characters have four-digit Unicode values ranging from 1563 to 1618. The preprocessor  110  ( FIG. 1 ) first maps the Arabic characters are mapped to two-digit numeric index values having values from 00 to 55. Then the preprocessor  110  ( FIG. 1 ) maps each pair of two-digit numeric index values from 00 to 55 to a codeword value between 130 and 229 (00-99 plus 130). The Arabic characters are mapped to three-digit codeword values from 130 to 185. Since the codeword values for the Arabic characters have distinct Unicode values, separation markers are not needed between the codeword values of adjacent Arabic characters. The mapping shown in  FIG. 4  can be stored in the computer storage  130  ( FIG. 1 ) and the computer storage  230  ( FIG. 2 ). 
         [0052]    It should be noted that the language can have more than 55 or more than 100 characters. For example, for a language having 120 characters, the codeword values can be mapped in a range from 130 to 249. 
         [0053]    Next, the preprocessor  110  appends a pair of field separation markers at the beginning and the end of the numeric index values converted from the text in the second language. The separation marker can be a tilde ‘˜’ character with an ASCII value of 126, or the PAD character with a codeword value of 129. The Arabic text can be marked by a beginning separation marker “˜” and an end separation marker “99”. The text field for the second language is thus enclosed by the separation markers. The text in the first language (e.g. English) is outside of the separation markers. Thus a pseudo text is created with English characters outside the separation markers and the numeric index values for the Arabic characters inside the separation markers. 
         [0054]    An example of an English-Arabic bilingual text is shown in  FIG. 5 . For comparisons,  FIG. 6  shows a Datamatrix symbol created using conventional Unicode representations for the Arabic characters, which has the size of 88×88 cells. 
         [0055]    The English-only pseudo text created by the preprocessor  110 , shown in  FIG. 7 , includes a mixture of English characters and the codeword values converted from the Unicode values of the Arabic characters. The Arabic text is marked by a beginning separation marker “˜” and an end separation marker “99”. The Arabic characters have codeword values between 130 and 229. 
         [0056]    The matrix code encoder  120  ( FIG. 1 ) can produce a 72×72 Datamatrix symbol, as shown in  FIG. 8 , based in the English-only pseudo text in  FIG. 6 . The Datamatrix symbol encodes the codeword values and the separation markers. The matrix code encoder  120  converts the Latin-based (English) characters in the pseudo text to their respective standard Unicode or ASCII values, and encodes the Unicode or ASCII values in the matrix-code symbol. 
         [0057]    Method 1 thus provides space saving and increase information density comparing to the 88×88 Datamatrix symbol in ( FIG. 6 ) encoded by the conventional Datamatrix encoding using standard Unicode values for Arabic characters. 
         [0058]    It should be noted that the matrix code encoder  120  ( FIG. 2 ) can use other matrix code encoding techniques (e.g. QR Code, etc.) to produce data matrix symbols. Method 1 can improve information density or reduce symbol size for the same information compared to the respective conventional matrix encoding techniques. 
         [0059]    The matrix code decoder  210  ( FIG. 2 ) can decode a matrix code symbol (in  FIG. 8 ) into a pseudo text with codeword values between separation markers (shown in  FIG. 7 ) and English Unicode values outside the separation markers. The post processor  220  ( FIG. 2 ) can identify these separation markers and convert the codeword values (ranging from 130 to 229) between the separation markers into Arabic characters (shown in  FIG. 5 ). The post processor  220  ( FIG. 2 ) can convert the ASCII or Unicode values outside of the separation markers using conventional ASCII indices for English characters. 
         [0000]    Method 2. A More Space-Efficient Method for Encoding and Decoding Bilingual Text comprising English and a non-Latin-based language in a matrix code symbol 
         [0060]    If the second language has fewer than 100 characters, the characters of the second language can be mapped to two-digit numeric index values ranging from 00 to 99 without the need of converting them to three-digit codeword values. 
         [0061]    Similar to the Method 1, as shown in  FIG. 4 , Arabic characters having four-digit Unicode values from 1563 to 1618 are mapped by the preprocessor  110  ( FIG. 1 ) to two-digit numeric index values ranging from 00 to 55. Different from the Method 1, two-digit numeric index values from 00 to 99 are not converted to codeword values between 130 and 229, which save additional space comparing to Method 1. 
         [0062]    Next, similar to Method 1, the preprocessor  110  inserts a pair of field separation markers at the beginning and the end of the second language. The separation marker can be a tilde ‘˜’ character with an ASCII value of 126, or the PAD character with a codeword value of 129. The Arabic text can be marked by a beginning separation marker “˜” and an end separation marker “99”. The few digits for the Arabic characters result in spacing savings in the English-only pseudo text. 
         [0063]    For the same English-Arabic bilingual text as input (shown in  FIG. 5 ), the English-only pseudo text created by the preprocessor  110  using Method 2 is shown in  FIG. 8 , which is markedly shorter than that shown in  FIG. 6 . The Arabic text is marked by a beginning separation marker “˜” and an end separation marker “99”. The Arabic characters have numeric index values between 00 and 99. The matrix code encoder  120  ( FIG. 1 ) can produce, based in the English-only pseudo text in  FIG. 9 , a 64×64 Datamatrix symbol as shown in  FIG. 10 , which contains the same information but is smaller than the matrix-code symbol in  FIG. 7 . 
         [0064]    Method 2 thus provides additional space saving and higher information density comparing to the 88×88 Datamatrix symbol in ( FIG. 6 ) encoded by the conventional Datamatrix encoding using standard Unicode values for Arabic characters. 
         [0065]    Similarly, the matrix code decoder  210  ( FIG. 2 ) can decode a matrix code symbol (in  FIG. 10 ) into the pseudo text with the numeric index values between separation markers (shown in  FIG. 9 ) and English Unicode values outside the separation markers. The post processor  220  ( FIG. 2 ) can identify these separation markers and convert the numeric index values (ranging from 00 to 99) between the separation markers into Arabic characters (shown in  FIG. 5 ). The post processor  220  ( FIG. 2 ) can convert the ASCII or Unicode values outside of the separation markers using conventional ASCII indices for English characters. 
         [0066]    As shown, Method 2 improves information density comparing to Method 1 and can provide the same capacity in matrix codes for bilingual text as to matrix codes containing text in a single language. 
       Method 3. A Space-Optimizing Method for Encoding and Decoding Bilingual Text Comprising English and a Non-Latin-Based Language in a Matrix Code Symbol 
       [0067]    The methodology applies to mixing English with any language that has a total number of characters less than or equal to 100. 
         [0068]    Most of the punctuation marks used in Arabic are the same as in English and have the same ASCII value is in English except for three marks (comma ‘,’ semicolon ‘;’, and question mark ‘?’). Since Method 2 treats these punctuation marks as English even when they occur between Arabic characters, which results in a pair of start and stop markers for each Arabic text string between the punctuation marks, hence producing a lot of overhead cost. 
         [0069]    Method 3 further improves upon Method 2 by reducing these overhead cost, which is applicable to a single non-Latin-based language such as Arabic with Farsi or Urdu, or to a bilingual text comprising English and a non-Latin-based language. In Method 3, if the punctuation marks (i.e. ‘,’ ‘;’, and ‘?’) that are common to Arabic and English occur within an Arabic text, separation markers are not inserted between Arabic characters, which significantly removes overhead costs for separation markers for short Arabic text strings between these common punctuation marks. 
         [0070]    For the same English-Arabic bilingual text as input (shown in  FIG. 5 ), the English-only pseudo text created by the preprocessor  110  using Method 3 is shown in  FIG. 11 , which is shorter than that by Method 2 shown in  FIG. 8 . The Arabic characters have numeric codes between 00 and 99. The Arabic text is marked by a beginning separation marker “˜” and an end separation marker “99”, but Arabic text strings are longer because they are not interrupted by the punctuation marks (i.e. ‘,’ ‘;’, and ‘?’). The matrix code encoder  120  ( FIG. 1 ) can produce, based in the English-only pseudo text in  FIG. 10 , a (52×52) Datamatrix symbol as shown in  FIG. 12 , which contains the same information but is smaller than the matrix-code symbol by Method 2 in  FIG. 9 . 
         [0071]    Similarly, the matrix code decoder  210  ( FIG. 2 ) can decode a matrix code symbol (in  FIG. 12 ) into the pseudo text with numeric index values between separation markers (shown in  FIG. 11 ) and English Unicode values outside the separation markers. The post processor  220  ( FIG. 2 ) can identify these separation markers and convert the numeric index values (ranging from 00 to 99) between the separation markers into Arabic characters (shown in  FIG. 5 ). The post processor  220  ( FIG. 2 ) can convert the ASCII or Unicode values outside of the separation markers using conventional ASCII indices for English characters. 
         [0072]    As shown, Method 3 improves information density comparing to Method 2 and can provide the higher data capacity in matrix codes for bilingual text even than matrix codes containing text in a single language using conventional methods. 
         [0073]    For comparisons, the Datamatrix symbol (shown in  FIG. 6 ) created for the bilingual text in  FIG. 5  using conventional Unicode for Arabic characters has 88×88 cells in sizes. It is shown that for the same information content in the bi-lingual text in  FIG. 5 , the Datamatrix symbols respectively created by Method 1 (72×72 in  FIG. 8 ), Method 2 (64×64 in  FIG. 10 ), and Method 3 (52×52 in  FIG. 12 ) are all smaller than the Datamatrix symbol created by the conventional Unicode technique. 
         [0074]    It should be mentioned that Method 3 can give the smaller matrix-code symbols for Arabic/Farsi/Urdu text or a bilingual text. The Latin language can include English, French and other languages. 
         [0075]    Referring to  FIG. 13 , the process of encode a multi-lingual text in a matrix-code symbol can include one or more of the following steps. First, a multi-lingual text is received (step  910 ). The multi-lingual text can include text in a Latin-based language such as English, French, Spanish, German, Italian, and a non-Latin-based language such as Arabic, Urdu, Farsi, Japanese, Chinese, etc. 
         [0076]    A mapping is received (step  920 ), which specifies a conversion between the Unicode values for the characters in the non-Latin language and pre-defines index values that have fewer digits than the Unicode values for the non-Latin characters. The index values can include the two-digit numeric index values used in Methods 2-3, and the three-digit codeword values in Method 1, which all have fewer digits than the respective Unicode values of the non-Latin characters. 
         [0077]    The non-Latin characters in the multi-lingual text are then converted to the index values (step  930 ) as described above in Methods 1-3. 
         [0078]    Separation markers are inserted between the Latin-based text and the index values converted from the non-Latin-based characters (step  940 ). The separation markers can be added at the beginning and the end of the non-Latin-based text. Furthermore, as described in Method 3 above, separation markers are not needed if the punctuation marks, which are common to the Latin-based language and the non-Latin-based language, appear within the non-Latin-based text. A pseudo text is created, which comprises the Latin-based characters, index values converted from the non-Latin-based characters, and separation markers which separate Latin-based characters and the index values. 
         [0079]    A matrix-code symbol is produced based on the pseudo text (step  950 ), which can use techniques such as Datamatrix Code or QR Code. 
         [0080]    For decoding a matrix code symbol encoding a multi-lingual text, the matrix-code decoding system  200  ( FIG. 2 ) the matrix-code symbol and decodes it to extract a pseudo text that includes a Latin-based characters and index values representing non-Latin-based characters according to a predefine mapping. The index values of the non-Latin-based characters have fewer digits than the respective Unicode values of the non-Latin-based characters. Examples of the index values are the numeric index and codeword values shown in  FIG. 4 . The post-processor  220  ( FIG. 2 ) can identify separation markers in the pseudo text and convert the index values enclosed by separation markers to non-Latin-based characters by the predefine mapping. The post-processor  220  ( FIG. 2 ) converts the Unicode or ASCII values outside of the separation markers to Latin-based characters, which produces the multi-lingual text encoded in the matrix code symbol. 
         [0081]    If the encoded information is 2 digits long, it is then equivalent to one character in Datamatrix. If the encoded information has 3 digits, then it counts for 2 characters. If no text is included, then these 1 or 2 characters can be fit in the smallest Datamatrix barcode which is 10×10, leaving room for making its cells big, which makes the decoding very accurate and robust compared to a condensed barcode with bigger dimensions. Reed-Solomon error correction bytes can be added to the 2 or 3 digits, hence providing high accuracy in reading even less quality images. The same approach can be adopted for QR Code as well. 
         [0082]    The above described systems and methods for the multi-lingual encoding in matrix codes can be applied to a wide range of applications. The disclosed systems and methods are applicable to a wide range of applications while providing the benefits of high information density and compact area need for bilingual text. The applications include hardcopy printed materials as well as electronic displays. 
       Bilingual Personal Identification Card 
       [0083]    For example, in some regions, for cultural or religious reasons, people or a group of people do not want their facial images oriented personal identification cards (IDs). In Saudi Arabia, for example, women do not have their photos displayed on the identification cards, which leaves the IDs venerable for forgery. In some embodiments, a personal identification card includes a matrix-code symbol that encodes a bilingual text and an image. The bilingual text can include the name of the holder of the personal identification card in English and another language, which matches the bilingual text printed on the personal ID card. The image encoded in the matrix-code symbol can include a facial image or a fingerprint of the holder of the personal identification card. The image however is not printed on the personal identification card, which allows the personal identification cards to conform local culture. The bilingual text can include a non-Latin-based language such as Arabic, Urdu, or Farsi, and a Latin-based language such as English, French, Spanish, German, or Italian. 
         [0084]    The personal identification card can be produced using a bilingual ID system  1400  shown in  FIG. 14 . The bilingual ID system  1400  includes a preprocessor  1460 , a matrix code encoder  1470 , and a computer storage  1480 . The preprocessor  110  and the matrix code encoder  120  can be implemented by one or more computer processors. The computer storage  130  stores a predefined mapping for non-Latin-based characters. The preprocessor  110  receives a multi-lingual text, and converts the multi-lingual text into a pseudo text according to the predefined mapping. The preprocessor  110  also receives image vector data for facial image and/or fingerprint of the holder of the personal identification card. The pseudo text and the image vector data are received by the matrix code encoder  120 , which produces image data for a matrix-code symbol that contains the multi-lingual text and the facial image and/or fingerprint. The matrix-code encoding system  100  can further include a printer  1490 , which is configured to receive the matrix code symbol and other text on one or two faces of the personal identification card. 
         [0085]    In usage, an officer at custom or other security check points can use a matrix-code scanner (e.g. a 2D barcode scanner) to scan to the matrix-code symbol to retrieve the bilingual text and the image information encoded in the matrix-code symbol. The names decoded from the matrix-code symbol match the bilingual names printed on the personal ID card. The officer can compare the encoded facial image to the ID holder&#39;s look. The officer can also use a fingerprint scanning device to capture an image of the ID holder&#39;s finger print. A computing device can automatically compare the newly captured fingerprint to finger print encoded in the matrix-code symbol on the ID card. 
         [0086]    In some, above described systems and methods provide personal identification cards that are secure and usable in multiple languages while be in conformance with the local cultures. 
       Bilingual Matrix-Code Symbol for TV News 
       [0087]    In a different application, TV News channels, such as Aljazeera and CNN, often display one or more news bars at the bottom of the TV screens. For example, referring to  FIG. 15A , a TV screen  1500  showing Aljazeera TV channel displays a thick stationary news bar  1510  that changes when a different news item is broadcasted. The TV screen  1500  also displays a thin news bar  1520  that changes every few seconds independent of the content shown on the main screen. The thick news bar  1510  can include a tagline for a news topic such as “Revolution in Libya”, and a logo for the TV station. The tagline can alternate every few second between “Libya” and “The Revolution in Libya”, both of which indicate the content currently broadcasted on the main screen. 
         [0088]    In some embodiments, referring to  FIG. 15B , a TV screen  1550  can include a matrix-code symbol  1560  displayed on the thick news bar  1510 . The matrix-code symbol  1560  can encode more detailed information about the news that is currently displayed in the thick new bar  1510 . The matrix-code symbol  1560  can include a URL to a website at which he detailed news content is published. A user can use a camera phone to take a snapshot of the matrix-code symbol  1560  and extract detailed news content from the matrix-code symbol  1560  or directs to and displays the webpage at the URL link. The matrix-code symbol  1560  and its encoded information update every time the news content changes in the thick news bar. For one TV channel, the news can be encoded in English and Spanish in the matrix-code symbol  1560 . 
         [0089]    For the Aljazeera TV channels, the news content can be encoded in Arabic and English in the matrix code. Referring to  FIGS. 15B and 15C , the matrix-code symbol  1560  can encode text about a news item about Turkey. The matrix-code symbol  1560  is displayed with a tagline that briefly describes the news about Turkey, while the main news on the TV screen  1550  is about “Libyan Revolution”. The news content encoded in the matrix-code symbol  1560  can be multi-lingual, which is encoded and decoded using the efficient multi-lingual encoding techniques as disclosed in  FIGS. 1-13  and the related discussions above. 
       Bilingual Restaurant Menu 
       [0090]    In some embodiments, referring to  FIG. 16A , a portion of a bilingual restaurant menu  1600  displaying a dish called “Maqlouba” in Arabic and English. In English, the dish is described as the following: “Lamb stew cooked with rice and fried slices of eggplants and onion and spices. Cooked with vegetable oil. Healthy and low fat.” The bilingual restaurant menu  1600  can be printed on paper, plastic, laminated sheet of materials, or other types of substrates. The bilingual restaurant menu  1600  can include information about food, drink, and the restaurant, or an Internet web address containing such information. 
         [0091]    In some embodiments, referring to  FIG. 16B , a portion of an Arabic restaurant menu  1630  displays the dish “Maqlouba” in Arabic. A matrix-code symbol  1640  is encoded and printed on the Arabic restaurant menu  1630  using the systems and methods described above. Using the systems and methods described above, the matrix-code symbol  1640  can include bilingual text similar to those displayed in bilingual restaurant menu  1600  in FIG.  16 A. The matrix-code symbol  1640  can also be encoded with more detailed information such as an Internet web address, and information about the restaurant, the chef, or the history of the dish. A user can use a mobile camera phone to capture an image of the matrix-code symbol  1640  to extract bilingual information encoded in the matrix-code symbol  1640 . The customer can read details in either language about any item using the reader on the mobile phone to find out what the meal has and if it fits the taste or diet of the customer. 
         [0092]    In some embodiments, referring to  FIG. 16C , a portion of an English restaurant menu  1660  displays the dish “Maqlouba” in English. A matrix-code symbol  1670  is encoded and printed on the English restaurant menu  1660  using the systems and methods described above. The matrix-code symbol  1670  can include bilingual text similar to those displayed in bilingual restaurant menu  1600  in  FIG. 16A . The matrix-code symbol  1670  can also be encoded with more detailed information such as an Internet web address, and information about the restaurant, the chef, or the history of the dish. A user can use a mobile camera phone to capture an image of the matrix-code symbol  1670  to extract bilingual information encoded in the matrix-code symbol  1670 . The customer can read details in either language about any item using the reader on the mobile phone to find out what the meal has and if it fits the taste or diet of the customer. 
       Bilingual Business Card 
       [0093]    In some embodiments, a bilingual business card can be prepared and printed using the matrix-code encoding system  100  in  FIG. 1 . The preprocessor  110  receives a multi-lingual text to be printed on the bilingual business card, and converts the multi-lingual text into a pseudo text according to the predefined mapping. The pseudo text is received by the matrix code encoder  120 , which produces image data for a matrix code symbol that contains information of the multi-lingual text. The printer  140  can receive the image data for the matrix code symbol and print the matrix code symbol on the bilingual business card. The printer  140  can also print bilingual text on the same face or the opposite faces of the bilingual business card. The bilingual business card can for example be printed in English one on face and Arabic on the other. 
         [0094]    A recipient of the bilingual business card can retrieve more detailed information by taking a picture of or scanning the matrix barcode on the bilingual business card. The recipient can also take a picture of the matrix-code symbol on the bilingual business card using his mobile phone and extract the person&#39;s name, institution, phone numbers, email address that are encoded in the matrix-code symbol, and automatically add the information in the phone book on his mobile phone. 
       Bilingual Business Advertisement 
       [0095]    In some embodiments, a bilingual business advertisement can display a bilingual matrix-code symbol next to the text and image content in the bilingual business advertisement. A viewer can take a picture of the matrix-code symbol using a camera phone and extract the detailed advertisement information encoded in the matrix-code symbol using the systems and methods described above. The viewer can read detailed encoded information about the advertisement in any of the languages. The advertisement can be displayed on a newspaper, magazine, a billboard, or a flyer. 
         [0096]    It should be understood that the above disclosed systems, methods, and applications are suitable not only with multi-lingual, but also with a single language that includes large Unicode values (e.g. 4 digits). If the language has less than 100 characters, the large Unicode values (e.g. 4 digits) can be down mapped to 2-digit Unicode numbers. If the language has less than 1000 characters, the large Unicode values (e.g. 4 digits) can be down mapped to 3-digit Unicode numbers. The down mapping can reduce data size for storing bilingual text information in the matrix-code symbol. 
         [0097]    It should be understood that the above described methods are not limited to the specific examples used. Configurations can vary without deviating from the spirit of the invention. The disclosed methods are applicable to texting in a single non-Latin based language such as Arabic, Urdu, or Farsi. The disclosed methods are also applicable to multi-lingual texting comprising characters in Arabic, Urdu, or Farsi, and English or French, and other non-Latin and Latin based languages. 
         [0098]    Furthermore, the disclosed matrix-code symbol encoding systems and methods are compatible with other matrix-code symbol encoding than Datamatrix symbol and QR Code as described above. The English-only pseudo text can be encoded in matrix-code symbols by other encoding techniques. 
       Accurate Robot Tracking 
       [0099]    In some embodiments, system and method are disclosed for tracking mobile robots in the field using matrix-code symbols. 
         [0100]    One example for robot tracking is the robot soccer games. The Federation of International Robot-soccer Association (FIRA) is an international organization that organizes competitive soccer competitions between autonomous robots at different locations across the world. FIRA was founded in 1997. The annual competitions are called Micro-Robot World Cup Soccer Tournament (MiroSot). In robot soccer games, the identities, positions, orientations, and velocities of the mobile robots need to be continuously tracked relative to opponent robots&#39; positions, which are used in real time to guide maneuvers of individual robots and team strategies. 
         [0101]    In the MiroSot, the mobile robots are tracked by color patterns labeled or printed on the robots. The color patterns are distinctly coded, and are used to detect and identify each robot by stationary cameras. One drawback of such robot detection scheme is that the accuracy of the detection is affected by the illumination of the soccer field. Such color pattern recognition is prune to error in low light conditions, or when the soccer field is illuminated by colored or fluorescent lights. 
         [0102]    There has been a need to provide more accurate tracking of robots such as the autonomous mobile robots in soccer games. 
         [0103]    Referring to  FIGS. 17-19 , a robot soccer system  1700  includes a soccer field  1710  having goals  1715 ,  1716  and mobile robots  1720  that act as soccer players to play a soccer ball  1730  on the soccer field  1710 . Each of the mobile robots  1720  includes a motor system that can move the mobile robot  1720  at certain at a designated speed in a specified direction, or rotate at designated speed around a specified axis, or to a specified location. Each of the mobile robots  1720  includes a computer controller that controls the motor system to accomplish the desired movements. The mobile robots  1720  can be organized in teams (or squads) each comprising one or more mobile robots, which can play against each other in soccer games. Each mobile robot  1720  is labeled by a matrix-code symbol  1725  on its outer surface such as the top face (step  1900 ). Each matrix-code symbol  1725  is encoded with a unique identification (e.g. in text, a binary code, or an alphanumerical code) of the associated mobile robot  1720 . A matrix-code symbol  1725  can also be coded with a team membership including team name of the team that the mobile robot player belongs to and a player number for the mobile robot (for example, Team 5, Player 12). The information can include Latin-based language and non-Latin-based characters. Moreover, the matrix-code symbol  1725  can be encoded with a multi-lingual text. In particular, mobile robot  1720 &#39;s identification can be expressed in a multi-lingual text. 
         [0104]    One or more cameras  1740 ,  1741  positioned over or around the soccer field  1710  are configured to continuously record images of the whole soccer filed  1710  and to capture images of the mobile robots  1720  on the soccer filed  1710  in real time (step  1910 ). The one or more cameras  1740 ,  1741  can be fixedly mounted and remain stationery to the soccer field  1710 . The camera  1740  or  1741  sends the image data to computer systems  1750 ,  1751  each responsible for a different soccer team. The computer systems  1750 ,  1751  each can analyze the image data to identify the matrix-code symbols  1720  on the mobile robots  1725  (step  1920 ). In general, as shown in  FIG. 18 , the matrix-code symbols  1725  are tilted and distorted by perspectives relative to the viewing direction of the camera  1740 ,  1741 . The matrix-code symbols  1720  can be identified by segmentation and edge detection techniques. The orientation of a matrix-code symbol  1720  can be determined by registration marks (such as the registration marks at three corners of a QR code). The computer systems  1750 ,  1751  can extract the tilted and distorted matrix-code symbols. The computer systems  1750 ,  1751  can correct the tilt and distortions and transform the tilted and distorted matrix-code symbols into approximate rectangular or square shapes (step  1930 ) to make it easier to distinguish the data grid. In particular, the transformation can include rotation, and an affine transformation. 
         [0105]    The computer systems  1750 ,  1751  can include a vision module that is responsible for retrieving relevant information from the images sent by the one or more cameras  1740 ,  1741 . A data type called Snapshot combines orientation of all robots and the positional information of all mobile robots  1720  and the soccer ball  1730 . 
         [0106]    The computer systems  1750 ,  1751  each can extract the identification numbers of the mobile robots  1720  from the matrix-code symbols  1725  using methods described above in association with  FIGS. 1-16  (step  1940 ).Optionally, the computer systems  1750 ,  1751  also extract team membership from the matrix-code symbols  1725  using methods described above. In some embodiments, the team membership can be labeled by patterns (e.g. a circle vs. a square) or colors (e.g. a red dot vs. a blue dot) separate from the matrix-code symbol. The computer systems  1750 ,  1751  can separately determine each mobile robot&#39;s membership based on the pattern and/or color detected on each of the mobile robots  1720 . 
         [0107]    The computer systems  1750 ,  1751  calculate the positions of the mobile robots  1720  (step  1950 ) on the soccer field  1710  (the positions can be defined as the positions of the centers of the mobile robots  1710 ). The computer systems  1750 ,  1751  also calculate the velocities (including the speed, the direction of the movements including translational and rotational movements) of the mobile robots  1720  using their positions at successive measurement times (step  1950 ). Part of the calculations can also include relative positions and distances between mobile robots  1720 . The computer systems  1750  and  1751  also identify and track the position and velocity of the soccer ball  1730 . 
         [0108]    One advantage of the disclosed matrix-code symbols on mobile robots is that a much larger amount of information can be stored in the matrix codes, which allow unique identification of a mobile robot amongst a large number of teams and a large number of robot soccer players. The matrix code can be encoded with club names, team names, and lots of other information in a single or multiple languages. Another advantage of the disclosed matrix-code symbols on mobile robots is that it is insensitive to lighting conditions (illumination and color) as the conventional color code systems. 
         [0109]    The computer systems  1750 ,  1751  can include a State Estimator which filters noise and corrects delayed vision by computed predictions. It also determines derivates like linear and angular velocities obtained from consecutive Snapshots taken by the one or more cameras  1740 ,  1741 . The estimated information is being stored in a data structure called WorldData. 
         [0110]    The computer systems  1750 ,  1751  can include a strategy module that creates strategic actions for the mobile robots  1720 . The strategy depends upon the information given by the State Estimator. The strategy module retrieves meaningful information from the data structure (i.e. World Data) and creates Actions for robots to execute. These actions are stored in a data structure. 
         [0111]    Each of the computer systems  1750 ,  1751  can rely on pre-stored logic rules and game strategies to develop a team strategy to maximize chances of scoring a goal at goals  1715  or  1716  based on the positions and the speeds of all the mobile robots  1720  in both teams. The computer systems  1750 ,  1751  determine future positions, speeds, and rotations of the mobile robots  1720  on its respective teams (step  1960 ), which are formulated as commands sent to the mobile robots  1720  (step  1970 ). 
         [0112]    The computer systems  1750 ,  1751  can include a motion module that has the ability to utilize the mobile robots  1720  effectively. It depends upon the functioning of the mobile robots  1720  on the field and the task they have been assigned to do. Some important tasks are moving as fast as possible to a certain point, following as accurate as possible a moving target and intercepting a ball. The motion module also depends upon the information created by the State Estimator and it creates velocities for the mobile robots  1720  from the given actions stored in the data structure. 
         [0113]    The computer systems  1750 ,  1751  are connected with respective wireless communication systems  1760 ,  1761 . Each of the mobile robots  1720  is equipped with a wireless receiving system to allow it to communicate wirelessly with the computer systems  1750 ,  1751  via the wireless communication systems  1760 ,  1761 . The computer controller in each mobile robot  1720  can interpret the commands to control a motor system to accomplish the movements of the mobile robots  1720  according to these commands (step  1980 ). 
         [0114]    The movements of the mobile robots  1720  are continuously monitored by the camera  1740  or  1741  and the computer systems  1760 ,  1761 . Steps  1910 - 1980  can be repeated to adjust strategies and develop new commands to move the mobile robots  1720  to score (achieve) a goal. 
         [0115]    It should be noted that the robot soccer system is compatible with one or more cameras monitoring the soccer field in different directions. A mobile robot can be labeled by one or more matrix-code to make it easier to be detected at all angles and possibly by different cameras. 
         [0116]    An advantage of using the 2D matrix code symbols on mobile robots is that the identification of the mobile robots is omni-directional because the matrix code symbols can be decoded with the same accuracy when the matrix code symbols are tilted by angle between 0 and 360 degrees. Hence, the use of matrix code symbols are very accurate at tracking mobile robots that are constantly moving and rotating. The presently disclosed method is significantly more accurate than conventional methods based on Optical Character Recognition.