23

It's certainly possible to implement this on an Arduino. Here are 3 such Arduino libraries that implement neural networks: Neuroduino Arduino Basics ArduinoANN The complexity of the network that the Arduino can handle is a separate question, especially when it comes to training -- tens of thousands of iterations on training data. Training on a fast ...


13

You want to use USB for communications with the computer. If you have a number of microcontrollers, you will probably only connect one of the microcontrollers directly to the computer. The other microcontrollers will need to get their commands from the main microcontroller. The communication you choose will depend on a number of factors: required bandwidth ...


11

There's more than one way to do it (TMTOWTDI). There are a several ways to connect 8 analog inputs to an Arduino. Add an analog multiplexer, as georgebrindeiro suggested. Such as: (a), (b), (c), (d), etc. Replace the Arduino with one that has enough analog inputs already built-in. Such as the Arduino Mini with 8 analog inputs, the Arduino Due with 12 ...


10

Could you train a neural network on a microcontroller? Maybe, but please don't try. Could you use a NN for classification, etc on a microcontroller? Sure, as long as you can calculate the result of propagating the node and edge values and handle the multiplications.


10

How Servos Work Based on these details of your question: I just got a kit [...] continuous servos [...] plugged it into the microcontroller Combined with your "Arduino" tag, I'm betting that you are working with hobby (RC) servos modified for continuous rotation. Standard servos work by receiving a pulsed signal with a 20ms period (50Hz). Regular ...


9

There are a number of things to consider for your project. Since you are asking for the learning algorithms, I asume your hardware is or will be up and running. When getting your robot to learn, you should differentiate between on-line and off-line learning. Further, there is on-system and off-sytem learning, which can be combined with the previous category. ...


9

The Arduino is really an AVR Atmega328p. The Arduino is a fine off-the-shelf implementation of this microcontroller, but if you make many of them, you can buy the chip for less than $3 each in bulk, and it requires very little circuitry to run on its own -- a crystal and a couple of capacitors to run at 20 Mhz, or not even that if you can run at the built-in ...


8

It sounds like you're observing the symptom of "lost bytes". There are several different things that can cause an AVR to lose bytes. It sounds like you are guessing that it's losing bytes when new bytes are coming in while the buffer is full. While there are several remedies to fix or at least ameliorate that particular problem, those approaches are useless ...


8

The processor has to execute something. You will always have an "endless" loop even if you're doing some work in an interrupt handler. The best solution depends on exactly what you're trying to do. The main advantage of using interrupts is they allow you to service events in real-time while your main program is doing something else. Timer interrupts ...


7

I'd recommend getting your hands on a 3pi and an Arduino. They both use the same chip, and are a great place to start. Get yourself some tools. A soldering iron with a sharp point. A multimeter. Some breadboards and some wire. Actually, just look here: Ladyada's Equipment List


7

It would be nice if we could tell the compiler the range and precision of each fixed-point input variable (perhaps no two having the radix point in the same location), and it would automagically -- at compile time -- use the correct range and precision and rescaling operations for the intermediate values and final values in a series of calculations. I've ...


7

There is not a specific set of learning algorithms that you will need to implement. Genetic algorithms (GA), neural networks (GA), and reinforcement learning (RL) have all successfully been applied to the problem of gait generation. I can also conceive of ways to use unsupervised learning methods to approach this problem but I can't say for certain whether ...


7

You'll have to determine yourself whether a motor controller shield is compatible and can be stacked on your existing shield. In some cases, you can use Arduino's SPI. In other cases, you'll need to check whether the pins that your shield uses would conflict with the pins needed by a motor controller.


7

Yes this is entirely possible, and as FuaZe said, it's called a bootloader. You essentially have two programs on your chip, each with their own memory area; the bootloader and the application. Preferably, the bootloader area is write-protected to make sure you don't accidentally destroy it. With the bootloader, you can use any algorithm you want. If you ...


6

An optical encoder is fairly simple to add to an existing wheel. Essentially you mount a photosensor that can detect notches or patches on a disk as it rotates with the wheel. You could use through hole light detection as well. The circuit design is fairly straight foward And your arduino program counts the number of pulses it receives. Knowing the number ...


6

