I've been using arduino boards for powering my robotics projects, however I want to move towards a more professional method of controlling electronics. I am not sure whether standalone microprocessors/microcontrolers are used to control the electric parts or whether they are integrated in custom PCBs or whether premade dev boards are being used. What exactly is most commonly used in the robotics industry regarding this topic? I have heard about AVR, ARM, PIC, as well as intel processors. I saw MIT's video where they controlled an autonomous plane using and Intel Atom processor. How can you control electronics with an Intel processor? If I want to get into professional robotics electronics, what hardware do I need?
If I want to get into professional robotics electronics, what hardware do I need?
Define professional robotics electronics.
I saw MIT's video where they controlled an autonomous plane using and Intel Atom processor.
A college/university program is less likely to use "professional" equipment because, even at a university like MIT, they're still operating on typically a pretty tight budget. If an Arduino or Raspberry Pi would do the trick, they'd probably use it.
I am not sure whether standalone microprocessors/microcontrolers are used to control the electric parts or whether they are integrated in custom PCBs or whether premade dev boards are being used.
There's a lot of stuff going on in this statement, so I'll try to explain it as straightforwardly as I can.
If you're going to build a robotic system, there is a bunch of stuff that can (will) go wrong. When troubleshooting, you want to be methodical and so you'll try to work through each item one at a time.
In building a robotic system, it helps if you can kind of do the opposite - focus on building one layer at a time. If you have a new control algorithm, on a prototype PCB, connected to a new actuator, and you don't get satisfactory results (or any results at all), what aspect is to blame?
The approach I, and I believe most robotics developers, would take is to try to introduce one "new" thing at a time, thoroughly test it, and then add the next new thing. This is where development boards are useful - if you want to try a new processor, don't try to use it on a board you created yourself, because then it's not clear if you're having some bus issue because you wired it wrong, or because you're calling the library wrong, etc.
The development board is something that runs a particular chip, that generally has a programmer and debugger built in, that might have some handy auxiliary circuit(s) included like an analog to digital convert (ADC) or a digital to analog converter (DAC), etc. It's already been tested so you can use that hardware with relatively high certainty that it will work. This means that, if you're having an issue, it probably lies with your software or with the components you have attached to the development board.
Once you've got your program running well, you understand how the board is used, and you're getting generally good results, then you might want to switch to a board you design. Development boards are generally more expensive because they DO feature the programming interface, aux hardware, etc. They can also be kind of a pain to use because they may not always have good mounts.
Creating a board is not free, though - it costs your time to design it, the cost to print it, populate the board, test, etc.
There are only two times I can think of when I would really push to move away from a development board and to a custom board (and I think this gets to the heart of your question):
- When the total cost of a custom board is less than the cost of continuing to use a development board, or
- When you need a particular footprint for your board that cannot be met by using a stock development board.
For point 1, this would generally be if you're going to produce some quantity of product. For example, if you're going to make 10 robot arms to outfit a classroom, then maybe you want to just stick with the development board. If you're going to produce 100 for sale on a teaching website, then maybe you go the custom board route. A development board might cost \$20 where a custom board, with a reduced hardware set and smaller board footprint, might be \$10. Not really worth the effort for development again unless you're going to do some large quantity or if the development board won't fit in your device.
What exactly is most commonly used in the robotics industry regarding this topic? I have heard about AVR, ARM, PIC, as well as intel processors.
The answer here is generally "choose the least expensive one that meets your needs." Factors that determine the cost to you may include things other than price - does the chip really do what you need it to do? Does the chip have a large support community, so you can get help if you need it? Does the chip require external devices for things like DAC and ADCs, or can it do those tasks natively? Does the chip have enough I/O pins or would you need an external multiplexer? Does the chip have enough memory for your program? Does it run fast enough?
Maybe you can answer all of these questions up front, but realistically you might have an okay guess at most of the answers. Then it's up to you to try your algorithm on a variety of devices you think might be competing (again, typically on I/O quantity, memory size, price, etc.) and see which chips you think are the best for your application.
Again, this is where the development board comes in. It'd be nice, if you're going to port your program to run on 3 or 4 devices, if you could just focus on the task of hooking up your I/O and buses in software and not have to worry about whether you've accidentally swapped the MOSI and MISO lines or something like that.
Then, once you've released your first product on a particular device, you'll probably find you'll use that code as the basis for your next project, and then inertia sets in and you'll just keep using that particular hardware family from now on because it's what you're comfortable working with.
So, the tl;dr here is that you should probably stick with the hardware you've been using unless you have some need to do something different. If you need something different now because of a footprint requirement, try making a custom board for the hardware you're used to using. This will give you a lot of insight into the task of designing a board while producing an end object that is useful for your current projects. Don't prematurely optimize - don't go making a task for yourself because you think you might need it in the future. Do your work now on the hardware you have now. If you find it's insufficient, then you should look at migrating.