After quite a few months of building my own robot (please refer to all of these), and after twice having parts fail, I decided to take a step back and re-think my strategy and direction.
The several months' experience was at times very rewarding, and many times very frustrating, very hard, very disappointing. Many times it seemed like two steps forward, one step back.
And I guess that is due to a combination of several things.
My goal was to build a "real" robot - not a toy. A large , powerful robot, with robust parts and lots of available battery energy, that could run (all day?) and also be autonomous. That it could safely navigate my entire apartment without causing (itself or anyone / anything) damage.
While I was very ever so slowly making progress, the amount of research, trial-and-error, try this, try that, was very time-consuming and took a lot of mental / emotional energy.
After having the same parts fail twice, it would be insanity to just replace them once again, and keep on going.
It was with a heavy heart that I chose to let the current "Wallace" project go back on the shelf, especially since I was so close to incorporating an IMU into the robots' operating software.
So What To Do Now
It so happened that during the last week of my "do-it-myself" robot-project, at work I was taking an online software course. The course is irrelevant - what made an impression on me was just how good it was. The instructor practically led the viewer by the hand, step-by-step, and one could follow along, pause the video, do the programming problem (just a small piece at a time), and then see how one's solution matched the instructor's.
And - even better - the entire series revolves around a real software project, that is actually easily useful for real-world website business needs.
It was so rewarding, so NOT stressful, to not have to wonder "what should I learn next? How would I go about doing / learning 'X' "?
So, between what was going on at work, and the parts failing at home and me being so exhausted by the amount of effort, that I wished for something similar to the online course I was taking for work - but that it be for learning robotics.
What I did NOT want, is to repeat the last few months. I didn't want to buy yet another robot kit, and then flounder around some more to make it do what I want it do do. And I also didn't want a completely built, ready-to-go solution because then what would I learn? I've already done the "assemble-your-first-robot".
Step 1: Robotics Is ...
The problem with really learning robotics is that there's just so much involved. It is the intersection of at least (if not more) these:
- mechanical engineering
- electrical / electronic engineering
- software engineering
Each of the above can be further elaborated (which I won't do here). The point is: there's a LOT to learn.
I decided to go with a two-pronged approach, and thus this "Instructable", for you the reader to consider. I decided to tackle or start in two different but complementary directions simultaneously.
- Review / Improve On / Learn / Expand DC and AC circuit analysis
- Find a Course / Program that is a combination of theory / lecture and hands-on, and revolves around a robot kit.
Step 2: DC and AC Electrical Engineering
The reason I want to spend time learning and reviewing this area is because the robot parts most likely failed due to my lack of providing proper circuit protections in certain areas. If you review the robot-related Instructables, I still think they are very good and useful, even now. It was only a certain segment of parts that were failing, and only after some length of time.
To be specific, the robot included a top-level surface upon which there was what I call "supporting circuitry". These are the GPIO port-expansion and sensor-related circuits, breakout boards, chips, power-distribution, and cabling needed to monitor and control all kinds of sensors, in order for the robot to be safe and autonomous.
It was only a few of those parts failing - but they WERE failing.
I did write to an engineering forum and I did get replies. It was the amount of detail and the level of the replies that really hit home with me that I am just not prepared for the level of robot that I have in mind.
There's a world of difference between a small robot kit that has two inexpensive motors, maybe a 2/3 Amp motor controller, maybe a couple of sensors, that you can carry in one hand -- and one that weighs upward of 20 lbs and has very powerful 20A motors, and upwards of 15 sensors, that can do real damage if something goes wrong.
So, it was time to take another look at DC and AC electronics. And I found this site:
Math Tutor DVD. I found the title to be a bit hokey and outdated. I haven't even seen a CD or DVD in years. Right?
But I did take a look at it. And eventually did subscribe and now I can stream videos all day long if I wish. All for $20 USD per month. So far I have covered Volume 1.
Think of being in a class with a professor at the front, with a whiteboard, introducing subjects, elaborating on them, and then it's practice, practice, practice. And that's what this site is.
We eventually had to hit matrix algebra because the circuits had too many simultaneous equations with like number of unknowns. But that's ok. He goes over the algebra just enough to get through the problems. If the student wants more, there are also separate math physics courses as well. It's been a very good program so far.
My hope is that by the time I get through these courses, I will arrive at the answers to my problems with my parts failing, and be ready for future robotics in the area of electronics.
Step 3: Robotics Training and Project
But here's the best part. The previous step can perhaps be a bit dry and not rewarding. (Although, once you're past a certain point, you WILL be able to choose your own parts, design your own circuit, and build whatever you want. Say you wanted to build (just for fun) a radio transmitter and a receiver. Say that you wanted that to be with your own choice of frequency and protocol. You would know how to design your own circuits.)
There's something else to do at the same time: a robotics course. A real robotics course.
(If you only want the micro-controller board to do your own thing (I am composing a series of Instructables that might be helpful), the MSP432 development board itself is relatively inexpensive at around $27 USD. You can check with Amazon, Digikey, Newark, Element14, or Mouser.)
It so happens that recently, Texas Instruments has produced such a comprehensive course. The TI Robotics Systems Learning Kit. Please don't let the "kit" part fool you. This is waaaay more than just a "build another small robot kit". Please take a serious look at that link.
It cost me $200 USD for a complete kit. You can also view the attached video I put for this Step.
Look at all these learning modules:
- Getting Started
- Module 1 - Running Code on the LaunchPad using CCS (my observations of Lab 1)
- Module 2 - Voltage, Current and Power (signal generator and capacitance Instructables elaborated from Lab 2)
- Module 3 - ARM Cortex M (here's Lab 3 notes Instructable - comparing assembly to "C")
- Module 4 - Software Design using MSP432 ( video of Lab 4 notes , video #2 of Lab 4 )
- Module 5 - Battery and Voltage Regulation
- Module 6 - GPIO (check out a Lab 6 Instructable Part 1 , Part 2, and Part 3 but with focus on assembly programming)
- Module 7 - Finite State Machines (Lab 7 Part 1 Assembly)
- Module 8 - Interfacing Input and Output
- Module 9 - SysTick Timer
- Module 10 - Debugging Real-Time Systems
- Module 11 - Liquid Crystal Display
- Module 12 - DC Motors
- Module 13 - Timers
- Module 14 - Real-Time Systems
- Module 15 - Data Acquisition Systems
- Module 16 - Tachometer
- Module 17 - Control Systems
- Module 18 - Serial Communication
- Module 19 - Bluetooth Low Energy
- Module 20 - Wi-Fi
- Compete Challenges
This video from TI can say what I wanted to express much better than I can.
Step 4: Use the Robotics Curriculum As a Starting Point
While not easy, or not as proscribed, you could expand upon the lectures, labs, activities, etc, that the curriculum offers.
For example, I've linked some other Instructables into this one (see the previous Step listing all of the learning modules) where I tried to either expand by doing more with the electronics (capacitors), or try to write the code in assembly in addition to writing it in C.
The more you're familiar with assembly programming, the better higher-level language programmer you can be; the better choices you'll make in projects.
Step 5: Arduino Vs MSP432 (work in Progress)
I didn't really know it with any certainty at the time, but I had that impression... here's an excerpt from an article that can express it better than I can:
Differences between Arduino and MSP432401R:
Now, we will see why we picked MSP432 as opposed to the much popular Arduino. Arduino might be quite simple to program and prototype because of all the available APIs, but when it comes to better control of hardware, MSP432 has the advantage.With the help of CCS, we can not only access the address space of MSP432 but also we can change a values of different registers which will appropriately affect different settings.Arduino is not just a microcontroller, it virtually is like a wrapper around a microcontroller. Arduino is like a cooked pie whereas MSP432 is like a raw orange which we have to cook ourselves. Hopefully, this clarifies the different applications of both of them.For the beginning stages Arduino can be used, but when performance becomes critical, TI MSP432 works much better because of the control over hardware.
That excerpt is taken from here.
Step 6: Raspberry Pi 3 B Vs MSP432 (work in Progress)
The comparison isn't really fair, as the Pi is really a micro computer and the MSP is a micro controller.
However, with the T.I. Robotics Kit course, it is being used as the brains for a robot.
Obviously, the Pi has a lot more memory.
The Pi, running stock Raspbian, isn't a real-time OS. This drawback could come into play if you were interested in getting precise measurements (timing) from a sensor.
The MSP on the development board includes two general-purpose LEDs (at least one, maybe both, are RGB), and the board also includes two general-purpose momentary push-button switches.