I am building a robot that needs to accomplish the following tasks:

  • Keep track of 4 quadrotor encoders, each 979.62 CPR @ ~ 500RPM, so ~ 8163.5 counts per second

  • Read from an RPlidar A1M8, giving out 8000 samples per second (each sample containing distance, heading, a quality rating of the reading, and a boolean that is true if the device is starting a new revolution).

  • Simon Levy's "Breezy SLAM" algorithm

  • Read from a PixyCam's object recognition outputs @ 50Hz

  • Read from gyro, 60Hz

  • Read from 4 color sensors, 4 ultrasonic sensors, and a TOF sensor, each at around 10Hz

  • Fusing above data to get accurate 2D position information, as well as positions of obstacles, within a room of known dimensions (some of the sensors are for other desired pieces of information that I won't go into). (I'm thinking of going with a Kalman filter - any thoughts on this?)

  • Running a task-accomplishing algorithm (possibly a premade Q-learning model)-- for instance, drive towards the nearest obstacle (though my end goal is much more sophisticated than this).

I am wondering if a Raspberry Pi 3B+ could handle all this? If not what are my options? Do I need a more powerful computer? I am thinking I could probably offload the encoder counting to a separate board, and am wondering if there are dedicated ICs for this.

  • 1
    $\begingroup$ It is very implementation dependent. If the implementation is bad the first two can probably keep the Pi busy. Is it Multi-threaded? Async? Monolythic or do you have some ipc/rpc? c++ or python? can all encoders go on external interrupts/timers/counters to avoid high frequency polling of GPIOs? Q learning does only expoitation or also exploration? It is a hard question to answer even with all details given. You could try some arduinos/ESPs/custom boards to do all the GPIO polling related stuff and leave the slam/sensorfusion/Q-learning on the PI $\endgroup$ – 50k4 Mar 6 '19 at 16:15
  • $\begingroup$ Yes, I was guessing I would need to I’ve a lot more details to get any specific answer... well do you think I could use a quadrotor encoder buffer to offload the interrupt handling? That would just leave the RPLidar and slam together with everything else. $\endgroup$ – Murey Tasroc Mar 7 '19 at 14:29
  • $\begingroup$ yes, but offload also the low level (PID) controllers to the same device. $\endgroup$ – 50k4 Mar 7 '19 at 14:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.