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

    Build voxl-uvc-server with voxl-cross

    Modal Pipe Architecture (MPA)
    2
    26
    1855
    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.
    • Philemon BennerP
      Philemon Benner
      last edited by

      @Eric-Katzfey
      Hey,
      i am currently trying to integrate voxl-uvc-server dev with voxl-tflite-server. But i am having issues compiling it in voxl-cross. Build Error is shown below:

      voxl-cross:~(dev)$ ./build.sh 
      Building for voxl
      BUILDSIZE=32
      BUILDSIZE does not match 64
      -- Configuring done
      -- Generating done
      -- Build files have been written to: /home/root/build32
      Consolidate compiler generated dependencies of target voxl-uvc-server
      [ 50%] Linking C executable voxl-uvc-server
      /usr/lib/libmodal_json.so: error adding symbols: File in wrong format
      collect2: error: ld returned 1 exit status
      CMakeFiles/voxl-uvc-server.dir/build.make:98: recipe for target 'voxl-uvc-server' failed
      make[2]: *** [voxl-uvc-server] Error 1
      CMakeFiles/Makefile2:82: recipe for target 'CMakeFiles/voxl-uvc-server.dir/all' failed
      make[1]: *** [CMakeFiles/voxl-uvc-server.dir/all] Error 2
      Makefile:135: recipe for target 'all' failed
      make: *** [all] Error 2
      

      Help would be appreciated.

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

        @Philemon-Benner The build instructions are here: https://gitlab.com/voxl-public/modal-pipe-architecture/voxl-uvc-server/-/tree/dev. In short, you need to build in the emulator, not with voxl-cross.

        Philemon BennerP 1 Reply Last reply Reply Quote 0
        • Philemon BennerP
          Philemon Benner @Eric Katzfey
          last edited by

          @Eric-Katzfey yeah i know, but is it possible to do it in voxl-cross or what would i have to change to make it work with voxl-cross?

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

            @Philemon-Benner You would need to change it. Is there a reason that you prefer building in voxl-cross?

            Philemon BennerP 1 Reply Last reply Reply Quote 0
            • Philemon BennerP
              Philemon Benner @Eric Katzfey
              last edited by

              @Eric-Katzfey Not really it's used in the tutorial for building voxl-tflite-server from source. I basically want to replace libmodal pipe input with libuvc in the tflite-server, using parts of the voxl-uvc-server. Is it possible to build tflite-server in the voxl-emulator without changing anything?

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

                @Philemon-Benner That's not something we have tried. But I can't imagine that it would be too difficult to get voxl-tflite-server building in voxl-emulator. Any reason that you can't leave voxl-uvc-server and voxl-tflite-server as separate processes communicating via MPA?

                Philemon BennerP 1 Reply Last reply Reply Quote 0
                • Philemon BennerP
                  Philemon Benner @Eric Katzfey
                  last edited by

                  @Eric-Katzfey yeah i want to have in/output in one executable(tflite-server). So that i have better control and exception handling for these. I will try and integrate tflite-server in voxl-emulator.

                  1 Reply Last reply Reply Quote 0
                  • Philemon BennerP
                    Philemon Benner
                    last edited by

                    @Eric-Katzfey so tried compiling tflite-server in voxl-emulator, but when building it complains about everything. So i tried just integrating libuvc in tflite-server in voxl-cross. Installation works fine. But when building it's complaining about libuvc being incompatible. Is it because i'm trying to build it with arm64 instead of the way voxl-emulator does in arm32 ?(mentioned in the docs https://gitlab.com/voxl-public/utilities/voxl-docker) What would i have to change to build in voxl-cross?

                    Package Installation:

                    voxl-cross:~$ ./install_build_deps.sh dev
                    using dev IPK repo
                    Downloading http://voxl-packages.modalai.com/dev/Packages.gz.
                    Updated source 'dev'.
                    installing: 
                    libmodal-pipe libmodal-json voxl-opencv voxl-tflite libuvc
                    Installing libmodal-pipe (2.1.5) on root.
                    Downloading http://voxl-packages.modalai.com/dev/libmodal-pipe_2.1.5_202203110042.ipk.
                    Configuring libmodal-pipe.
                    Installing libmodal-json (0.4.0) on root.
                    Downloading http://voxl-packages.modalai.com/dev/libmodal-json_0.4.0_202203110044.ipk.
                    Configuring libmodal-json.
                    Installing voxl-opencv (4.5.5) on root.
                    Downloading http://voxl-packages.modalai.com/dev/voxl-opencv_4.5.5_202202082046.ipk.
                    Configuring voxl-opencv.
                    Installing voxl-tflite (2.2.3) on root.
                    Downloading http://voxl-packages.modalai.com/dev/voxl-tflite_2.2.3-1_202201270503.ipk.
                    Configuring voxl-tflite.
                    
                    Done installing voxl-tflite
                    
                    Installing libuvc (1.0.3) on root.
                    Downloading http://voxl-packages.modalai.com/dev/libuvc_1.0.3_202201232120.ipk.
                    Configuring libuvc.
                    /home/root
                    
                    Done installing libuvc
                    
                    Done installing dependencies
                    

                    Build Output:

                    voxl-cross:~$ ./build.sh 820
                    -- The C compiler identification is GNU 4.9.3
                    -- The CXX compiler identification is GNU 4.9.3
                    -- Detecting C compiler ABI info
                    -- Detecting C compiler ABI info - done
                    -- Check for working C compiler: /usr/bin/aarch64-linux-gnu-gcc-4.9 - skipped
                    -- Detecting C compile features
                    -- Detecting C compile features - done
                    -- Detecting CXX compiler ABI info
                    -- Detecting CXX compiler ABI info - done
                    -- Check for working CXX compiler: /usr/bin/aarch64-linux-gnu-g++-4.9 - skipped
                    -- Detecting CXX compile features
                    -- Detecting CXX compile features - done
                    -- Configuring done
                    -- Generating done
                    -- Build files have been written to: /home/root/build64
                    [ 50%] Building CXX object src/CMakeFiles/voxl-tflite-server.dir/main.cpp.o
                    [ 50%] Building CXX object src/CMakeFiles/voxl-tflite-server.dir/inference_helper.cpp.o
                    [ 75%] Building C object src/CMakeFiles/voxl-tflite-server.dir/resize.c.o
                    In file included from /usr/aarch64-linux-gnu-2.23/include/features.h:367:0,
                                     from /usr/aarch64-linux-gnu-2.23/include/stdio.h:27,
                                     from /home/root/src/resize.c:1:
                    /usr/aarch64-linux-gnu-2.23/include/bits/stdlib.h:64:8: warning: no previous declaration for 'ptsname_r' [-Wmissing-declarations]
                     __NTH (ptsname_r (int __fd, char *__buf, size_t __buflen))
                            ^
                    /usr/aarch64-linux-gnu-2.23/include/sys/cdefs.h:57:59: note: in definition of macro '__NTH'
                     #  define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct
                                                                               ^
                    [100%] Linking CXX executable voxl-tflite-server
                    /usr/lib/gcc-cross/aarch64-linux-gnu/4.9/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /usr/lib/../lib/libuvc.so when searching for -luvc
                    /usr/lib/gcc-cross/aarch64-linux-gnu/4.9/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible /usr/lib/../lib/libuvc.a when searching for -luvc
                    /usr/lib/gcc-cross/aarch64-linux-gnu/4.9/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible //usr/lib/libuvc.so when searching for -luvc
                    /usr/lib/gcc-cross/aarch64-linux-gnu/4.9/../../../../aarch64-linux-gnu/bin/ld: skipping incompatible //usr/lib/libuvc.a when searching for -luvc
                    /usr/lib/gcc-cross/aarch64-linux-gnu/4.9/../../../../aarch64-linux-gnu/bin/ld: cannot find -luvc
                    collect2: error: ld returned 1 exit status
                    src/CMakeFiles/voxl-tflite-server.dir/build.make:128: recipe for target 'src/voxl-tflite-server' failed
                    make[2]: *** [src/voxl-tflite-server] Error 1
                    CMakeFiles/Makefile2:97: recipe for target 'src/CMakeFiles/voxl-tflite-server.dir/all' failed
                    make[1]: *** [src/CMakeFiles/voxl-tflite-server.dir/all] Error 2
                    Makefile:135: recipe for target 'all' failed
                    make: *** [all] Error 2
                    
                    Eric KatzfeyE 1 Reply Last reply Reply Quote 0
                    • Eric KatzfeyE
                      Eric Katzfey ModalAI Team @Philemon Benner
                      last edited by

                      @Philemon-Benner You can build a 64 bit version of libuvc with the dev branch on our libuvc project: https://gitlab.com/voxl-public/third-party/libuvc/-/tree/dev. Use the instructions to build for qrb5165 and it will produce 64 bit versions.

                      Philemon BennerP 1 Reply Last reply Reply Quote 0
                      • Philemon BennerP
                        Philemon Benner @Eric Katzfey
                        last edited by

                        @Eric-Katzfey Do i have to use the qrb-emulator for that or can i do it in voxl-emulator?

                        Philemon BennerP 1 Reply Last reply Reply Quote 0
                        • Philemon BennerP
                          Philemon Benner @Philemon Benner
                          last edited by

                          @Eric-Katzfey tried that getting the following errors:

                          /usr/lib/gcc-cross/aarch64-linux-gnu/4.9/../../../../aarch64-linux-gnu/bin/ld: warning: libusb-1.0.so.0, needed by /usr/lib/../lib/libuvc.so, not found (try using -rpath or -rpath-link)
                          /usr/lib/gcc-cross/aarch64-linux-gnu/4.9/../../../../aarch64-linux-gnu/bin/ld: warning: libjpeg.so.8, needed by /usr/lib/../lib/libuvc.so, not found (try using -rpath or -rpath-link)
                          
                          

                          when trying to build in tflite-server. I Built libuvc in qr-emulator. Installed the deb file in tflite-server without errors.

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

                            @Philemon-Benner In voxl-cross?

                            1 Reply Last reply Reply Quote 0
                            • Philemon BennerP
                              Philemon Benner
                              last edited by

                              yeah i think i need to install libusb and libjpeg but wich exact verisions?

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

                                @Philemon-Benner Now you are starting to see the problem with voxl-cross. It is a much faster way to compile code but for projects that have more complex dependencies it can be a real pain to get them setup. That is why some projects use voxl-emulator. It's much easier to setup dependencies there.

                                Philemon BennerP 1 Reply Last reply Reply Quote 0
                                • Philemon BennerP
                                  Philemon Benner @Eric Katzfey
                                  last edited by

                                  @Eric-Katzfey yeah i see

                                  Philemon BennerP 1 Reply Last reply Reply Quote 0
                                  • Philemon BennerP
                                    Philemon Benner @Philemon Benner
                                    last edited by

                                    Ok so i finally got it working if someone ever needs it, with installing:

                                    sudo apt-get update
                                    sudo apt-get install libusb-1.0-0:arm64
                                    sudo apt-get install libjpeg-turbo8:arm64
                                    

                                    For other third part libraries add the :arm64 architecture when building with 820, because in voxl-cross it will install amd64 by default. Still wondering what 820 exactly is🤔

                                    Thanks @Eric-Katzfey for the suggestion on the 64-Bit deb package.

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

                                      @Philemon-Benner 820 refers to the Qualcomm Snapdragon 820 SoC that is the heart of the Voxl product. https://www.qualcomm.com/products/snapdragon-820-mobile-platform

                                      1 Reply Last reply Reply Quote 0
                                      • Philemon BennerP
                                        Philemon Benner
                                        last edited by Philemon Benner

                                        @Eric-Katzfey Ok i ran into the next problem when trying to run tflite-server.

                                        voxl:~/tflite-server(master)$ voxl-tflite-server -t -d
                                        voxl-tflite-server: error while loading shared libraries: libuvc.so.0: cannot open shared object file: No such file or directory
                                        

                                        Tried to install the 64-Bit BInary file but it's throwing the following error:

                                        voxl:~/tflite-server(master)$ opkg install libuvc_1.0.3.deb
                                        Collected errors:
                                         * pkg_extract_control_file_to_stream: Failed to extract control.tar.gz from package 'libuvc_1.0.3.deb'.
                                         * pkg_init_from_file: Failed to extract control file from libuvc_1.0.3.deb.
                                        

                                        So i tried using this from ur code:

                                        voxl:~/tflite-server(master)$ dpkg -i --force-downgrade --force-depends /data/libuvc_1.0.3.deb
                                        -bash: dpkg: command not found
                                        

                                        Normal installation from modalai dev branch still throws the same error after installation:

                                        opkg install libuvc
                                        

                                        Any suggestions?

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

                                          @Philemon-Benner You can only install a Debian package with dpkg, which we have on our qrb5165 based platform, but not on our 820 based Voxl. That only has opkg and you need ipk packages, not debian packages.

                                          Philemon BennerP 2 Replies Last reply Reply Quote 0
                                          • Philemon BennerP
                                            Philemon Benner @Eric Katzfey
                                            last edited by Philemon Benner

                                            This post is deleted!
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Powered by NodeBB | Contributors