-
Although the NAO has two cameras,them don’t work like general Binocular camera. The main reason is that the visual field of two cameras in NAO have a very small degree of overlapping. If the robots need to use images from the lower and upper camera respectively, it can’t get enough information by contrasting the difference of these images. So, I think that BHuman just creat coordinate system in one image instead of contrasting difference of visual field to get the relative position of ball. After this, it needs to recognize the approximate location and shape in images. A convolution neutral network can complete the work well. For example, BHuamn build a small and simple network that is similar to the U-Net, And TJArk use the CNN to process images. Because we can get the camera’s position and orientation relative to body, it’s easy to define a mapping between coordinate system in images and relative coordinate system. We can get the position of ball in relative coordinate system via the mapping.
-
If we want to make some changes base on BHuman framework, we must have a clear understanding of some concepts. The most important, is Representation and Module. A thread includes a lot of Representation, you can see the relationship among them in file path: Config/Scenarios/Default/Threads.cfg. Representation is a place for getting data, that means data updating in a thread is executed in Representation (in fact, the actual place of getting and updating data is ‘provider’, Representation more likes a database). The main function of Module is performing a certain task, e.g.image processing, self-localization, or walk. Module need a data input, that is Representation. Theoretically, after we define and add our representaton and module, we can realize most of partions of vision and motion according to our ideas. BHuman is so massive because it contains so many functions, such as simrobot, that is not advantageous for normal students to learn the framework deeply, and may cause some difficulties when we want to develop or replace some sections. We can extract the main structure of the code and trash others so that we can test our code in a more simple framework.
-
Only using the concepts of Module and Representation is not adequate, we must know bottom frame. For robot controlling, operate system give us a kind of interface to get data and send commands to hardware, that is LOLA. More contents about its usage still need to research further.
In a word, there give an idea to write a new framework to take part in international match in future by ourselves.
Reference: TJArk coderelease2019, BHuman coderelease2019.
code of TJArk: https://github.com/TJArk-Robotics/TJArkCodeRelease2019