Any X8 / octo-quad's running navio+ out there?

I have an X8 w/ 370kv motors, 15in props, that I am currently running on an original pixhawk fc. I have encountered a common problem, this temporary low pressure bubble that is created during forward and horizontal movement. It makes the baro think its gaining altitude so it compensates by dropping altitude. This can be quite dramatic with a larger X8 as in my case.

I am wondering if there is anyone out there with an X8 that could tell me what they have experienced with the navio. Your insight would be greatly appreciated.

If some positive insight is gained I will just install a navio on the X8 and skip this tedious jerry rigging of the pixhawk case that seems to produce good results…some times…maybe :unamused:

details of the problem and possible fix here:

https://groups.google.com/forum/#!topic/drones-discuss/TsuDlbWn_qc

Loss of Altitude after horizontal run in Alt Stabilized modes. - Blogs - diydrones

1 Like

We are in the process of setting up our second S1000+ with the Navio+. The other S1000+ is setup with the Pixhawk, but we have not experienced the low pressure bubble issue.

I’ll report back here once we have done some test flights with the Navio+.


5 Likes

Thanks for the response. I think you will be safe, it seems much more common with the x8 configuration, flat 8 or hex does not seem to be as problematic when it comes to this issue.

What are you using those for?

Hi, in fact I’m setting up an 15’’ X8 configuration with NAVIO+. In the next week I’ll have my first test flights.

I’ll share my experience then.

Regards,
Pedro

@Pedro_Alves1 please do! I am running into a brick wall on this with the pixhawk. I am pinning my hopes on the navio to save this build.

i saw this (below), and was thinking it might be possible to use an external baro. It seems possible, but i don’t have the expertise to get it working. trying to sort out who might be able to help me out…

@aquila
Using external MS5611 with Navio should be easy:

  1. Set its address to 0x76 using solder pad \ jumper on the breakout board (connect CSB pin to Vcc), so it doesn’t conflict with the onboard MS5611.

  2. Connect it to the I2C port on Navio (keep the wires as short as possible).

  3. Dowload APM code from GitHub - ArduPilot/ardupilot: ArduPlane, ArduCopter, ArduRover, ArduSub source

  4. Open libraries/AP_HAL/AP_HAL_Boards.h

  5. Change MS5611 address in the code by changing HAL_BARO_MS5611_I2C_ADDR in NAVIO board subtype section from:

    #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO
    #define HAL_BOARD_LOG_DIRECTORY “/var/APM/logs”
    #define HAL_BOARD_TERRAIN_DIRECTORY “/var/APM/terrain”
    #define HAL_INS_DEFAULT HAL_INS_MPU9250
    #define HAL_BARO_DEFAULT HAL_BARO_MS5611
    #define HAL_BARO_MS5611_I2C_BUS 0
    #define HAL_BARO_MS5611_I2C_ADDR 0x77

To:

 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO
#define HAL_BOARD_LOG_DIRECTORY "/var/APM/logs"
#define HAL_BOARD_TERRAIN_DIRECTORY "/var/APM/terrain"
#define HAL_INS_DEFAULT HAL_INS_MPU9250
#define HAL_BARO_DEFAULT HAL_BARO_MS5611
#define HAL_BARO_MS5611_I2C_BUS 0
#define HAL_BARO_MS5611_I2C_ADDR 0x76
  1. Compile the code and run it, now it should use MS5611 with 0x76 address, not the onboard one with 0x77 address.
2 Likes

@mikhailavkhimenia wow, this is fantastic, thank you very much for the write up, I’m sure I can complete this now with this in hand. Thank you again.

1 Like

@mikhailavkhimenia , if you don’t mind I could use a little clarification on this point:

forgive my ignorance if I am looking at this in the wrong way, this is new territory for me.

Here’s the location of the datasheet: http://www.meas-spec.com/product/pressure/MS5611-01BA03.aspx

Per the datasheet (page 6):
“it is possible to use two sensors on two different addresses on the I2C bus. The pin CSB shall be connected to VDD or GND”

How do I know which one (VDD or GND) to jump to? I don’t see any mention of which address is associated with high or low pull.

I see PS pin needs to pull VDD/high to activate I2C protocol (page 5)

I guess I could try it both ways but I figured you know the answer to this :wink:

1 Like

@aquila

Usually GND means 0, and VDD means 1. So it should be 0x76 with CSB connected to GND.

1 Like

@mikhailavkhimenia , you are the man, thanks for the clarification :relaxed:

1 Like

@mikhailavkhimenia - I am a little confused on this, I was hoping you could assist…

I was attempting to modify “AP_HAL_Boards.h” in the navio fork of ardupilot, but soon realized it’s different then “AP_HAL_Boards.h” in the original ardupilot.

What’s confusing me is why I am need to use the original ardupilot not the navio fork to configure the external baro? Wouldn’t I want to use the navio specific ardupilot?

I’m sure there is a good reason, I just don’t understand…

Regards,
J

P.S. - Besides the code I’m all ready to go! :smile:

update:
I attempted to cross-compile on ubuntu, but I did something wrong :confused:

this was the result:

pi@navio-rpi ~ $ sudo ./ArduCopter.elf   
Raspberry Pi 2 with BCM2709!
Raspberry Pi 2 with BCM2709!


Init APM:Copter V3.4-dev (b9c7cac5)

Free RAM: 4096
FW Ver: 120
----------------------------------------


load_all took 15us
Q���3�Calibrating barometer_RPANIC: AP_Baro::read unsuccessful for more than 500ms in AP_Baro::calibrate [2]

This is what I did:

sudo git clone --depth 1 https://github.com/raspberrypi/tools.git /opt/tools

export PATH=/opt/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:$PATH

git clone https://github.com/diydrones/ardupilot

Then I made the modification for the external baro:

sudo nano libraries/AP_HAL/AP_HAL_Boards.h

I modified

#define HAL_BARO_MS5611_I2C_ADDR 0x77

to

#define HAL_BARO_MS5611_I2C_ADDR 0x76

Then

cd ardupilot/ArduCopter
make navio-hexa

Finally

rsync -avz /tmp/APMrover2.build/APMrover2.elf pi@192.168.1.myip:/home/pi/

I am quite befuzzled, any help would be awesome.

I saw this @ Single Board Computers (SBCs), Computer on Modules, System on Modules
“Supports standard and fast mode of operation (0-400KHz) as well as high speed mode (3.4 MHz).Note: The high speed mode of operation is not l2C 2.1 specification-compliant (requires a current source pull up to be implemented).”

So I changed the baudrate to 400khz, tested, same error, I also lowered to 100khz just to see, same error.

Not sure where to go from here…

With external baro connected, but without APM running can you make:

sudo i2cdetect -y 1

What is the output?

I am only seeing, 77, 70, 48, 40, 50. I thought since I have the address set at 76, that it would also show, but it does not. I definitely have the pinout right. Any ideas on how to trouble shoot the connection?

Are you sure that address pin is set correctly? We got to make it show up in i2cdetect before we move to using it in APM.

Maybe it needs to be pulled to vcc instead of gnd. I will try this next.

Looking at the DS, yes for 0x76 you will need to have CSB at Vcc.

Thank you for the help

@aquila Sorry for misguiding you:) Do you see 0x76 in i2cdetect now?

No worries. I am going to re-solder today. I will let you all know how it goes. Thanks again for the assist, you guys are the best.

That was it :relaxed: detected and apm ran correctly!

This is most exciting, I will report back how it performs.

I just finished my static tube for the original pixhawk, so we will have a nice comparison.

What log parameters do you use for baro and i2C bus?