Flight Core V2 - VOXL ESC 4in1 Integration
-
Hello @Alex-Kushleyev @tom @Vinny @Eric-Katzfey,
@modaltb @Chad-Sweet
In my setup, I'm having-> Compute - VOXL2
-> FC - Flight Core V2
-> ESC - VOXL ESC 4-in-1
-> Firmware - PX4 1.15.2I'm connecting a VOXL2 to external Flight Controller Flight Core V2. My ESC is connected to Flight Core V2 through the M0063 cable setup.
I'm connecting external Flight Core V2 to VOXL2 using the M0054 Cable connector setup but only connected to
TELEM1
port at autopilot end.Also as per the ModalAI Documentation, I have changed the
voxl-mavlink-server
to enable external autopilot functionality. When I connect to QGC on host computer, I'm able to connect to Flight Core V2 and see parameters on the autopilot.But when I setup the VOXL ESC parameters also as per the documentation stated here, I still not able to make it clearly if Flight Core is communicating with VOXL ESC or not.
From VOXL2 I'm trying to run VOXL-ESC commands also,
This is the terminal output,
voxl2:/$ voxl-esc What do you want to do? 1) scan 3) spin 5) upload_params 2) detect 4) upgrade_firmware #? 1 enabling bridge detected voxl-px4 is enabled Removed /etc/systemd/system/multi-user.target.wants/voxl-px4.service. detected voxl-px4 is running, stopping it now Sending kill slpi command! bridge enabled Detected Python version : 3.6.9 (default, Mar 10 2023, 16:46:00) [GCC 8.4.0] Found voxl-esc tools bin version: 1.9 VOXL Platform: M0054 Detected RB5 Flight, VOXL2 M0054 or M0104! INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 2000000 Sending library name request: libslpi_qrb5165_io.so Sending initialization request INFO: Scanning for ESC bootloader: /dev/slpi-uart-2, baud: 230400 Updated baud rate to 230400 WARNING: No ESC(s) detected VOXL Platform: M0054 Detected RB5 Flight, VOXL2 M0054 or M0104! INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 250000 INFO: Scanning for ESC bootloader: /dev/slpi-uart-2, baud: 230400 Updated baud rate to 230400 WARNING: No ESC(s) detected VOXL Platform: M0054 Detected RB5 Flight, VOXL2 M0054 or M0104! INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 921600 INFO: Scanning for ESC bootloader: /dev/slpi-uart-2, baud: 230400 Updated baud rate to 230400 WARNING: No ESC(s) detected VOXL Platform: M0054 Detected RB5 Flight, VOXL2 M0054 or M0104! INFO: Scanning for ESC firmware: /dev/slpi-uart-2, baud: 57600 INFO: Scanning for ESC bootloader: /dev/slpi-uart-2, baud: 230400 Updated baud rate to 230400 WARNING: No ESC(s) detected ERROR: not all ESCs found FAILED to ping ESCs when calling scan script disabling bridge Sending kill slpi command! re-enabling voxl-px4 Created symlink /etc/systemd/system/multi-user.target.wants/voxl-px4.service → /etc/systemd/system/voxl-px4.service. restarting voxl-px4 bridge disabled DONE
Now how do I confirm if my Flight Core V2 is communicating VOXL ESC?
Also, I'm following the setup from the this documentation from ModalAI.
Also can I check using
voxl-esc
tools from VOXL2 to check the status of ESC in this setup? -
If you connect the VOXL ESC to Flight Core (V2), then VOXL2 cannot communicate with the ESC using
voxl-esc
python tools because that would require direct UART connection between VOXL2 and the ESC.Since your PX4 instance is running on Flight Core V2, you should check your Flight Core debug console, which will print information about ESC initialization. Also, if the ESC is initialized correctly, the blue LEDs on the ESC should be blinking (which means commands are received by ESC from Flight Core, even if the vehicle is not armed).
If you look at your PX4 debug console on Flight Core V2 (using a separate UART to USB cable probably) and you see that the ESC fails to initialize, there are a few things to double check:
- px4 is configured to use the correct UART port for voxl-esc driver
- correct baud rate is used
- recently we discovered that since we added ESC version query into the
voxl esc
px4 driver, there was the following issue : Flight Core V2 boots very fast, faster than 1s, however all of ModalAI ESCs spend 1 second in bootloader mode right after you apply power. this results in FC not being able to detect the ESC. Previously (in older version of the voxl esc driver in px4), we did not perform the ESC query upon PX4 start and this was not a problem. Also it is not an issue on VOXL2 because it takes longer than 1 second to boot up. Please check the following change to add a delay to FC2 boot up : https://github.com/modalai/px4-firmware/pull/70/commits/55742d298bf9241a2af5aa2c7ba3a26788073356
Hopefully this resolves your issue.
Alex
-
@Alex-Kushleyev Thank you for reverting. I tested it out and the ESC is powered. The
TELEM1 port
is connected to VOXL2 board andTELEM2 port
to the Flight Core FCv2 board. I used the PX4 firmware modalai_fc-v2_1.14.0-8.93.1.px4 from the ModalAI build and setup the necessary parameters following documentation. The VOXL ESC is recognising the data from FC autopilot and the LED blinking sequence starts.I have few more queries,
In the coming days I'll be upgrading to VOXL-FPV ESC. Can I follow the same wiring setup for this as well?I had an additional query link, you had mentioned not able to run any python tool files, but since
voxl-send-neopixel-cmd
is in C/C++, it should be working.Also, will this setup affect the turtle mode implementation.
-
@Jetson-Nano , yes the FPV ESC can be connected in exactly the same way, but your cable between the ESC and FC2 will be different, since the FPV ESC uses a 4-pin JST GH instead of 6-pin Hirose DF-13, so please pay attention to the connections.
Regarding the
voxl-esc
python tools not working, the reason is not because the tools are written in python. The reason is that thevoxl-esc
tools require a direct serial connection to the Linux OS that is running the tools (either voxl2 or a linux PC). However, when you connect the ESC to FC V2, then there is no direct UART connection that thevoxl-esc
tools can use.voxl-send-neopixel-cmd
does not work the same way - this test tool generates the binary packet with LED information and this packet is forwarded to PX4 ESC driver and that driver sends the LED packet to the ESC. Since you would be running thevoxl-send-neopixel-cmd
on voxl2 but ESC is connected to FC V2, in order for this to work, the LED message has to be transmitted from voxl2 to FC V2 using the mavlink protocol.I will find out how what this message type is and how to check if it is being transmitted in your case.
Alex
-
@Alex-Kushleyev thanks again. can you check this out.
As mentioned the messages needs to be converted to mavlink message. Will mavlink message be handled byVOXL-ESC
and will it trigger thevoxl-send-neopixel-cmd
and turn on the LEDs? I guess multiple conversion of message types might be required.Also there is
voxl-io
driver link running in theVOXL FCV2
. It should helpvoxl FCV2
to handle the data fromVOXL2
and pass it to theVOXL FPV ESC
.There are 2 PWM outputs link that are independent, can we send a trigger message from
VOXL2 Board
to theVOXL FCV2
and FC will send the message toVOXL FPV ESC
and givePWM output
. Using thevoxl-send-pwm-cmd
command. -
I checked with my colleague and they said that the current way will not work for forwarding the Neopixel LED packet to the FC V2. Here is roughly how the LED packet is created and sent to the ESC:
voxl-send-neopixle-cmd
creates a data packet (using the specific format for ESC) and sends it to a special processmodal-io-bridge
via mpa pipe that is also calledmodal-io-bridge
.- The
modal-io-bridge
is a PX4 module that is specific to VOXL2 and it runs on the CPU (not DSP). It receives the data from the mpa pipe and sends out the data usingORB_ID(modal_io_data)
using data typemodal_io_data_s
. - then
voxl_esc
driver that runs on the DSP gets this data and forwards it to the ESC directly, as shown here: https://github.com/modalai/px4-firmware/blob/70d986f08acbf90e3752ef832151d8f993e18697/src/drivers/actuators/voxl_esc/voxl_esc.cpp#L1346 - this approach has no option to forward the message to external FC.
However, actually this week we are making changes to use mavlink tunnel messages instead of this custom io bridge. I will find out how to get this to work for FC V2.
Alex
-
@Alex-Kushleyev ,
Thanks for the clarity, I also went through the same process and was not able to find any way to forward the message to ESC through external FC.
If you could help with a work around this approach it will be really helpful. I can test it out and get back to you. -
@Alex-Kushleyev
just a thought, the data from Voxl2 is transfered to FC. so you can convert them to specific msg type and forward it to external FC and External FC already hasmodal-io-bridge
, it can forward the data to ESC. There will be need of conversion of msg types multiple places, for handling and forwarding.
the External Fc has turtle mode running on it, will it setup affect it. -
@Jetson-Nano , there is probably more than one way of getting this to work, but I have been told that with the new approach that we have just implemented (being tested now), the mavlink tunnel should take care of routing the LED data from VOXL2 to FC V2 to ESC.
I asked my colleague to help describing how to test this.
Alex
-
@Alex-Kushleyev Thanks for the help. I will also test it out and get back with the results as soon as the approach is shared.
Can you also help me with finding clarity whether turtle mode will be affected by this setup. -
@Jetson-Nano , As far as I know, turtle mode should work the same when running PX4 on VOXL2 and FC V2. Have you tested it? The LED command should not interfere with the turtle mode.
I have not actually tested the turtle mode on FC myself, but the code that is running in voxl-esc px4 driver is the same, so as long as you are entering the turtle mode correctly, it should work.
Alex
-
@Alex-Kushleyev I have not tested turtle mode with Voxl2 - FCV2 setup. I have tested with the Voxl2, internal PX4 server.
I will test it out and get back to you. -
@Alex-Kushleyev , I tested the turtle mode out and it is working fine.
Once the approach for LEDs are shared, I will test it out .
I had an additional query, while we are using Telem for FCV2 and ESC communication. Will the PWM output (8 pinout) still be transmission and can we access the data.
-
@Jetson-Nano The updated voxl-io-server version is here: http://voxl-packages.modalai.com/dists/qrb5165/dev/binary-arm64/voxl-io-server_0.0.5-202502191136_arm64.deb. The updated FC v2 image is here: http://voxl-packages.modalai.com/dists/fc-v2/dev/modalai_fc-v2_1.14.0-2.0.95.px4. I have only tested with PX4 running on VOXL 2 but it should also work with external FC v2.