The Groundhog was at least twice as big and probably three time as heavy as many other competitors. Why? Because it is built for endurance (flight time 35mins+) and also because it's what I have as my development platform. It normally flies outdoors of course...
Ah, so that means no gps and flying less than 30cm from the ground also rules out an optical flow camera (they can't focus that close). So how to control this thing?
The answer (as you will see) is using the GUIDED_NOGPS mode now available in Arducopter, but I suspect, little used. This is because almost the only control available is to set the pose (pitch, roll, yaw) using quaternions. Not velocity, not even altitude. It's going to be a little like controlling a 3Kg ball bearing sat on top of a football. Fun. But we are getting ahead of ourselves. Back to hardware...
- Mass - 3.0 Kg
- Diameter - 0.98 m (with guards and reduced props to fit competition regs).
- Airframe - HobbyKing Tarot 680 Pro
- Motors - Multistar Elite 3508-268KV High Voltage Endurance
- Props - 10 x 4.5 plastic (normally runs 12 x 5 carbon fibre)
- ESC - Afro HV 20A MultiRotor ESC High Voltage 3~8s
- Batteries - 2 x Multistar High Capacity 4S 8000mAh Multi-Rotor Lipo Pack (in series)
- Flight Controller - Pixhawk running ArduCopter v3.4
- Companion computer - Raspberry Pi 3
- Camera - PiCam 2 with 9g servo gimbal for roll and pitch.
- Receiver - FrSky 8BR
- Ancilliary power - 2 x Turnigy HV SBEC 5A Switch Regulator (8-42V input)
- Maxbotix sonar (I2C)
- Sparkfun VL6180 TOF Range Finder (I2C)
- Prop guards and superstructure - 3d printed and 4mm pultruded carbon fibre tubing.
The hexacopter Tarot 680 Pro is my general purpose airframe for just about everything. Here the props are turned downward facing to get them closer to the ground to increase ground effect. Smaller 10 inch props were fitted to bring the overall size down to less that 1m, as required by the competition. This meant the motors were running faster than usual, reducing efficiency. Hey ho.
The two 4s batteries are configured to run in series, so 8s is provided to the high efficiency motors which are designed for endurance. The power module for the Pixhawk was taken from just one battery - making sure that they had a common earth!
Power for the RPi and servo gimbal is provided by 2 x SBECs, taking power from across both batteries. The feed for the SBECs is taken from across the supply of one of the speed controllers.
- Don't involve the Pixhawk power rail in any way to power the RPi or servos. It may brown out.
- Use one SBEC for the servos.
- Use a separate SBEC for the RPi.
Flight control is provided by the Hobbyking version of a standard Pixhawk. It is attached upside-down to the underside of the top plate (underneath the RPi). Don't forget to reconfigure Arducopter in Mission Planner to tell it the Pixhawk is upside-down (mode 12).
Raspberry Pi 3
In earlier blogs I had overclocked the RPi 2 to beef up performance. This is not required for the RPi 3, which is a big improvement and is used out of the box with the Pixel operating system. However, configuring the serial port (for connection to the Pixhawk) correctly took ages, as it is also used by the Bluetooth interface. Pay close attention in the forthcoming post to the change in the config file required and then the correct syntax to open the serial port and it will be easy. I'll put this in the post on Control, but it took weeks and weeks to eventually sort out!
The RPi is connected to the Pixhawk using the serial cable in precisely the same way as detailed in one of my previous posts here.
A standard PiCam 2 is controlled for pitch and roll using a gimbal controlled from the Pixhawk. This gives a steady and level view of the track to reduce the image processing burden. It worked beautifully, and incidentally is exactly the same strategy also used by the 2nd place team (so I know it's a good idea!). Also, we want a forward looking camera so we can see further and go faster - not just looking down.
For low level flight, a VL6180 time of flight range finder sensor more usually used for gesture recognition is deployed and strapped to one of the front arms. This can give altitude to mm resolution between 10 and 20 cms. This is connected to the I2C interface on the RPi as there is no provision for this in ArduCopter for the Pixhawk.
That's it for now(I'll discuss the Maxbotix later).
Coming next: Image recognition using Python and OpenCV.