-
Notifications
You must be signed in to change notification settings - Fork 6
MAV Hardware
Figure 1 Overview
We use the commercially available Holybro X500 (v1) quadrotor frame with a Pixhawk 4 flight controller and a Holybro Telemetry Radio v3 available as a kit e.g. here, as shown in Figure 1. The kit contains almost everyting needed to fly, but there are a few things missing: batteries, an RC receiver and remote, and a computer for autonomous flight.
The frame weighs less than 1 kg and has a maximum payload of around 1 kg making it possible to mount a computer and sensors for fully autonomous flight. Detailed build instructions for the frame and the wiring are available in the PX4 documentation.
In general, if you are new to MAVs, RC systems, or the PX4 ecosystem you can find a lot of essential information on docs.px4.io, e.g. the fairly thorough getting started guide. Another place with lots of useful research oriented information from ASL (Autonomous Systems Lab) can be found here.
If you want to mount a NUC, a 12V power rail, or PC hot-swapping, first read the on-board computing section and the power section before completing the assembly of the frame (otherwise you might need to partially disassemble the frame again).
Autonomous flight requires a computer on-board the MAV which is directly connected to the flight controller. This computer (called offboard computer in the PX4 User Guide) can send a variety of commands to the flight controller and can also receive sensor and state information from the flight controller. A basic introduction to off-board control is available here.
In most situations an Intel NUC provides the computing power needed for autonomous flight (latest generation laptop grade Intel chips with the option of up to 64 GB of RAM). A Jetson device is a viable alternative if a CUDA enabled GPU is necessary and if the slower ARM processor is acceptable for the application.
Any on-board computer needs to communicate with the flight controller over serial. This is easiest with a standard USB to serial device (a few options are listed here, most of them should be plug-and-play). Follow this guide on how to setup the serial communication on the PC and on the flight controller.
We are using a Sertronics USB to TTL/UART/RS232 Converter, but any USB to serial device should work.
We use bare-bone 11th Gen Intel NUC i7/i5 computers (with an Intel Core i7-1165G7 or an Intel Core i5-1145G7 respectively) equipped with an SSD, an add-in wifi card, and typically 32GB of RAM.
You can use an internal USB 2.0 header for the USB-to-serial device to keep the remaining USB ports free for other accessories.
These computers have a relatively large input voltage range and can be directly powered by a 4S Li-Po battery. See power for more details on powering the PC.
We provide STL and CAD files in the resource folder to 3D print mounting brackets for this (and previous) generations of NUCs. To mount the NUC and batteries below the frame we use M3 nylon standoffs threaded directly into the mount (see Figure 2 and Figure 3). More information on the provided 3D models can be found under Resources.
Figure 2 3D printable mounts (red) for an 11th Gen Intel NUC with integrated attachment points for two standard wifi antennas
Figure 3 3D printable mounts (red) for older generations of Intel NUCs and mounting plate for batteries (blue)
Depending on the carrier board for your Jetson you might need to mount a 12V or 5V regulator, or you might be able to directly connect it to the 4S Li-Po. Please carefully check the input voltage range of your board.
We provide STL and CAD files in the resource folder to 3D print mounting brackets for several boards and configurations (including a combined mount for an Intel NUC and a Jetson TX2 on an orbitty carrier board), see Resources.
Figure 4 Close-up view of the MAV showing how the NUC and battery plate are installed. 3D printable STL files are available under Resources.
Although autonomous flight is our goal, a safety pilot needs to be able to take over at any time. This requires an RC receiver (in our case a FrSky XM+) on the drone and a remote (e.g. a Radiomaster TX16S), see Figure 5. Follow this guide in the px4 documentation on how to setup and bind a remote control.
We use standard key mapping and we dedicate one switch on the remote to switch between flight modes (between Stabilized Mode, Position Mode, and Offboard Mode). The different flight modes are explained here.
Figure 5 Remote control and receiver
Li-Po batteries are dangerous when handled, used, or stored incorrectly. Educate yourself in advance and be cautious.
The recommended battery for the X500 frame is a 5000 mAh 4S Li-Po, although we have had good experiences with up to 6300 mAh 4S Li-Po batteries. Such a battery is able to power the drone and the PC for approximately 15 minutes (flying controlled, slow and smooth trajectories).
We recommend to always use a Li-Po battery voltage monitor when a battery is in use as seen in Figure 1. The monitor checks the battery voltage and sounds an alarm if the voltage starts to drop below a safe level (the alarm is loud enough that you will hear it even during flights). This prevents the battery from entering a deep discharge state which essentially renders a battery useless.
A short battery life is pretty inconvenient if you connect your PC directly to the main battery since you would need to restart everything on the on-board PC after each experiment. Additionally, everything that is powered directly by the main flight battery needs to be pretty resistant to voltage spikes. Modern ESCs can (and will) actively brake the rotors. The energy freed by active braking will flow back into the main battery but large voltage spikes may occur.
In order to keep the PC on while replacing the main batteries we need a power hot-swap controller. Such a controller can safely switch between multiple power sources (selecting the input with the highest voltage while preventing current flowing from the higher voltage source to the lower voltage source). A simple setup with two Schottky diodes will do the trick, but is relatively inefficient due to the voltage drop over the diode leading to unnecessary power loss and hot components. However, we can create an ideal diode with a small microcontroller (e.g. LTC4412) and a power MOSFET.
We use two of these ideal diodes for efficient power hot-swapping and provide a schematic (Figure 6) and PCB layout (Figure 7). The hot-swap board has two inputs and a single output: the output is connected to the PC, the first input is connected to the main battery, and the second will be connected to a battery while switching the main battery. Thus, the PC will always be powered while the rest of the flight controller will temporarily lose power when switching.
Figure 6 Schematic of power hot-swap controller
Figure 7a PCB for power hot-swapping with two XT60 inputs.
Note: The PCB with the proposed components cannot be used to power the entire drone! The motors need to be directly connected to the battery, otherwise the reverse current from active breaking will over-volt the system. In our experience, this is likely to kill all connected electronics. Besides, the components cannot handle the large currents necessary to drive the motors. Please follow the wiring diagram shown in Wiring and only connect the PC (or possibly also the 5V/12V rail) to the output of the hot-swap controller. More info about the provided schematic and PCB layout can be found under Resources.
There is also a smaller version of this PCB without the bulky XT60 connectors and with a single status LED only indicating if the output has power.
Figure 7b Smaller PCB for power hot-swapping without connectors.
Disclaimer: no one with power electronics experience / qualifications has ever looked at the presented circuit. It seems to work but we never leave the MAVs plugged in unattended in case it fails and causes a fire.
Hot-swapping requires three batteries (or two batteries and e.g a 12V power supply) as shown in Figure 8.
Figure 8 Hot-swapping using three batteries. Battery 2 could be replaced with e.g. a 12V power supply.
Some sensors will need regulated power, e.g. 12V. We use an off-the-shelf 12V regulator (iFlight Mirco BEC 5V/12V) with either 5V or 12V output. It can handle up to 2A at 12V or 3A at 5V (but does get uncomfortably hot when pushed to this limit). A simple PCB layout for a 12V rail, shown in Figure 9, with Molex Micro-Fit connectors is provided in the resources.
Please note that the iFlight Mirco BEC 5V/12V is not powerful enough to power e.g. a Jetson Nano.
Figure 9 12V distribution board mounted on the MAV
Follow the wiring diagram in Figure 10 when using the hot-swap controller.
Figure 10 Wiring diagram with hot-swap controller
We use a variety of different sensors on the drone: cameras, IMUs, range sensors, visual-inerial sensors, etc. The sensors are usually directly connected to the PC and we get the data via ROS. In the resource folder you can find various 3D-printable files to mount the sensors on the drone frame.
List of sensors that we have used:
Sensor | Type | Link |
---|---|---|
RealSense D455 | Visual-inertial sensor with stereo global shutter IR cameras, a wide-angle global shutter RGB camera, and an IMU. | www.intelrealsense.com/depth-camera-d455/ |
Alphasense Core | Visual-inertial sensor with up to 5 synchronized global shutter mono cameras and an IMU. | github.com/sevensense-robotics/alphasense_core_manual |
Skybotix VI-Sensor | Visual-inertial sensor with stereo synchronized global shutter mono cameras and IMU. | wiki.ros.org/vi_sensor |
ZED 2 | Visual-inertial sensor with stereo synchronized rolling shutter color cameras, IMU, barometer, and magnometer. | stereolabs.com/zed-2/ |
Structure Core | Visual-inertial sensor with stereo synchronized global shutter infrared cameras and IMU. With laser projector for better indoor depth data. Additional RGB camera or large FoV monochrome camera. | structure.io/structure-core |
Venus RGB | Global shutter color camera with external trigger input. | machinevisionkamera.de/USB3.0-Boardlevelkamera-OEM-1.6MP-Farb-Sony-IMX296-VEN-161-61U3C |
Bluefox2 | Global shutter color cameras. | github.com/KumarRobotics/bluefox2 |
In the resource folder of this repository we provide 3D models meant for 3D printing e.g. on a HP Jet Fusion printer in nylon. The parts are not designed for FDM printing, but you might still be able to print the parts successfully with supports. If you do not have access to a 3D printer you can easily order these parts from an online 3D printing service.
Alternatively, we provide links to the original models. You can view and download the assemblies from your browser in any format or directly import them to your Fusion 360 workspace. This allows you to modify all parts in your own CAD software if necessary.
We list all parts below together with any additional material that is required.
Figure 11 View Model Online
We mount the Intel NUCs below the frame and replace the standard battery board with our own.
The NUC mounts (red) can be fastened to the carbon fiber rails with M2.5 machine screws.
The replacement battery plate (green) is fastened with M3 nylon stand-offs (20 mm) and M3 nylon screws.
You need an M2.5 and M3 tap to cut threads directly into the 3D printed nylon parts.
Standard wifi antennas can be mounted on the back NUC mount.
Figure 12 View Model Online
The newer generation of Intel NUCs feature a larger heatsink, but the hole spacing is the same (we can therefore use the same battery plate).
Use M2 set screws to fix the mounts (red) to the carbon fiber rails.
Standard wifi antennas can be mounted on the back NUC mount.
The M3 nylon stand-offs are 12 mm long.
Figure 13 View Model Online
The top battery plate can be used for a battery, a NUC, or e.g. a Jetson Nano.
The custom stand-offs (blue) snap into the top plate of the MAV's frame, the plate (red) is attached to the stand-offs with ten M2.5x5 countersunk screws.
The remaining holes can be tapped for M3 and M2.5 stand-offs. The spacing is setup for a NUC or the Jetson Nano development board.
Figure 14 View Model Online
Combined mount (red) for a Jetson TX2 on an Orbitty carrier with M3 nylon stand-offs (blue).
Use M2 set screws to fix the mounts to the carbon fiber rails.
We use a custom 3D printed stereo cage for the alphasense core. This allows us to only replace the cage "lid" for different mounting configurations.
Figure 15 View Model Online
Horizontal mount for alphasense core. Stereo cage in gray, horizontal lid in red.
Use an M2.5 tap to cut threads into the cage and the lid.
Figure 16 View Model Online
Tilted mount for alphasense core. Stereo cage in gray, lid with a 20° tilt in red.
Figure 17 View Model Online
Downlooking stereo + RGB cage for the alphasense core and a bluefox camera. This cage is compatible with both lids.
Figure 18 View Model Online
Horizontal mount (blue) for the VI sensor.
Use an M2 and M2.5 taps to cut threads.
Figure 19 View Model Online
Mount (blue) with a 20° tilt for the VI sensor.
Use an M2 and M2.5 taps to cut threads.
Figure 20 View Model Online
Mount (red) for a ZED 2 in a horizontal configuration.
This is directly fixed to the carbon fiber rails with two M2.5x6 mm machine screws.
Use M3x12 mm machine screws to fix the ZED 2 to the mount.
Figure 21 View Model Online
Mount (red) for a ZED 2 in a downlooking configuration.
This is directly fixed to the carbon fiber rails with two M2.5x6 mm machine screws.
Use M3x12 mm machine screws to fix the ZED 2 to the mount.
Figure 22 View Model Online
Mount (red) for a bluefox 2 camera in a downlooking configuration.
This is directly fixed to the carbon fiber rails with two M2.5x6 mm machine screws.
Figure 23 View Model Online
Mount (red) for a Venus camera in a downlooking configuration.
This is directly fixed to the carbon fiber rails with two M2.5x6 mm machine screws.
Use M2x5 mm machine screws to fix the camera to the mount.
Figure 24 View Model Online
Mount (red) for a range sensor in a downlooking configuration.
This is directly fixed to the carbon fiber rails with two M2 set screws.
Use M2.5x6 mm machine screws to fix the range sensor to the mount.
Figure 25 View Model Online
Mount (red) for a RealSense D455 depth sensor.
This is directly clamped to the carbon fiber rails with two M2.5x6 mm machine screws.
Use M4x10 mm machine screws to fix the sensor to the mount.
We provide schematics and gerber files for the battery hot-swap board. Schematics are available as a PDF and as a .json file compatible with the easyEDA design software (online and free to use). You can use the gerber files to order these PCBs online, but you need to source the parts to assemble and solder the boards yourself.
You can also find the project on Open Source Hardware Lab.
Power Hot Swap | Value | Package |
---|---|---|
R1, R3 | 470 kΩ | 0805 |
R2, R4 | 620 Ω | 0805 |
C1 | 220uF | SMD,10x10.2mm |
Q1, Q2 | FDD4685 | TO-252 |
U1, U2 | LTC4412 | TSOT-23-6 |
LED1, LED2 | 17-21/GHC-YR1S2/3T | 0805 |
XT60 | XT60PW-M | THT |
Power Hot Swap rev0.4B | Value | Package |
---|---|---|
CLR | 4.7 kΩ | 0805 |
C1 | 220uF | SMD,10x10.2mm |
Q1, Q2 | FDD4685 | TO-252 |
U1, U2 | LTC4412 | TSOT-23-6 |
LED | 17-21/GHC- YR1S2/3T | 0805 |
To reiterate: no one with power electronics experience / qualifications has ever looked at the presented circuit. It seems to work but we never leave the MAVs plugged in unattended in case it fails and causes a fire.