-5
\$\begingroup\$

The Arduino Microcontroller platform is great for hobbyists. But I was wondering if there is an alternative to it? I need to calculate the position and speed of the robot in a defined space using the kinematic equations that take input from accelerometer and some distance sensors. I know this can all be done on the Arduino platform but it's slow at each loop call. Is there a faster platform that would allow me to read sensor data, do my math and then write to my motors? Edit: Since the question appears broad I want to add I intend to run SLAM algorithms with fast response time on the robot itself. I understand RPi works here but since it's not a dedicated processor (I.e. it has other stuff happening in the background) it isn't reliable. Hence I ask, which platform is fast enough to help me here?

\$\endgroup\$
7
  • 1
    \$\begingroup\$ Yes, there are lots of alternatives, but this is not a place for listing them as the list will change over time. \$\endgroup\$
    – pjc50
    Dec 27, 2016 at 12:59
  • \$\begingroup\$ @pjc50 I understand that but can you give me something to start with \$\endgroup\$
    – badrobot15
    Dec 27, 2016 at 13:01
  • \$\begingroup\$ Downvoted because the question essentially boils down to "are there other microcontroller platforms?" which is easily answered by googling "microcontroller platforms" or "Alternatives to Arduino" \$\endgroup\$
    – Jotorious
    Dec 27, 2016 at 13:17
  • \$\begingroup\$ Upvoted because the question is more complex that it appears and some people don't realise that. There are very few hobbyist alternatives to Arduino, Rasberry being the only notable exception. An alternative has not to just be electrically equivalent. That's naive. For a hobbyist, there are cost, support, tooling and technical skill considerations. If I'm wrong, ask yourself why is Arduino market leading, and why do children not building thingies based on IP cores within Xilinxes? \$\endgroup\$
    – Paul Uszak
    Dec 27, 2016 at 13:51
  • \$\begingroup\$ @badrobot15 maybe Beaglebone, if you can use the PRU subsystem for motor control. \$\endgroup\$
    – pjc50
    Dec 27, 2016 at 18:56

3 Answers 3

5
\$\begingroup\$

A arduino is just a microcontroller with a lot of sugar coating around it. As a result, it is easy to get simple things done, but also has some limitations and doesn't give you access to everything the microcontroller can do.

The solution is to use a microcontroller directly. There are many many out there to choose from. Start by listing what things you really need done in hardware, then select a micro with those capabilities.

\$\endgroup\$
8
  • \$\begingroup\$ Yes. The problem is most likely neither the Arduino nor the underlying ATmega µC but the total lack of interrupt routines for the hardware control part and unnecessary complicated math for the calculations part. Remember we aren't doing complicated math when we are moving our arms. \$\endgroup\$
    – Janka
    Dec 27, 2016 at 12:52
  • \$\begingroup\$ @Janka See playground.arduino.cc/Code/Interrupts for Arduino's hardware interrupts. They have several flavours including dedicated pins, rising and falling edge detection... \$\endgroup\$
    – Paul Uszak
    Dec 27, 2016 at 13:40
  • \$\begingroup\$ @Paul Uszak: I know the ATmega and ATtiny µCs very well. The problem is the way people program on the Arduino platform. They don't synchronize things directly to hardware interrupts but instead put it into the main loop and oversample the inputs excessively to reach low latency. That way you need at least ten times more performance than with interrupts. \$\endgroup\$
    – Janka
    Dec 27, 2016 at 16:03
  • \$\begingroup\$ Another problem is people using math and closed-loop-control libraries without understanding what these are doing. You can easily burn ten-thousands of cycles by doing hyper-exact floating-point-math closed-loop-control when a simple huff&puff (1 bit!) control algorithm would achieve the same accuracy at lower latency. \$\endgroup\$
    – Janka
    Dec 27, 2016 at 16:08
  • 2
    \$\begingroup\$ Your arm has a rather complex nonlinear analogue control system linked to a neural network. \$\endgroup\$
    – pjc50
    Dec 27, 2016 at 18:55
2
\$\begingroup\$

SLAM and Arduino simply don't match up.
What sensors are you using?
What robot velocities are involved?
Does the use of Kinematics imply a 3D space?

It's challenging to do 4 camera SLAM at better 2-3 fps without a GPU on a PC, so IMO no cheap minimized microprocessor solution is going to have the performance and storage you potentially need.

It's just possible you may be able to do some low-medium performance SLAM on an array of 2 or more Raspberry Pi 3's (quad core 1.2 GHz), and even more possible if you could use their GPU's.

There has been considerable work done on Raspberry Pi so look up some of the papers such as this on an Odometry based SLAM. You have many options for the OS used on the Raspberry Pi, so you can do much to reduce background task/scheduling overhead. If you don't like the Raspberry Pi, there are lots of other quad core ARM implementations out there, but almost universally they will run a Linux variant.

Hope this helps

\$\endgroup\$
0
\$\begingroup\$

Arduino is a very good start for beginner but it's pretty expensive, slow and use lot of power. There is lot of alternative to Arduino like microcontroller from TI, microchip, altera and many more. You can select the microcontroler with many criteria like number of pins, communication protocol, clock speed and so on.

\$\endgroup\$
1
  • 1
    \$\begingroup\$ The ATmega the Arduino is based on is low-power, cheap and it's fast enough for most projects. The price and high power requirement comes from the peripherals present on the Arduino board. These would be the the same for any other board with the same features. \$\endgroup\$
    – Janka
    Dec 27, 2016 at 16:13

Not the answer you're looking for? Browse other questions tagged or ask your own question.