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

    voxl-tflite-server forward compatibility ?

    Modal Pipe Architecture (MPA)
    4
    20
    1.1k
    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.
    • P
      Philemon Benner
      last edited by 16 Mar 2022, 17:52

      @Matt-Turi
      Hey,
      still working on the custom voxl-tflite-server. Is it possible to use voxl-tflite-server with modern c++ ?. I wanna integrate my own libraries in voxl-tflite-server but they are written in CXX-17. I tried to compile my third party librarys, with the given voxl-cross compilers but that didn't really work out. I also tried building tflite-server with voxl-cross native compilers, but that throwed errors about skipping tensorflow lite librarys because they are incompatible. Do you have any suggestion what i could do to get both working together on voxl?

      1 Reply Last reply Reply Quote 0
      • ?
        A Former User
        last edited by 16 Mar 2022, 18:06

        Hey @Philemon-Benner,

        The gcc compiler version on voxl is 4.9 and there is no straightforward way to upgrade. In order to integrate the tflite-server with some other libraries, they would have to be generated with the same compiler, i.e. built in voxl-cross. This is why we have a collection of third party libs here, as well as why we are limited to using tensorflow v2.2.3.

        If migrating the libraries you are using to a supported c++ version is too difficult, you could use a docker image on target with the extra support you need. This would require rebuilding and running the tflite-server within the docker, but would allow use of modern c++.

        1 Reply Last reply Reply Quote 0
        • P
          Philemon Benner
          last edited by 16 Mar 2022, 18:18

          Thank you

          1 Reply Last reply Reply Quote 0
          • P
            Philemon Benner
            last edited by Philemon Benner 17 Mar 2022, 15:56 17 Mar 2022, 15:54

            @Matt-Turi Ok so i got my third party librarys installed with the 865 Compiler given in voxl-cross, but i am getting an error when trying to run it on the voxl:

            Process: /usr/lib64/libstdc++.so.6: version `CXXABI_1.3.11' not found (required by Process)
            

            i looked that up and about what i found out is that the compiler version is too old for it, i don't really know what CXXABI_1.3.11 is but the voxl only has CXXABI_1.3.10. Is the 865 toolchain for something else? And where are the differences in 820 and 865?

            1 Reply Last reply Reply Quote 0
            • ?
              A Former User
              last edited by 17 Mar 2022, 16:12

              Hey @Philemon-Benner,

              The toolchain you used is a gcc-7 compiler that is included in voxl-cross is for our qrb5165 based platforms, and is a bit ahead of what is on voxl. You would need to use the gcc-4.9 toolchain, i.e. aarch64-gnu-4.9.toolchain.cmake to fix the c++ issues you are seeing.

              1 Reply Last reply Reply Quote 0
              • P
                Philemon Benner
                last edited by 17 Mar 2022, 16:30

                @Matt-Turi Okey but that's weird to me because in qrb5165-emulator you have a gcc-7 compiler. Libs like libuvc from voxl-uvc-server are being built with it. There i had no issues including that to the tflite-server and running it on the voxl.

                1 Reply Last reply Reply Quote 0
                • ?
                  A Former User
                  last edited by 17 Mar 2022, 16:36

                  libuvc for voxl is built in voxl-emulator, not the qrb5165 emulator. If you check out the readme on the dev branch, you can see the separate build instructions for separate platforms.

                  1 Reply Last reply Reply Quote 0
                  • P
                    Philemon Benner
                    last edited by 17 Mar 2022, 16:45

                    @Matt-Turi Ok yeah i see. I don't even know why i went to qrb emulator but when building the libuvc library from source in qrb emulator, it still worked for me. I have a running version of it on the Voxl, should that even be possible if it's just made for qrb5165 devices?

                    1 Reply Last reply Reply Quote 0
                    • ?
                      A Former User
                      last edited by 17 Mar 2022, 16:51

                      Ah I see. libuvc is a c library, so the code is backwards compatible with gcc-4.9 and can be compiled with the newer gcc. The libs you are trying to compile are c++, so they are affected by the differences between compiler versions.

                      1 Reply Last reply Reply Quote 0
                      • P
                        Philemon Benner
                        last edited by 17 Mar 2022, 16:56

                        @Matt-Turi Ok good to know.

                        1 Reply Last reply Reply Quote 0
                        • P
                          Philemon Benner
                          last edited by 17 Mar 2022, 16:58

                          @Matt-Turi btw why is voxl-emulator architecture armv7l if we have aarch64 on actual voxl? Will this be a problem when compiling in emulator?

                          E 1 Reply Last reply 17 Mar 2022, 17:37 Reply Quote 0
                          • ?
                            A Former User
                            last edited by A Former User 17 Mar 2022, 17:52 17 Mar 2022, 17:33

                            This post is deleted!
                            1 Reply Last reply Reply Quote 0
                            • E
                              Eric Katzfey ModalAI Team @Philemon Benner
                              last edited by 17 Mar 2022, 17:37

                              @Philemon-Benner Voxl is 64 bit and the OS is 64 bit. However, Qualcomm provides many of their packages for the device as 32 bit and, consequently, anything that has a dependency on these packages must also be 32 bit. That is why you can build 64 bit applications and have them run successfully on Voxl. It just means that that application had no 32 bit dependencies.

                              1 Reply Last reply Reply Quote 0
                              • P
                                Philemon Benner
                                last edited by 17 Mar 2022, 17:43

                                Okey thanks for explaining

                                1 Reply Last reply Reply Quote 0
                                • P
                                  Philemon Benner
                                  last edited by Philemon Benner 17 Mar 2022, 17:50 17 Mar 2022, 17:49

                                  @Matt-Turi
                                  I know it's not really related to the voxl but if include directorys in cmake like that:

                                  include_directories(/home/root/third_party/AWS/wrkspace/lib)
                                  

                                  the compiler should find the packages located in there or?

                                  [100%] Linking CXX executable Process
                                  /usr/lib/gcc-cross/aarch64-linux-gnu/7/../../../../aarch64-linux-gnu/bin/ld: cannot find -lDiscovery-cpp
                                  /usr/lib/gcc-cross/aarch64-linux-gnu/7/../../../../aarch64-linux-gnu/bin/ld: cannot find -lEventstreamRpc-cpp
                                  

                                  but the linked library is located there:

                                  voxl-cross:~(master)$ ls /home/root/third_party/AWS/wrkspace/lib | grep Discovery-cpp
                                  Discovery-cpp
                                  libDiscovery-cpp.a
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • C
                                    Chad Sweet ModalAI Team
                                    last edited by 19 Mar 2022, 16:21

                                    Not totally sure what you're asking, but try looking into target_link_libraries in the cmake documentation

                                    1 Reply Last reply Reply Quote 0
                                    • P
                                      Philemon Benner
                                      last edited by 22 Mar 2022, 12:43

                                      @Matt-Turi Ok so i got it working with CXX17, it's working in voxl-emulator:

                                      voxl-emulator:~$ file program
                                      voxl-mission-logic: ELF 64-bit LSB executable, ARM aarch64, version 1 (GNU/Linux), statically linked, BuildID[sha1]=somekey , for GNU/Linux 5.4.0, not stripped
                                      voxl-emulator:~$ ./program --arg someArg
                                      [2022-03-22 12:23:14.804] [info] someText
                                      [2022-03-22 12:23:14.807] [info] someText
                                      [2022-03-22 12:23:15.279] [info] someText
                                      

                                      But on actual voxl it's not working:

                                      voxl:/data$ ./program --arg someArg
                                      FATAL: kernel too old
                                      Aborted
                                      

                                      Kernel Versions in voxl-emulator and voxl_platform_3-3-0-0.5.0-a system image are actually different:
                                      emulator kernel version: 5.13.0-35-generic
                                      voxl kernel version: 3.18.71-perf
                                      Shouldn't voxl emulator have the same kernel version as the voxl?
                                      in the docs it says:

                                      • voxl-emulator simulates the VOXL system image and is built alongside the base system image
                                      1 Reply Last reply Reply Quote 0
                                      • P
                                        Philemon Benner
                                        last edited by 22 Mar 2022, 13:11

                                        Upgrading to newest system image didn't work either

                                        E 1 Reply Last reply 22 Mar 2022, 16:03 Reply Quote 0
                                        • E
                                          Eric Katzfey ModalAI Team @Philemon Benner
                                          last edited by 22 Mar 2022, 16:03

                                          @Philemon-Benner voxl-emulator is a Docker image, not a complete Virtual Machine, so it uses the same kernel as the machine you run it on.

                                          P 1 Reply Last reply 22 Mar 2022, 16:07 Reply Quote 0
                                          • P
                                            Philemon Benner @Eric Katzfey
                                            last edited by 22 Mar 2022, 16:07

                                            @Eric-Katzfey Ok thanks for the fast answer.

                                            1 Reply Last reply Reply Quote 0
                                            1 out of 20
                                            • First post
                                              1/20
                                              Last post
                                            Powered by NodeBB | Contributors