In preparation for the Japan Innovation Challenge we’ve been working on implementing slung payload oscillation suppression. While this feature is still a work-in-progress (see pull-request here) we hope to include it in ArduPilot Copter-4.6.0 which should start beta testing later this month.
The way the feature works is:
- The payload has a Here4 GPS and ESP32 wifi telemetry module (this one) which send the payload’s position and velocity to the delivery vehicle at 10hz. This telemetry rate is enforced using this message interval lua script
- The ArduPilot flight code has been enhanced so that Lua scripts can add a position or velocity offset (in real-time) to a mission. So instead of the vehicle flying exactly along the programmed flight path, the Lua script can slightly modify its position or speed.
- For this application the copter-slung-payload Lua script has been created that adds a velocity that moves the delivery vehicle in the opposite direction to the payload’s current acceleration. This movement causes the payload to lose energy and stop oscillating (see the Physics Classroom for more details on pendulums). The script also calculates the position offset between the vehicle and payload and moves the vehicle so that the payload lands as close as possible to the waypoint target location.
- For now the script is only active while the vehicle is in Auto mode executing NAV_SCRIPT_TIME and PAYLOAD_PLACE commands but in SITL testing the same algorithm works while executing other commands and even in other flight modes
As you can see at the end of the video, this results in the payload landing just 1.1m from the target.
To provide some more background, in previous years my team (TAP-J) has always used the Daiwa Winch which has the advantage of keeping the payload close to the delivery vehicle as it travels to the target location (which avoids any payload oscillation) but the winch itself adds weight (about 600g), takes time to deploy (max line release speed is about 1m/s) and we’ve also faced some issues with the winch becoming stuck due to the bouncing of the payload. Here is a video from a successful drop using the daiwa winch in 2019
So this year we wanted to try a simpler and hopefully more reliable approach using a slung payload. The payload must be slung about 40m below the delivery vehicle in order to give at least 10m of clearance above the trees (which are 20m ~ 30m tall). The payload place mission command is used to reduce the delivery vehicle’s altitude until the payload touches down and then automatically trigger the release of the payload which is attached using a servo gripper (the servo is mounted on the bottom of the delivery vehicle). This is the exact servo gripper that we are using
We debated whether to put the servo gripper on the payload or the delivery vehicle. Either was possible but we opted to put it on the delivery vehicle because it is simpler and the competition rules allow this.
To keep the line from becoming tangled or getting caught in the delivery vehicle propellers we use a hand fishing reel with some lead weights attached at regular intervals. Next time we will mount the hand reel on a wider flat piece of wood and place it closer to the vehicle.
Special thanks to:
- @Leonardthall (ArduPilot’s control lead and founder of Freespace Operations) who assisted greatly during the development of this feature
- my TAP-J teammates especially Kawamura-san (from RtoS corporation) and Komiya-san (from Qu-Kai)
- EAMS robotics for supporting the software development
- AttracLab for the supplying the delivery vehicle!
EDIT: I’ve created a wiki page here with the details now that this is included in Copter-4.6