I'm developing a surveillance robot in which I'm using a PcDuino2 board (ARM Cortex A8 Single-Core) as the unique processor in the project. Ubuntu is installed on the board as my OS of choice.
My software was written in this way: I'm using Posix threads, I've a threaded TCP server which receives commands from a HTML interface (Websocket), thus, this commands are validated as soon as the server receives them and some functions are called in order to move the robot (up, down, left, right) or start/stop a OpenCV thread that looks for a colored ball (just an example).
The fact is when the OpenCV thread isn't running, the robot's movement works as expected, but when OpenCV thread is running I can't move the robot with my interface (even receiving the commands correctly and calling the correct functions).
It seems like the OpenCV thread consumes all the processor resources.
Well, my source files are hosted in my github:
https://github.com/victorsantosdev/thesis-arm/tree/master/thr_tennisBall
The main files to take a look are server.cpp and tasks.cpp, so you'll get a better understanding of what I've written.
It's possible, using a sigle-core processor, to keep motors running in parallel with OpenCV thread processing?