Getting there, slowly.
Getting there, slowly.
And it works! I was supposed to be relaxing today. Instead, here are 2 encoded motors, connected to my beta shield wirelessly transmitting odometry to the PC.
Next is mounting it on the physical bot, and I am sure a movie to shortly follow since the nice 3D visualization is already done I need to drill out 24 standoff posts to so it may take another cup of coffee.
In this configuration, the pilot board serves as a wetware interface. That is, it routes encoder information to the Arduino, it has pins for the LIDAR which will use software serial (I hope, TBD). And it has the Gyro interface board. It sits on top of an XBee shield that wirelessly communicates to the desktop/laptop, thus a very powerful SLAM learning machine.
Absolutely had a scare earlier, but it turns out since it is a shield, the failure of eagle to connect all ground pins did no harm. Electrically it checks out by meter. Magic smoke test later today.
My experience attempting to do hardware.
I have dabbled in robotics for some time. As a software developer, I wanted software to be my focus. What I quickly discovered was robotics as a hobby is a hardware domain. Most hobbyist feel building designing the electrical and mechanical components is the goal, and programming is only done by very few. To me, that is not a robot, but I obviously have a different perspective. In college, robotics splits into mechanical, electrical and software/computer engineering, and both branches pursue their particular speciality and often cooperate, not really true in the hobbyist world.
I’d like to share my experience as a senior software developer. I started with LEGO Mindstorms, a robotics educational system. The robotic components consisted of modules that were connected to a central brick by plugging in RJ-45 (telephone) connectors. For software you had a range of choices from graphical entry-level, to advanced object-oriented Java. This meant you got the mechanical engineering experience (LEGOs), the software engineering experience, but not the electrical engineering experience.
I then tried to make the next step, real computers. Real computers have USB host ports, not RJ-45 connections. Arduinos are NOT a step up. If anything they are a step back. So I began looking for something, anything, that would give me basic functionality I had on the LEGO. Nothing. What I found was an overwhelming movement towards Arduinos, and the wire it, solder it, design it yourself mentality (aka Make) that is Arduino. Ok, so you have to step back and learn electrical engineering. Here is what that process looks like to me;
When you are designing your electronics, you must first identify each and every major part you think you will need. There are 1000s of manufacturers, millions of physical footprints, and very little common or standards between them. Most manufactures (and often suppliers) will guide you toward their free software. Of course the intent is to tie you into their supply chain. Once you identify the major components you want, you find it’s spec sheet. Very often (usually?) the spec sheet is labeled preliminary and in many cases I have found 4-year-old preliminary documentation with mistakes for common components. It is just the way it is, deal. Now that you have that you can begin the same process for the support components like the power supply, or connectors. In software this is the equivalent of selecting all while loops, and for loops, and if statements you will need ahead of time. Yes there are millions to choose from, but you must pre-select, they can not easily be changed later.
As you begin writing your program, err laying out your board, you can use goto statements. But a goto statement must not jump over any other goto statement. If you really really need to, you can jump to another level (you only get two) and goto from there. You probably need to jump back to the first level before you reach your destination, although some destinations could be on the second level, but the same rules apply, you can not jump over other gotos. You need to arrange all of this in your head before you start. sometimes 300-400 gotos are not uncommon. Some gotos need to be thicker than others. I thought this would be an obvious use for a computer to help with, but it turns out it is so complicated that only the most advanced neural networks on the planet can solve the equations, and they are usually very very expensive. No, you have to try it your self, and hope.
At this point you wait 2-3 weeks. You can order all the parts you pre-selected at the same time, but if one turns out to be not what you thought, you will need to start over. Finally your program, err board is ready to run. You press go. There are two possible outcomes and neither one is a warning message. You will see blue smoke, or you wont. Even if you do not see blue smoke there still might be errors. In either case, blue smoke or errors you will need to start over. You might be able to change a goto, but it will still be a 2-3 week wait before you try again.
By the rare chance you see your intended blinking red light, there is no need to further check anything, it is probably ok and you can begin shipping to customers.
I told someone earlier today, sure has been fun, no wait, it hasn’t.
After getting side-tracked so many times, including this entire ‘make it yourself because you can not buy it’ experience (I am trying hard to help the next guy/gal avoid that), I completed a step that was part of the original goal all along. Live Landmarks in 3D space.
There is still a lot to do, including getting the pilot PCB working. I took a step back on the design and it is due today. The original design was far beyond a beginners capabilities, and so to not waste parts I remade a much simpler to build, albeit far greater cost, prototype.
Once that works I will have odometry I need.
For years I wished I could afford SolidWorks. I lived with what I called a reasonable low-end clone. In looking through that clones forums, desperate to find an improved solution I could afford. I ran across a name. I googled. I was accepted into a pre-production program. I fired off an email “I am angry, I will never be able to afford this.”
That apparently caught someone’s eye, and I received a personal response from people at upper levels in the organization. In my defense I had only just started learning the program and I had not read through any of the discussions or other announcements. What I saw was something obviously poised to be far better than Solid Works could ever be, and the first web app in my life I would use without being forced. I had gotten excited, but then realized it would cost more than solid works. It was being created by the Solid Works original developers and leaders as a follow-up. Yeah, this is it, what could be better?
Oh, it will be free. BANG (the sound of my jaw hitting the floor).
I’ve met some people I respect now in the following online discussions. I have seen in action a development team that has a clue (I had almost given up).
There are still a few areas that need to be added, but this is just now entering public beta, and my advice to vendors; if you can not work with it, start packing your going out of business boxes.
Update 3/15: I am real tempted to fire off another email;
I am still angry. You have just made all other software obsolete and archaic. I will never be able to afford replacing it all with something as good as Onshape, unless it will also be free.