In general you don't need to learn assembly to be able to program a microcontroller. As long as you know C, it's enough for you. Knowledge of assembly of course would help. Specifically, it would help in writing optimized code (or rather, not writing stupid code) as well as having a good estimate of how fast or slow a piece of code could be. Sometimes in ...


6

The first thing to realise is that this is not a control problem, this is a planning problem. If you conflate the two, you are making life much more complex than it needs to be. Solution - Motion planning The traditional way to achieve what you want is to have two loops. The outer planning/supervisory loop generates way-points for specific points in time, ...


5

Here's a paper that seems relevant: Policy Gradient Reinforcement Learning for Fast Quadrupedal Locomotion. Abstract: This paper presents a machine learning approach to optimizing a quadrupedal trot gait for forward speed. Given a parameterized walk designed for a specific robot, we propose using a form of policy gradient reinforcement learning to ...


5

specific answers; yes that controller will work fine, and is pretty popular. No it does not need anything additional other than to be hooked up to the receiver. from it, you hook up four speed controllers, and to them 4 motors. yes that transmitter receiver will work, but it is a little on the 'too inexpensive' side. You do realize it requires hooking it ...


5

Yes. If you only run it in feed-forward mode and do your training off-line somewhere else: I programmed a 3-layer (5-5-2) feedforward ANN on an Arduino UNO. It ran on a mobile robot. Whenever the robot would hit something, it would re-train the network. The feedforward portion of the net ran in real-time; while the back-propagation training took on the ...


5

I can highly recommend CAN for inter processor communications. We use it in our robots, with up to 22 processors on the same bus. With good protocol design, you can use up about 90% of the available bandwidth (about 640kbps when you take into account all of the error checking and inter frame spacing). We're able to servo 10 motors at 1000Hz on one CAN bus. ...


5

If I understood correctly, you are referring to robotic tendons. There is a lot of material on the subject if you search google.


5

Whenever you have more signals than appropriate inputs in a digital system, you likely need a multiplexer or simply mux. An M-to-N mux is a circuit that enables you to select which of M input signals you want to output to N mux outputs, usually using digital pins to make that selection. Googling quickly, I found this solution for the Arduino Uno: a Mux ...


5

This is one of those "open-ended" questions that the moderator doesn't like. So I'm going to leave you with some short, general answers. These are based on over 20 years in industry designing various bits of hardware and software for embedded systems: Learning enough about microprocessors so that assembly language programming comes naturally will be a big ...


5

The signals to the ESC's using PWM should be sent after the PID algo is done processing the errors. The output calculated from the PID is the PWM value to be sent to the ESC's to actuate the motors in such a way that they move to reduce the error thus obtaining the desired orientation So the right order is: Read RX signal Calculate desired pitch, roll, ...


5

There are 2 main reasons why the MER is still operating long after it's 90 Sol planned lifetime. The first is political, strategic, and can be summarized as 'Under promise, over deliver'. When a PI (principal investigator) proposes a high-risk scientific mission like this, they always frame the goals of the project such that their project is viewed ...


4

If you have no idea what to do with your microcontroller, I would start slower. I wouldn't say using a Kinect is that great an idea right now. Some of the other answers mentioned using development kits and boards to avoid soldering, which I think is a great way to get started with embedded programming without having to worry about soldering practically ...


4

I'd suggest two possible approaches. Use a 'heartbeat' to transfer a well known state packet at a fixed frequency that fits within your 'speed budget'. In this case, you never send ad hoc messages directly from the PC or MCU, all you can do is update the state packet which will be sent at the scheduled time. Put a hard limit on your 'transmission budget' ...


4

I built a line following robot with an Arduino before. It was really simple to do and all we used were color sensors on the bottom inputted in the Arduino, and then of course some motors for the wheels. But using an Arduino allowed us to have plenty of room for other components we wanted to add on to make our robot do more things. Also, if you want to ...


4

It really depends on the project. For a line follower robot ( in your case ), using the Atmel's AVR series is the best choice. Specially ATMEGA16 or even ATMEGA32. Because the line-follower is a small project and the Arduino is too much for it. And the other advantage of Atmega16 is that it is cheap. If it is broken or faulty then you can change it easily....


Only top voted, non community-wiki answers of a minimum length are eligible