Developer

TrIMUpter - GPS Position hold test with ArduIMU + GPS EM406 on Vimeo.

Hello, I have successfully tested the GPS position hold with my TrIMUpter (a VTOL tricopter).

The full stabilisation process is simply done with:
- an ArduIMU+ V2 flat,
- a triple axis magnetometer (HMC5843),
- a GPS EM406,
so this is a very cheap setup.

Below a photo of the setup used:

The TrIMUpter is stabilised by the firmware TriStab v2.1

Some features of the firmware v2.1:

- Full stabilisation process required for a multicopter,
- GPS position hold, tested with the GPS EM406, and compatible with Ublox, NMEA, and Mediatek MTK ,
- a true Heading Lock for the yaw with 2 modes: inertial heading lock or magnetic heading lock,
- self-calibration of the IMU sensors,
- self-test at the startup for valid datas from the HMC5843 triple axis magnetometer,
- the switch from the "stabilisation mode" to "the GPS position hold" is done with switch linked to the ch5,
- the Roll/Pitch PID gains can be easily tuned via the transmitter knob linked to the ch6,
- the main servo mixer is placed in one function "call_servomix()" and can be easily modified for multicopters
and also helicopters...

The firmware TriStab v2.1 can be downloaded here.

Have fun and happy dev,
Jean-Louis

E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones

Comments

  • Jean,
    Thanks a lot for all the details. I am seriously thinking of making one but I would need a ppm Rx. I will have to look for one. Frames are no problem. I have a friend who has a mechanical shop , will do it for me.. How about a folding frame with centre hub ?

    Regards
    SID
  • Developer
    Hello, you will find below my radio setup of my Graupner Mx16s which works well with the TrIMUpter v21:

    Stick mode: 2,
    Modulation: PPM,
    Mode: Fixed-Wing
    Tail type: normal,
    AL/Flaps: 1 Aileron
    Receiver Output: S2->Output 1, S3->Output 2, S1->Output 3, S4->Output 4, S5->Output 5
    Servos setting:
    S1 => 0% 125% 125%,
    S2 <= 0% 100% 100%,
    S3 <= 0% 100% 100%,
    S4 <= 0% 100% 100%,
    S5 => 0% 100% 100%
    Controls setting: E5 (Sw2) +100% +100%
    Dual Rate/Expo: AL 100% 0%, PR 100% 0%, DI 100% 0%



    Happy dev with the ArduIMU and Enjoy your flights with the TrIMUpter,
    Regards, Jean-Louis
  • Fantastic, you are too strong Jean-Louis, at this speed in 1 week it TrIMUpter to make a navigation in all autonomy with return to the foot of sound maitre!!!!
    Cordially
    DODY
  • In further to my previous post, a little bit of research seems to indicate that the yaw servo is there to cancel out the effects of asynchronous thrust, which varies at different engine speeds. That makes sense - sorry for the silly question. Very interesting build - well done!
  • Hi,

    Please excuse my ignorance of this topic, but why is the yaw sensor needed? Does having three degrees of control not give you three degrees of freedom for rotation? Is it present to make control easier (rather than having to undertake potentially complicated calculations), or is there some aspect of tricopters that requires additional degrees of control freedom?
  • Developer
    Here an interesting pressure sensor for altitude hold which speak I2C and which can be connected in on the I2C bus of the ArduIMU (no additional I/O consumption...). This is the Bosch MEMS pressure sensor BMP085
    More infos at: http://www.bosch-sensortec.com/content/language1/html/3477.htm
    Regards, Jean-Louis

    BST_start_BMP085_ts_rdax_80.jpg

  • Developer
    Below a photo of the two sensors that I have planned to test for the Altitude Hold in the TriStab firmware.

  • Developer
    Hello, here an interesting ultrasonic sensor which works well with I2C bus (no more I/O required on the ArduIMU). This is the SRF08 ultrasonic range finder which is able to do an altitude hold up to 6 meters. You will find a Arduino sample program here
    I shall soon add this device to the TriStab firmware for a low altitude hold. For a high altitude hold, I think that the GPS is sufficient...
    Regards, Jean-Louis
  • Developer
    I wonder if anyone has yet tried High Bandwidth Dead Reckoning (HBDR) for arducopters, as used in the UAV Devboard with MatrixPilot ? This should give you position updates 40 times / second using the accelerometer information. The HBDR updates itself from the GPS, taking account of some of the GPS delay.

    A Ublox running at 4 times / second, and not using HBDR, is going to have something like a 1.5 second delay in providing a GPS position. It provides 4 positions per second, but every position has a delay on reality of around 1.5 second. Some people believe the ublox delay is variable, and can stretch to being 3 seconds depending on the dynamics of movement.
  • Developer
    Hello Jack, yes I agree with you about the lag of the EM406, the best way is to use a Ublox or a MTK GPS. You see the lag in the video, to TrIMUpter position hold is not really accurate but the purpose of the test is to test the PID response... My great challenge here in the development was to put all the stabilisation and the GPS code in the ArduIMU memory... This is done now and this demonstrates fully that is is now possible to use only this board as a starting point for VTOL multicopters UAV dev...
    Regards, Jean-Louis
This reply was deleted.