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

    ArduPilot on Voxl2

    Flight Core v2
    4
    40
    1880
    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.
    • Alex KushleyevA
      Alex Kushleyev ModalAI Team @TomP
      last edited by Alex Kushleyev

      @TomP , if you wanted to try this yourself, a minimal integration of the VOXL2 IO board (M0065) can be done by sending out a single UART packet which contains the PWM output values.

      • the function that creates the packet can be found here and it is used in the voxl2_io px4 driver here. You simply provide an array of pwm values (in nanoseconds). This packet is variable length and supports 1,2,4,6, or 8 outputs.
      • this would be a minimal implementation, which does not include querying the VOXL2 IO board, checking it's version, etc, which is normally done in our PX4 driver. However, it could unblock your work if you are looking to fly a fixed wing ASAP.
      • the packet wrapping function uses the same structure as used for the ModalAI ESC, so that code should already exist in ArduPilot and can be re-used.

      Just to add, make sure the latest M0065 firmware is loaded

      • https://docs.modalai.com/voxl2-io-user-guide/
      • https://docs.modalai.com/voxl2-io-firmware/

      The VOXL2 IO board firmware currently operates in one-shot mode pwm, that is for one PWM command packet there will be one pulse generated without a delay. The communication baud rate with the VOXL2 IO firmware is 921600.

      Alex

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

        @TomP said in ArduPilot on Voxl2:

        When could the support for this be added?

        Unfortunately, we don't have a fixed date for that support yet. We are striving to support ArduPilot on VOXL 2 by end of this year and that would include support for the IO board. Otherwise I would say keep your eye on the commits going in to AP to see if something comes in sooner.

        T 2 Replies Last reply Reply Quote 0
        • T
          TomP @Eric Katzfey
          last edited by

          @Eric-Katzfey That is a manageable period of time for me. We can use it to plan our product roadmap. Thank you very much and keep up the good work.

          1 Reply Last reply Reply Quote 0
          • T
            TomP @Eric Katzfey
            last edited by

            @Eric-Katzfey Is there an update on the timeline yet?

            Best regards
            Tom

            1 Reply Last reply Reply Quote 0
            • T
              TomP @Andrew Tridgell
              last edited by

              @Andrew-Tridgell @Eric-Katzfey I wanted to ask again about the current roadmap regarding Arduplane and the IO board for PWM.

              Best regards
              Tom

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

                @TomP We are still shooting for the end of this year. I would like to know what external peripherals you would like to support though. I'm guessing GPS, magnetometer, RC, a PWM based motor ESC, and some servos for flight surface control? Also an airspeed sensor? A distance sensor? What kind of RC are you expecting to use? There are some I/O limitations with VOXL 2 so want to make sure that what you want to build can be supported by what we are putting together.

                T 1 Reply Last reply Reply Quote 0
                • T
                  TomP @Eric Katzfey
                  last edited by

                  @Eric-Katzfey We use GPS, compass and the IO board for a PWM-controlled ESC and two servos. We also need two more PWM channels for gimbal control. That's it.

                  We do not use an RC. The control is purely via MAVLink. Joystick inputs are made via the MAVLink command MANUAL_CONTROL. Data is transmitted via the mobile network.

                  Eric KatzfeyE 2 Replies Last reply Reply Quote 0
                  • Eric KatzfeyE
                    Eric Katzfey ModalAI Team @TomP
                    last edited by

                    @TomP I have updated the documentation at https://docs.modalai.com/voxl-ardupilot/. The VOXL 2 IO board with up to 4 PWM outputs is now supported and has been tested on a quadcopter with 4 PWM ESCs. You should be able to use this for arduplane now. We are putting together our own fixed wing test platform and hope to begin testing soon.

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

                      @Eric-Katzfey I will need to add the support for up to 8 PWM outputs on VOXL 2 IO board. Right now it only supports 4. You should be able to do test flights without the gimbal with 4 PWM outputs.

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

                        @TomP The update to support all 8 PWM outputs from the IO board is now in mainline. You can get it in the latest build posted here: https://firmware.ardupilot.org/Copter/latest/QURT/

                        1 Reply Last reply Reply Quote 0
                        • T
                          TomP
                          last edited by

                          Hi,

                          How can I configure the battery monitor for ArduPlane on the VOXL2-Mini?
                          Which value do I have to enter for BATT_MONITOR and which values for BATT_I2C_ADDR and BAT_I2C_BUS?

                          The "VOXL 2 Mini Power" transmits the current and voltage measurement data via I2C.

                          Best regards,
                          Tom

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

                            @TomP It should just scan the available I2C ports and automatically detect the VOXL 2 mini power module if it has been connected. Is it not detecting it?

                            T 1 Reply Last reply Reply Quote 0
                            • T
                              TomP @Eric Katzfey
                              last edited by

                              @Eric-Katzfey No, this is not detected. The configuration does not seem to be correct either. The parameter list mentions "Analog Voltage and Current" and corresponding pins.
                              Here is a screenshot:
                              Arduplane_VOXL2_Mini.png

                              1 Reply Last reply Reply Quote 0
                              • T
                                TomP
                                last edited by

                                Hi,

                                There is another problem. The PWM board does not output PWMs. I have also measured this with an oscilloscope. According to SERVO_OUTPUT_RAW, however, the FC should output PWM values.

                                Do I have to set another parameter in Arduplane so that the VOXL 2 I/O Expander Board is controlled correctly?

                                I use the VOXL2-Mini J19 connector: GND, pin 7, pin 8 and VREG_3P3V_RC for the power supply.

                                Here is my setup:
                                WhatsApp Image 2025-03-28 at 15.35.26.jpeg

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

                                  @TomP Okay, yes, sorry, you need to set BATT_MONITOR to 21 for INA2xx and need to set BATT_I2C_BUS to 1 for that power monitor to come up. I'll investigate the PWM issue.

                                  T 1 Reply Last reply Reply Quote 0
                                  • T
                                    TomP @Eric Katzfey
                                    last edited by

                                    @Eric-Katzfey The battery monitor works. Thank you very much! I'm sure the PWM will also work and then it's off to the test flight. 🙂

                                    Eric KatzfeyE 2 Replies Last reply Reply Quote 0
                                    • Eric KatzfeyE
                                      Eric Katzfey ModalAI Team @TomP
                                      last edited by

                                      @TomP What are the settings of all the SERVO(x)_ params?

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

                                        @TomP If you set the SERVO(x)_FUNCTION parameters according to this: https://ardupilot.org/plane/docs/servo-functions.html#overview do you get any PWM output?

                                        T 1 Reply Last reply Reply Quote 0
                                        • T
                                          TomP @Eric Katzfey
                                          last edited by TomP

                                          @Eric-Katzfey Here are my settings (no PWM output):

                                          SERVO1_FUNCTION,4
                                          SERVO1_MAX,1900
                                          SERVO1_MIN,1100
                                          SERVO1_REVERSED,0
                                          SERVO1_TRIM,1500
                                          SERVO2_FUNCTION,19
                                          SERVO2_MAX,1900
                                          SERVO2_MIN,1100
                                          SERVO2_REVERSED,0
                                          SERVO2_TRIM,1500
                                          SERVO3_FUNCTION,70
                                          SERVO3_MAX,1900
                                          SERVO3_MIN,1100
                                          SERVO3_REVERSED,0
                                          SERVO3_TRIM,1100
                                          SERVO4_FUNCTION,21
                                          SERVO4_MAX,1900
                                          SERVO4_MIN,1100
                                          SERVO4_REVERSED,0
                                          SERVO4_TRIM,1500
                                          SERVO5_FUNCTION,0
                                          SERVO5_MAX,1900
                                          SERVO5_MIN,1100
                                          SERVO5_REVERSED,0
                                          SERVO5_TRIM,1500
                                          SERVO6_FUNCTION,0
                                          SERVO6_MAX,1900
                                          SERVO6_MIN,1100
                                          SERVO6_REVERSED,0
                                          SERVO6_TRIM,1500
                                          SERVO7_FUNCTION,0
                                          SERVO7_MAX,1900
                                          SERVO7_MIN,1100
                                          SERVO7_REVERSED,0
                                          SERVO7_TRIM,1500
                                          SERVO8_FUNCTION,0
                                          SERVO8_MAX,1900
                                          SERVO8_MIN,1100
                                          SERVO8_REVERSED,0
                                          SERVO8_TRIM,1500

                                          Eric KatzfeyE 2 Replies Last reply Reply Quote 0
                                          • Eric KatzfeyE
                                            Eric Katzfey ModalAI Team @TomP
                                            last edited by

                                            @TomP Hmm, that looks correct. On my test setup running ArduPlane with those values I see output values being sent to the M0065 board. I'm wondering if there is a connectivity issue between the VOXL 2 mini and the IO board.

                                            T 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Powered by NodeBB | Contributors