ModalAI Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Register
    • Login
    1. Home
    2. Kyungtaek Oh 0
    3. Best
    • Profile
    • Following 0
    • Followers 0
    • Topics 2
    • Posts 7
    • Best 1
    • Controversial 0
    • Groups 0

    Best posts made by Kyungtaek Oh 0

    • RE: Setting up micrortps bridge on VOXL2/Sentinel

      Hi @Eric-Katzfey,
      We had some finds.
      Here's what we've understood so far:

      1. Two things are needed to make a voxl-px4 package using px4-firmware(voxl-dev)
        • modalai_rb5-flight_default
        • modalai_rb5-flight_qurt
      2. And each one needs the following different crsf_parse function
        • modalai_rb5-flight_default needs crsf_parse(6 arguments)
        • modalai_rb5-flight_qrut needs crsf_parse(8 arguments)
      3. Each px4-firmware has a different version of crsf_parse
        • Branch: main has crsf_parse(6 arguments)
        • Branch: voxl-dev has crsf_parse(8 arguments)

      Our goal was to build the voxl-px4 included MicroRTPS_bridge in px4-firmware(branch: voxl-dev), so we added the following two functions to crsf.cpp in px4-firmware.

      • bool crsf_parse_buffer(uint16_t *values, uint16_t *num_values, uint16_t max_channels)
        • as crsf_parse_buffer_6
      • bool crsf_parse(const uint64_t now, const uint8_t *frame, unsigned len, uint16_t *values, uint16_t *num_values, uint16_t max_channels)
        • as crsf_parse_6

      Then the build progressed to 89% and stopped with an error below.
      ERROR #1

      [ 89%] Building CXX object src/systemcmds/pwm/CMakeFiles/systemcmds__pwm.dir/pwm.cpp.o
      /usr/local/workspace/px4-firmware/src/systemcmds/pwm/pwm.cpp: In function 'int pwm_main(int, char**)':
      /usr/local/workspace/px4-firmware/src/systemcmds/pwm/pwm.cpp:810:3: error: 'qurt_loop' was not declared in this scope
        810 |   qurt_loop = 320;
            |   ^~~~~~~~~
      compilation terminated due to -Wfatal-errors.
      make[3]: *** [src/systemcmds/pwm/CMakeFiles/systemcmds__pwm.dir/build.make:63: src/systemcmds/pwm/CMakeFiles/systemcmds__pwm.dir/pwm.cpp.o] Error 1
      make[3]: Leaving directory '/usr/local/workspace/px4-firmware/build/modalai_rb5-flight_default'
      make[2]: *** [CMakeFiles/Makefile2:12085: src/systemcmds/pwm/CMakeFiles/systemcmds__pwm.dir/all] Error 2
      make[2]: Leaving directory '/usr/local/workspace/px4-firmware/build/modalai_rb5-flight_default'
      make[1]: *** [Makefile:152: all] Error 2
      make[1]: Leaving directory '/usr/local/workspace/px4-firmware/build/modalai_rb5-flight_default'
      make: *** [Makefile:222: modalai_rb5-flight_default] Error 2
      

      We changed the int qurt_loop variable's scope to like this.

      • Before
        32b86fac-1631-4048-b2ce-a29792ee533b-Untitled.png
      • After
        f6a25f03-3c63-4f66-92e4-b3181adacef6-Untitled (1).png

      After that, an error occurred for the label for jump, and it was resolved by changing it as follows.
      ERROR #2

      [ 89%] Building CXX object src/systemcmds/pwm/CMakeFiles/systemcmds__pwm.dir/pwm.cpp.o
      /usr/local/workspace/px4-firmware/src/systemcmds/pwm/pwm.cpp: In function 'int pwm_main(int, char**)':
      /usr/local/workspace/px4-firmware/src/systemcmds/pwm/pwm.cpp:864:1: error: jump to label 'err_out_no_test_2'
        864 | err_out_no_test_2:
            | ^~~~~~~~~~~~~~~~~
      compilation terminated due to -Wfatal-errors.
      make[3]: *** [src/systemcmds/pwm/CMakeFiles/systemcmds__pwm.dir/build.make:63: src/systemcmds/pwm/CMakeFiles/systemcmds__pwm.dir/pwm.cpp.o] Error 1
      make[3]: Leaving directory '/usr/local/workspace/px4-firmware/build/modalai_rb5-flight_default'
      make[2]: *** [CMakeFiles/Makefile2:12085: src/systemcmds/pwm/CMakeFiles/systemcmds__pwm.dir/all] Error 2
      make[2]: Leaving directory '/usr/local/workspace/px4-firmware/build/modalai_rb5-flight_default'
      make[1]: *** [Makefile:152: all] Error 2
      make[1]: Leaving directory '/usr/local/workspace/px4-firmware/build/modalai_rb5-flight_default'
      

      So we changed the goto command to "return 0" instead of using err_out_no_test_2 label.

      After that, the build.sh worked and the make_packages.sh also worked.(in the voxl-px4)
      However, it did not run with the following error on voxl2.
      ERROR #3

      voxl2:~$ voxl-px4
      Found DSP signature file
      /usr/bin/voxl-px4: line 42: /usr/bin/px4: cannot execute binary file: Exec format error
      

      Based on the above results, we think the voxl-px4 with microRTPS_bridge can be built by changing modalai_rb5-flight_default and modalai_rb5-flight_qurt to use the same crsf_parse.

      So if you think our thinking is correct, can you give us some guidance?
      If it is not possible in px4-firmware(branch: voxl-dev), can we build voxl-px4(included micrortps_bridge) using another branch?
      Any advice would be appreciated.

      posted in VOXL 2
      Kyungtaek Oh 0K
      Kyungtaek Oh 0