Speeding Up Robot Control Software Through Seamless Integration With FPGA
Résumé
Today robotic computing systems are usually implemented using
general purpose processors because of their accessibility
and simplicity which do not require specific knowledge. However,
this approach restricts several optimization opportunities
and may not always satisfy performance, cost, and energy requirements
[5]. FPGA infrastructures can be considered as a
good solution for these issues, especially in complex robotic
systems that require time consuming tasks. Advantages are
many to use FPGAs along with general purpose processors.
On the one hand, FPGAs provide hardware acceleration and on
the other hand, CPUs allow developers to use flexible software
development environments. However, programming hardware
devices requires a specific knowledge which remains a challenge
for developers and usually results in a loss of productivity
[3]. Moreover, interfacing FPGAs and high-level software
remains problematic. This problem varies depending on
projects due to the change of requirements and takes an important
amount of development time. These difficulties are a
barrier for a widespread adoption of FPGA in systems such as
robotics ones.
In this work, we present a generic architecture along with a
toolset and libraries to ease the integration of FPGAs into existing
robotic system. We provide a mean to connect the FPGA
to the system and automatically deploy VHDL code that can
be either legacy VHDL code, or generated VHDL code from
a HLS tool. Developers do not have to worry about the interface
between the FPGA and the processor. This interface
is automatically generated according to the VHDL code. On
the high-level software side, our software platform allows direct
access to circuit registers on FPGA as memory addresses
(memory mapping). To demonstrate this proposal, we describes
a complete follower robot as a case study. The image
processing to achieve a colour-based object detection is
deployed on a FPGA. The rest of the robot controller runs on
a CPU and has been developed using an object-oriented programming
language (Pharo Smalltalk).