ASTRALIS: An Overactuated Aerial Manipulation Quadcopter
Hardware- 9 Devlogs
- 37 Total hours
Quadcopter with single-axis tilt (rotor pitch) to counteract disturbances induced by dual-jointed (shoulder, elbow) manipulator.
Quadcopter with single-axis tilt (rotor pitch) to counteract disturbances induced by dual-jointed (shoulder, elbow) manipulator.
This devlog will be short since most of the work involved writing and documentation.
It took me a while to stop procrastinating, sit down, and write the README.md, but it’s finally done!
I gave a basic introduction to each part of ASTRALIS and explained how it works. I also added dedicated sections covering the electronics, software, and bill of materials. I also added some renders which I’ve included on this devlog.
Outside of the README, I added the remaining screws to the CAD and finalized the project diagrams.
Across the last three days, I’ve had a realization.
My project was a little too expensive for me to want to self-fund, even with the grant. I felt that I was paying too much of a premium for certain items. In addition, after a comment I got on my previous devlog (thanks @Abracadabra3!), I realized the servo motors I was using probably wouldn’t hold enough weight to create good research data.
So, to solve both of these problems (or at least reduce them), I switched from the Dynamixel XL430/XL330 ecosystem to the Waveshare ST3215 serial bus servos.
Advantages
Accepted Losses
I adapted the robotic arm to be compatible with the Waveshare ST3215 servos, with an emphasis on reducing the weight of each joint.
The biggest change was redesigning the base joint so that it only encloses the servo instead of mounting it off to the side. I also used more generous material pocketing throughout the design to reduce weight.
I further increased the arm’s maximum reach so that it can reach the landing gear if needed.
I also started doing the math on how much the arm can actually hold (currently using both a whiteboard and Excel), but I haven’t finished it yet. This isn’t a huge priority right now, as I’d like to improve the linkage system and continue working on the code first.
I started by creating the architecture of my codebase. I also established the basic MAVLink initialization code and built a listener that filters messages such as battery data (voltage and battery remaining) and GPS data.
Files Worked On
vehicle_states.pymavlink_interface.pyAfter taking a short break from ASTRALIS to avoid burnout (and do college application stuff), I’m back to continue refining the design and begin software development. With the mechanical design mostly complete, I’ve shifted focus toward reducing costs, preparing the project for funding submission, and laying the groundwork for future testing.
The primary goal during this stage was standardizing hardware and optimizing the Bill of Materials while preparing the project for prototyping.
With the mechanical design approaching completion, I also began planning the companion software architecture that will run on my Raspberry Pi 4.
The initial implementation will focus on:
The long-term goal is to use this software as the foundation for testing disturbance rejection using the aerial manipulator.
To prepare for the hardware funding request, I’ll continue improving the design where I can while mainly directing effort towards software development.
Over the past few days, I finalized the overall airframe, completed the aerial manipulator, and finished the design of the thrust-vectoring tilt pods. This was probably one of the toughest and most detailed-focus stages of the project so far (definitely stayed up super late fixing it sometimes!), prompting several redesigns to accommodate the Dynamixel XL330-M288-T servos while also standardizing hardware throughout the drone.
Note: I have another CAD timelapse recorded in Lookout that I’m still trying to transfer into Stardance.
A major focus during this stage was reducing complexity and improving ease of assembly.
The landing gear went through two complete design iterations.
The original concept used a dedicated clamp that attached independently to the carbon fiber arms. After evaluating the design, I integrated the landing gear directly into the arm end cap instead.
This redesign:
Each landing gear assembly consists of three printed components, including TPU feet intended to improve grip and absorb landing impacts.
The thrust-vectoring pods are now mechanically complete.
The largest addition during this stage was designing the pushrod linkage connecting each servo horn to its corresponding tilt pod.
At the moment:
The aerial manipulator has now been finalized.
One of the largest changes was redesigning the arm to properly mount the Dynamixel XL330-M288-T servos internally instead of externally.
Benefits of the redesign include:
The servos will be mounted using the provided M2 self-tapping screws directly into the printed components.
The battery mounting system also received a significant redesign.
Originally, the battery was positioned underneath the frame because I assumed lowering the center of gravity would improve stability. After learning more about quadcopter dynamics, I realized this configuration introduces a pendulum effect that complicates flight control.
The updated design mounts the battery on top of the frame using a PLA battery cradle secured with four M4 machine screws and a Velcro strap.
This redesign also frees the entire underside of the frame for the aerial manipulator, allowing the arm to rotate through a full 360° without the battery obstructing its workspace.
Over the past couple of days, I completed the aerial manipulator — the robot arm — for the drone. The current design assumes the use of DYNAMIXEL XL430 and XL330 servos, though the final servo mounting is not fully finalized in CAD yet.
The arm uses DYNAMIXEL smart servos because they provide positional feedback and include many features that may be useful later.
The current manipulator is a 4-DOF robotic arm with a gripper:
The arm is intended to be fully 3D printed, allowing for fast iteration and easier replacement of parts if the design changes.
The bulk of the time was spent on the gripper, partly because I designed two different models:
The linkage gripper was designed with compactness in mind. It used a gear-driven linkage system and was intended to use TPU fingers to grip rigid payloads.
However, maintaining printing tolerances and designing around the linkage geometry made the CAD extremely messy. The mechanism had too many small pivot points, tolerance-sensitive parts, and potential failure points. Because of that, I could not justify printing and prototyping this version.
The main focus of the project is not the gripper itself. The focus is on testing how the drone handles disturbances induced by arm movement and held payloads. Because of this, I need full confidence that the gripper will work reliably without spending too much project time reprinting and redesigning it.
Following the Instructables guide, I designed a simpler parallel gripper using a similar bearing, rod, and rack-and-pinion layout.
This gripper uses:
The CAD design was much simpler, and I am more confident that this version will produce reliable performance. The parallel gripper should be easier to print, easier to assemble, and easier to debug than the linkage gripper.
Today, I completed the body frame of the drone with the addition of a Pi Camera Module 2 mount; I also worked on improving the battery holder design, this time ensuring it can be added and removed without extreme disassembly.
Continued work on BOM (found out the project is extremely expensive; will look for ways to cut down cost). Mainly worked on designing the “Servo Pod” part – aimed to be 3D printed – which holds the servo in parallel with the tilting pod. Later, I intend implement a pull rod system to facilitate the tilting motion. The servo pod is inspired by one designs featured in a research paper I read, exhibiting an almost shaft-collar like clamping design, intending to clamp around the CF tubes that are the arms. Tomorrow, I plan to start the manipulator V1 subsystem, while implementing the push rods in CAD.
Added more research papers (will review next time), worked on v1 of electronics diagram, started BOM.
Battery Holder v1 (not final, just something that fits the battery)