VOXL2-VOXL2IO-PX4 firmware
-
I have written Dshot signal generation using FreeRTOS in STM32 using STM Cube IDE. It is working and I can control the motor which is connected to a 4 in 1 ESC. I want to connect this STM32F446RE to VOXL2 board and give the actuator inputs through PX4 firmware. I have written code in my STM32 to parse the inputs from VOXL2. Please explain how to connect. Can I replace the STM32 in place of M0065 and proceed? I tried to connect our own STM32 through J18. But I am not able to get any inputs. Is PX4 VOXL2-IO written such that it configures only M0065?
@Alex-Kushleyev
I referred to the below link.
https://github.com/modalai/px4-firmware/tree/main/src/drivers/voxl2_io -
You were looking at an old version of the voxl2)_io driver. The latest version can be found here : https://github.com/modalai/px4-firmware/blob/voxl-dev/src/drivers/voxl2_io/voxl2_io.cpp
Voxl2IO::get_version_info()
function will query the hardware and software version of the M0065 board before the voxl2_io px4 module will successfully start up and send out control commands.The version check will make your testing slightly more complicated because you'd need to implement the extended version reply on your STM. You should also check whether the actual format of the commands that you implemented is correct (not from the old version).
If you are able to compile the px4 code, you can just disable the version check in the code and the voxl2_io px4 module should let you send out the actuator commands.
Let me know if you need more assistance.
Alex
-
@Alex-Kushleyev Thanks for the response. Let me try the newer version and come back
-
@Alex-Kushleyev . I need some clarifications on the following points:
- How the actuator values are passed on to PX4 firmware? Through QGC or some manual method?
- Once the PX4 gets the actuator values, the Sbus receives these raw values and converts to PWM packets?
- These PWM packets are then sent to VOXL?
- VOXL converts these packets to PWM values and controls the motor through ESC?
I am confused about the format of frames used in Sbus and VOXL PWM packets. Not able to understand fully.
I am not able to figure out from the code, where Sbus is receiving these raw values. Also where VOXL is receiving these values and and where it is sending it.
Please clarify how I should send the actuator values. Also please send me the flow of the code, like how it works.
-
The voxl2_io driver works as a standard PX4 actuator, supporting up to 8 actuator outputs.
When voxl2_io driver is enabled, you can select which outputs to assign to the 8 pwm outputs using QGC, just like any actuator setup.
Then during normal operation, the PX4 mixer will send the standard commands (based on your PWM channel assignment) to the voxl2_io module (the commands typically range between 1000-2000, but the range can be changed).
voxl2_io driver, will take these values and package them into a special packet, which is then sent out via UART to M0065 board.
M0065 board will receive the pwm control packet and set its pwm values based on the packet contents.
There is no SBUS involved in this communication (standard UART between VOXL2 and M0065 board).
Does that clarify the data flow from PX4 to the M0065 board?
Alex