ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login

    QGC Starts up showing a heading of north no mater the direction of compass

    VOXL 2
    2
    29
    1330
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Eric KatzfeyE
      Eric Katzfey ModalAI Team @Chase Riley
      last edited by

      @Chase-Riley What is the orientation of the Holybro unit with respect to your drone frame? Does it have the arrow pointing forward? (e.g. same orientation as on our Sentinel drone?). PX4 is probably getting confused because you are only changing the mag orientation and not the drone orientation. So the IMU is saying that nothing is moving and your compass says you are yawing. That inconsistency will mess things up.

      Chase RileyC 1 Reply Last reply Reply Quote 0
      • Chase RileyC
        Chase Riley @Eric Katzfey
        last edited by

        @Eric-Katzfey currently the Holybro is pointing directly forward and center of the air frame. The rotation value I messed with during the bench testing I was doing while trying to get a change in behavior. The VOXL2 is set to Yall 180 because it is pointed directly out the back of the air vehicle. We had to mount this way due to mechanical restraints.

        Eric KatzfeyE 1 Reply Last reply Reply Quote 0
        • Eric KatzfeyE
          Eric Katzfey ModalAI Team @Chase Riley
          last edited by

          @Chase-Riley I think you'll need to specify the YAW 180 rotation for the IMU then on the driver start line. e.g. qshell icm42688p start -s -R 4

          Chase RileyC 1 Reply Last reply Reply Quote 0
          • Chase RileyC
            Chase Riley @Eric Katzfey
            last edited by

            @Eric-Katzfey Where would I locate the driver to make the change? Right now I just have it changed in the px4 params. I am assuming that the Mag should be set at "No Rotation"?

            Eric KatzfeyE 1 Reply Last reply Reply Quote 0
            • Eric KatzfeyE
              Eric Katzfey ModalAI Team @Chase Riley
              last edited by

              @Chase-Riley It's the startup file in /usr/bin/voxl-px4-start. That is the magic file that starts all of the px4 drivers and modules. Keep the mag rotation as it is. That refers to the orientation of the mag within the Holybro unit.

              Chase RileyC 1 Reply Last reply Reply Quote 0
              • Chase RileyC
                Chase Riley @Eric Katzfey
                last edited by

                @Eric-Katzfey I was able to change the argument to -R 4 in the if and else statements in the driver start line. I changed the if first and saw no change after a restart or voxl-px4 and a reboot. I went back in a changed the else statement and got the following results. I still am seeing the same behavior with the compass though. My heading always starts facing north.

                Starting IMU driver with no rotation
                INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
                INFO  [qshell] Send cmd: 'icm42688p start -s -R 4'
                INFO  [muorb] SLPI: qshell gotten: icm42688p start -s -R 4
                INFO  [muorb] SLPI:   arg0 = 'icm42688p'
                
                INFO  [muorb] SLPI:   arg1 = 'start'
                
                INFO  [muorb] SLPI:   arg2 = '-s'
                
                INFO  [muorb] SLPI:   arg3 = '-R'
                
                INFO  [muorb] SLPI:   arg4 = '4'
                
                INFO  [muorb] SLPI: *** SPI Device ID 0x26000a 2490378
                INFO  [uORB] Advertising remote topic sensor_accel
                INFO  [uORB] Advertising remote topic sensor_gyro
                INFO  [muorb] SLPI: ICM42688P::probe successful!
                INFO  [muorb] SLPI: on SPI bus 1
                INFO  [muorb] SLPI: icm42688p #0 on SPI bus 1
                INFO  [muorb] SLPI:  rotation 4
                INFO  [muorb] SLPI: >>> ICM42688P this: 3176ec10
                INFO  [muorb] SLPI: 
                
                INFO  [muorb] SLPI: Ok executing command: icm42688p start -s -R 4
                INFO  [uORB] Advertising remote topic qshell_retval
                INFO  [muorb] SLPI: >>> ICM42688P this: 3176ec10
                INFO  [qshell] qshell return value timestamp: 473947504, local time: 473954013
                INFO  [muorb] SLPI: >>> ICM42688P this: 3176ec10
                INFO  [muorb] SLPI: Register interrupt b21d3164 e620609c 3176ec10
                INFO  [uORB] Advertising remote topic sensor_gyro_fifo
                INFO  [uORB] Advertising remote topic sensor_accel_fifo
                INFO  [uORB] Advertising remote topic imu_server
                INFO  [qshell] Send cmd: 'icp101xx start -I -b 5'
                INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
                INFO  [muorb] SLPI: qshell gotten: icp101xx start -I -b 5
                INFO  [muorb] SLPI:   arg0 = 'icp101xx'
                
                INFO  [muorb] SLPI:   arg1 = 'start'
                
                INFO  [muorb] SLPI:   arg2 = '-I'
                
                INFO  [muorb] SLPI:   arg3 = '-b'
                
                INFO  [muorb] SLPI:   arg4 = '5'
                
                INFO  [muorb] SLPI: *** I2C Device ID 0xb76329 12018473
                INFO  [muorb] SLPI: icp101xx #0 on I2C bus 5
                INFO  [muorb] SLPI:  address 0x63
                INFO  [muorb] SLPI: 
                
                INFO  [muorb] SLPI: Ok executing command: icp101xx start -I -b 5
                INFO  [qshell] qshell return value timestamp: 473990855, local time: 473992752
                Starting ist8310 magnetometer
                INFO  [qshell] Send cmd: 'ist8310 start -R 10 -X -b 1'
                INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
                INFO  [muorb] SLPI: qshell gotten: ist8310 start -R 10 -X -b 1
                INFO  [muorb] SLPI:   arg0 = 'ist8310'
                
                INFO  [muorb] SLPI:   arg1 = 'start'
                
                INFO  [muorb] SLPI:   arg2 = '-R'
                
                INFO  [muorb] SLPI:   arg3 = '10'
                
                INFO  [muorb] SLPI:   arg4 = '-X'
                
                INFO  [muorb] SLPI:   arg5 = '-b'
                
                INFO  [muorb] SLPI:   arg6 = '1'
                
                INFO  [muorb] SLPI: *** I2C Device ID 0x60e09 396809
                INFO  [muorb] SLPI: ist8310 #0 on I2C bus 1
                INFO  [muorb] SLPI:  (external)
                INFO  [muorb] SLPI:  address 0xE
                INFO  [muorb] SLPI:  rotation 10
                INFO  [muorb] SLPI: 
                
                INFO  [muorb] SLPI: Ok executing command: ist8310 start -R 10 -X -b 1
                INFO  [qshell] qshell return value timestamp: 474026327, local time: 474027995
                INFO  [qshell] Send cmd: 'gps start'
                INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
                INFO  [muorb] SLPI: qshell gotten: gps start
                INFO  [muorb] SLPI:   arg0 = 'gps'
                
                INFO  [muorb] SLPI:   arg1 = 'start'
                
                INFO  [muorb] SLPI: Creating pthread gps
                
                INFO  [muorb] SLPI: Successfully created px4 task PX4_gps with tid 2097648
                INFO  [muorb] SLPI: Ok executing command: gps start
                INFO  [qshell] qshell return value timestamp: 474050364, local time: 474051234
                Starting Holybro LED driver
                INFO  [muorb] SLPI: >>> ICM42688P this: 3176ec10
                INFO  [qshell] Send cmd: 'rgbled_ncp5623c start -X -b 1 -f 400 -a 56'
                INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
                INFO  [muorb] SLPI: qshell gotten: rgbled_ncp5623c start -X -b 1 -f 400 -a 56
                INFO  [muorb] SLPI:   arg0 = 'rgbled_ncp5623c'
                
                INFO  [muorb] SLPI:   arg1 = 'start'
                
                INFO  [muorb] SLPI:   arg2 = '-X'
                
                INFO  [muorb] SLPI:   arg3 = '-b'
                
                INFO  [muorb] SLPI:   arg4 = '1'
                
                INFO  [muorb] SLPI:   arg5 = '-f'
                
                INFO  [muorb] SLPI:   arg6 = '400'
                
                INFO  [muorb] SLPI:   arg7 = '-a'
                
                INFO  [muorb] SLPI:   arg8 = '56'
                
                INFO  [muorb] SLPI: *** I2C Device ID 0x7b3809 8075273
                INFO  [muorb] SLPI: rgbled_ncp5623c #0 on I2C bus 1
                INFO  [muorb] SLPI:  (external)
                INFO  [muorb] SLPI:  address 0x38
                INFO  [muorb] SLPI: 
                
                Eric KatzfeyE 2 Replies Last reply Reply Quote 0
                • Eric KatzfeyE
                  Eric Katzfey ModalAI Team @Chase Riley
                  last edited by

                  @Chase-Riley Hmmm. Do you also have VIO running?

                  1 Reply Last reply Reply Quote 0
                  • Eric KatzfeyE
                    Eric Katzfey ModalAI Team @Chase Riley
                    last edited by

                    @Chase-Riley What are the parameter values for SYS_HAS_MAG and EKF2_MAG_TYPE?

                    Chase RileyC 1 Reply Last reply Reply Quote 0
                    • Chase RileyC
                      Chase Riley @Eric Katzfey
                      last edited by

                      @Eric-Katzfey I do not have VIO running and I have SYS_HAS_MAG = 1 and EKF2_MAG_TYPE = 0

                      Eric KatzfeyE 3 Replies Last reply Reply Quote 0
                      • Eric KatzfeyE
                        Eric Katzfey ModalAI Team @Chase Riley
                        last edited by

                        @Chase-Riley And on QGC does the attitude display move around normally as you would expect as you pick up the drone and move it around? Just the heading stays stuck at North?

                        Chase RileyC 1 Reply Last reply Reply Quote 0
                        • Eric KatzfeyE
                          Eric Katzfey ModalAI Team @Chase Riley
                          last edited by

                          @Chase-Riley And when you say that you cannot go into position mode do you have a solid GPS lock?

                          1 Reply Last reply Reply Quote 0
                          • Eric KatzfeyE
                            Eric Katzfey ModalAI Team @Chase Riley
                            last edited by

                            @Chase-Riley In QGC can you open up mavlink inspector and take a look at the global position int message? How often is it coming in? Do all of the fields look like they are updating normally? Is hdg stuck at 0?

                            Chase RileyC 2 Replies Last reply Reply Quote 0
                            • Chase RileyC
                              Chase Riley @Eric Katzfey
                              last edited by Chase Riley

                              @Eric-Katzfey yes QGC artificial horizon and other telem reacts as it should. If I power up the air vehicle pointing south, east, or west it show that the heading is north. If I yaw the air vehicle the heading does change but it is incorrect because the system always starts at north.

                              I went a step further in testing and removed the GPS/Mag from the air vehicle. This allowed me to yaw the GPS/Mag independently from the air frame. When doing this QGC shows no change in heading. If I yaw the air vehicle while the GPS/Mag stays still the heading moves in QGC.

                              This makes it seem that QGC is getting heading info from the VOXL2 maybe IMU instead of the external GPS/Mag.

                              I have full GPS lock when trying to switch to position mode which makes me think that this heading issue could be why I can't switch into position.

                              I also have 5 total systems that are configured the same way. All 5 have this same heading issue.

                              Eric KatzfeyE 2 Replies Last reply Reply Quote 0
                              • Chase RileyC
                                Chase Riley @Eric Katzfey
                                last edited by

                                @Eric-Katzfey I was able to look at GPS_RAW_INT in the mavlink inspector. Value seem to be updating at about 1Hz, however you are correct that HDG_acc us stuck at 0 no matter the heading of the Voxl or GPS/Mag.

                                1 Reply Last reply Reply Quote 0
                                • Chase RileyC
                                  Chase Riley @Eric Katzfey
                                  last edited by

                                  @Eric-Katzfey I was also able to flash 1 of my 5 systems to SDK 1.1.2 just to check to see if I have the same issue and it seems I do. I have included an error I found while running voxl-px4 on my SDK 1.1.2.

                                  INFO  [muorb] SLPI: >>> ICM42688P this: 3176eba0
                                  INFO  [muorb] SLPI: Ok executing command: icm42688p start -s
                                  INFO  [uORB] Advertising remote topic qshell_retval
                                  INFO  [muorb] SLPI: >>> ICM42688P this: 3176eba0
                                  INFO  [qshell] qshell return value timestamp: 46007098, local time: 46011498
                                  INFO  [muorb] SLPI: >>> ICM42688P this: 3176eba0
                                  INFO  [muorb] SLPI: Register interrupt b21d31a4 e6201b3c 3176eba0
                                  INFO  [uORB] Advertising remote topic sensor_gyro_fifo
                                  INFO  [uORB] Advertising remote topic sensor_accel_fifo
                                  INFO  [uORB] Advertising remote topic imu_server
                                  INFO  [qshell] Send cmd: 'icp101xx start -I -b 5'
                                  INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
                                  INFO  [muorb] SLPI: qshell gotten: icp101xx start -I -b 5
                                  INFO  [muorb] SLPI:   arg0 = 'icp101xx'
                                  
                                  INFO  [muorb] SLPI:   arg1 = 'start'
                                  
                                  INFO  [muorb] SLPI:   arg2 = '-I'
                                  
                                  INFO  [muorb] SLPI:   arg3 = '-b'
                                  
                                  INFO  [muorb] SLPI:   arg4 = '5'
                                  
                                  INFO  [muorb] SLPI: *** I2C Device ID 0xb76329 12018473
                                  INFO  [muorb] SLPI: icp101xx #0 on I2C bus 5
                                  INFO  [muorb] SLPI:  address 0x63
                                  INFO  [muorb] SLPI: 
                                  
                                  INFO  [muorb] SLPI: Ok executing command: icp101xx start -I -b 5
                                  INFO  [qshell] qshell return value timestamp: 46049655, local time: 46051360
                                  Looking for qmc5883l magnetometer
                                  INFO  [qshell] Send cmd: 'qmc5883l start -R 10 -X -b 1'
                                  INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
                                  INFO  [muorb] SLPI: qshell gotten: qmc5883l start -R 10 -X -b 1
                                  INFO  [muorb] SLPI:   arg0 = 'qmc5883l'
                                  
                                  INFO  [muorb] SLPI:   arg1 = 'start'
                                  
                                  INFO  [muorb] SLPI:   arg2 = '-R'
                                  
                                  INFO  [muorb] SLPI:   arg3 = '10'
                                  
                                  INFO  [muorb] SLPI:   arg4 = '-X'
                                  
                                  INFO  [muorb] SLPI:   arg5 = '-b'
                                  
                                  INFO  [muorb] SLPI:   arg6 = '1'
                                  
                                  INFO  [muorb] SLPI: *** I2C Device ID 0x80d09 527625
                                  ERROR [muorb] SLPI: i2c probe failed
                                  INFO  [muorb] SLPI: PX4_qshell: no instance started (no device on bus?)
                                  ERROR [muorb] SLPI: Failed to execute command: qmc5883l start -R 10 -X -b 1
                                  INFO  [qshell] cmd returned with: -1
                                  INFO  [qshell] qshell return value timestamp: 46090352, local time: 46091734
                                  ERROR [qshell] Command failed
                                  Looking for ist8310 magnetometer
                                  INFO  [muorb] SLPI: >>> ICM42688P this: 3176eba0
                                  INFO  [qshell] Send cmd: 'ist8310 start -R 10 -X -b 1'
                                  INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
                                  INFO  [muorb] SLPI: qshell gotten: ist8310 start -R 10 -X -b 1
                                  INFO  [muorb] SLPI:   arg0 = 'ist8310'
                                  
                                  INFO  [muorb] SLPI:   arg1 = 'start'
                                  
                                  INFO  [muorb] SLPI:   arg2 = '-R'
                                  
                                  INFO  [muorb] SLPI:   arg3 = '10'
                                  
                                  INFO  [muorb] SLPI:   arg4 = '-X'
                                  
                                  INFO  [muorb] SLPI:   arg5 = '-b'
                                  
                                  INFO  [muorb] SLPI:   arg6 = '1'
                                  
                                  INFO  [muorb] SLPI: *** I2C Device ID 0x60e09 396809
                                  INFO  [muorb] SLPI: ist8310 #0 on I2C bus 1
                                  INFO  [muorb] SLPI:  (external)
                                  INFO  [muorb] SLPI:  address 0xE
                                  INFO  [muorb] SLPI:  rotation 10
                                  INFO  [muorb] SLPI: 
                                  
                                  INFO  [muorb] SLPI: Ok executing command: ist8310 start -R 10 -X -b 1
                                  INFO  [qshell] qshell return value timestamp: 46128693, local time: 46130008
                                  INFO  [qshell] Send cmd: 'gps start'
                                  INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
                                  INFO  [muorb] SLPI: qshell gotten: gps start
                                  INFO  [muorb] SLPI:   arg0 = 'gps'
                                  
                                  INFO  [muorb] SLPI:   arg1 = 'start'
                                  
                                  INFO  [muorb] SLPI: Creating pthread gps
                                  
                                  INFO  [muorb] SLPI: Successfully created px4 task PX4_gps with tid 2097647
                                  INFO  [muorb] SLPI: Ok executing command: gps start
                                  INFO  [qshell] qshell return value timestamp: 46153157, local time: 46155078
                                  Looking for ncp5623c RGB LED
                                  INFO  [qshell] Send cmd: 'rgbled_ncp5623c start -X -b 1 -f 400 -a 56'
                                  INFO  [muorb] SLPI: Marking DeviceNode(qshell_req) as advertised in process_remote_topic
                                  
                                  Eric KatzfeyE 2 Replies Last reply Reply Quote 0
                                  • Eric KatzfeyE
                                    Eric Katzfey ModalAI Team @Chase Riley
                                    last edited by

                                    @Chase-Riley It makes me believe that one of the rotations somewhere is not set correctly. What is SENS_BOARD_ROT set to? I guess we can just trace the topic messages through the system to see where it is getting confused. So you already did listener sensor_mag and you can see it publishing and the values updating regularly when you move the unit around? That topic goes to the sensors module that then publishes the vehicle_magnetometer topic. Can you do a listener on that to make sure it looks like it is working?

                                    Chase RileyC 1 Reply Last reply Reply Quote 0
                                    • Eric KatzfeyE
                                      Eric Katzfey ModalAI Team @Chase Riley
                                      last edited by

                                      @Chase-Riley What happens when you try to do a compass calibration?

                                      1 Reply Last reply Reply Quote 0
                                      • Eric KatzfeyE
                                        Eric Katzfey ModalAI Team @Chase Riley
                                        last edited by

                                        @Chase-Riley That error is normal. It tries to start both mag drivers assuming that one will fail.

                                        1 Reply Last reply Reply Quote 0
                                        • Eric KatzfeyE
                                          Eric Katzfey ModalAI Team @Chase Riley
                                          last edited by

                                          @Chase-Riley Also, when arming is failing in position mode you can do a listener on the failsafe_flags topic to see what flags are set.

                                          1 Reply Last reply Reply Quote 0
                                          • Chase RileyC
                                            Chase Riley @Eric Katzfey
                                            last edited by

                                            @Eric-Katzfey running px4-listener sensor_mag shows the mag data and it changes as I move the GPS/Mag around. So that is behaving how I would expect it to SENS_BOARD_ROT is set to YAW 180. This is due to the VOXL2 being mounted 180 degrees rotated in the air frame.

                                            Everything seems to go well through an compass calibration. We have done quite a few while troubleshooting this.

                                            I will take a look at the failsafes when I try to go into position mode, however at this point I think the heading needs to be resolved first either way. Am I correct to think that when rotating the GPS/Mag separate from the VOXL2 I should see a heading change based on the direction of the GPS/Mag? In this case I only see the heading change when rotating the VOXL2 (Which to my knowledge has no Mag on board).

                                            Eric KatzfeyE 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Powered by NodeBB | Contributors