Realtime processing by FPGA for Robots
Background
A robot is a system, which controls actuators (such as motors) based on information from sensors (position measurement, rotation angles, speed measurement and so on).
In order to operate actuators, at first it is need to calculate some numbers, then set values of voltage etc.. Regarding "How to operate", calculation and processing are conventionally done by microcomputers, however, lack of processing performance is a problem for complicated processing. Furthermore, LSI chip consumes too much electricity to install into Robots.
In addition, "Real-time", we call, means "finish calculation processing by time we planned". Value calculation to operate actuators needs to be done by a certain cyclical time (number ms). Calculation is needed to be done within the cycle, otherwise, we can't get an expected control.
In future, this type of control over robots would be more advised and complicated, therefore we expects practical use of FPGA in order to make "processing" more real-time, faster, less electricity consumption and lower cost. Also, a construction technology for a system, in which "network connected sensors and processors cooperate to achieve its aim", is needed, because a lot of sensors and processors (FPGA, microcomputers etc.) in robots are created by connected networks.
Object Request Broker for robot control
Picture no.1 shows a situation, which a sensor is attached to FPGA. Normally, one FPGA is not enough to process control over a whole robot, it is necessary that a system operates with cooperation of software on microprocessors. Here, we assume FPGA and PC are connected by a network.
Generally speaking, in development of remote systems (system broker/remote system), the systems operate individually, so it is not easy to operate them correctly. Therefore, by making a mechanism, which allows PC to send requests for values of a sensor through data communications, it is easier to make a system, in which sensors and processors operate in cooperation.
Picture no.1 Robot-Arm is handled as an object through FPGA (ORB engine)
Well, please take a look at the example showed in picture no.1 again. The input circuit (Quad Counter in this example) on FPGA can't communicate with PC as it is. So, a framework shall be set up to do the communication.
Now, if we decide, how to do the communication, in other words, how to interpret the meaning of communicated message, each time, development takes a lot of time. Also, same kind of sensors may interpret messages differently each time, so development can be very much confused. To solve this type of problems, the notion of Object Request Broker can help to improve productivity of design development. Object Request Broker is to distribute objects of object-oriented language, and connect them through networks by data communications.
In the framework of Object Request Broker, method calling (function calling) of standard object-oriented language can be corresponded to the meanings of messages. Furthermore, system developer may only need to write commands to call methods of objects. Because corresponded communication is to be done by the framework of Object Request Broker, he/she doesn't have to pay attention to the data communication. Therefore, productivity of development will be greatly improved. (ORB to be explained separately later. As a standard ORB, there is a notion, called CORBA.)
As of today, it is not common to apply FPGA in a framework of ORB. Therefore we develop "ORB engine" as a technology, which allows any FPGA circuit (hardware) to be handled as an object in ORB.
Inverted pendulum connecting FPGA and PC by ORB
We develop an inverted pendulum controlled by network with ORB engine, so that we can show a possibility of real-time use of ORB engine.
- System and sensors are Beauto Balancer (Controller with H8 microcomputer) from Vstone Co.,Ltd.
- FPGA substrate is ex Stick from e-trees. Japan, inc.
We presented this system at international conference HEART 2013 (2013/06/13). As for detailed technical data, please refer to our abstracts or contact us.
Movie
Structure
Motion sequence (division of roles)