Testing bare-metal embedded C isn't straightforward. Someone will shout "stop using printf," and you'll yell back, "what's a printf?" They'll follow up with something about emulators. They're not wrong, but how do you efficiently regression test on the emulation target? Sure, you'll eventually have Requirements Based Tests (RBT) and "black box test procedures," but they are hardware-in-the-loop and tedious to run. A full RBT suite can take weeks to execute with a combination of manual and scripted tests. The pathway to happiness isn't simply a fast "edit-compile-run" development loop, but a "edit-compile-run-It Works and Didn't Break Something Else" cycle. Enter cross-compiled TDD.
Automated planning is a field of AI techniques for determining how to transform the world from an initial state to a goal state. This guide implements a form of classical planning in which we represent the problem domain as a set of state variables that are modified by each action taken.
The Jumper T8SG V2.0 Plus is a multi-protocol remotes with Hall-effect gimbals commonly available near the $100 (USD) price point. It supports the Bayang protocol without any additional modules, which is perfect for the E011C I’ve been flying. At this price, it is a very interesting option for those just getting into flying but tired of toy remotes.
Remote control quadcopters have been around for years, as has been "First-Person View" flying. If you're new to the hobby, plowing an expensive FPV racing drone into a house might not seem too appealing. There are also some considerations imposed by the FAA. However, there are indoor miniature quadcopters now, and here's how to put one together on-the-cheap. You can go from zero to FPV for about $70, including the drone, remote control, and goggles.
Now that we have a basic inverse kinematic model, the sky's the limit. Wait. The horsepower of a Raspberry Pi Model A is a pretty good limit. In this video, the eye vector is tracing out a circle, trying to hold 1 second per circle.
I bought an AliExpress Kossel Mini kit that is usually listed as an "FLSUN." It's been a great learning experience. The latest challenge has been tuning the retraction settings to minimize the amount of stringy material carried by the nozzle as it moves between positions. Note that this printer uses a Bowden extruder. The values that worked for me should not be used for a direct feed extruder.
Unfortunately for us, forward kinematics doesn't let our robot control itself. To determine the servo positions that achieve a robot position, we need inverse kinematics.
To add a context menu action, add
The process of determining the state of the robot from the control inputs is the forward kinematics. For a given set of 4 servo positions, we should be able to predict the orientation of all parts of the robot.
Let's make a desktop robot that moves. But wait, we have no tools.