What are my options for ROS support on VOXL?



  • I am just getting started with VOXL Flight Deck. I've walked through several quick starts and have used ADB and SSH as well as QGC/WiFi to connect to my target. All good. I see that my shipped system is running a Yocto built version of Linux that has ROS Indigo.
    I was hoping to use ROS Melodic. Is there any upgrade path to be able to run ROS Melodic on VOXL?


  • Dev Team

    Here is a tutorial using mavros with kinetic.

    From there you can see instructions for running Docker on VOXL that points to the Dockerfile for the kinetic image. You should be able to upgrade to Melodic using similar techniques



  • @Chad-Sweet Thanks, I'll dig into that...
    Am I correct to assume that it is common practice to run with the Yocto based Linux as the "base" platform and then launch various docker images with some form of Ubuntu in parallel with that?

    Assuming it is, has anyone already created a "rosmelodic-bionic" docker image?
    Seems the docker files here https://gitlab.com/voxl-public/voxl-docker-images/roskinetic-docker are where to start. True?
    Sorry, I'm editing this as I go. I'll stop now...



  • @Chad-Sweet I'm working on a docker image to support ROS melodic on Ubuntu 18.04; meanwhile, I'd still appreciate your thoughts on this...
    Just based on a pretty thorough docker-on-voxl page vs "coming soon" for the MPA-to-ROS page, it appears the better route is to push toward docker; especially if I have ROS-melodic experience. True? Thoughts?



  • Hi,

    The "coming soon" for voxl-mpa-to-ros refers more to the documentation on our end as we finalize the structure of the package, it is already in a completely usable state. I think the issue for you is that it is not a new implementation of ros on voxl but just a rosnode for publishing MPA topics within the already existing indigo (or melodic on voxl2) infrastructure. We don't have any plans for supporting melodic natively on voxl1 since the voxl system is based on an older yocto build as opposed to a relatively standard Ubuntu 18 for voxl2.



  • Thanks for the quick response. I was offline for the last 36 hours waiting for a network repair...
    Anyway, the fundamental problem I'm having with voxl-mpa-to-ros is a build failure...
    I follow the instructions in the README.md but end up with a failure in build.sh...
    Several CMAKE warnings like this:

    CMake Warning at /opt/ros/indigo/share/cpp_common/cmake/cpp_commonConfig.cmake:111 (message):
      Project 'cpp_common' specifies 'NOTFOUND/usr/include' as an include dir,
      which is not found.  It does neither exist as an absolute directory nor in
      '/opt/ros/indigo/NOTFOUND/usr/include'.  Ask the maintainer 'Dirk Thomas
      <dthomas@osrfoundation.org>' to fix it.
    Call Stack (most recent call first):
      /opt/ros/indigo/share/roscpp/cmake/roscppConfig.cmake:169 (find_package)
      /opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake:76 (find_package)
      CMakeLists.txt:43 (find_package)
    

    Then the final error:

    /home/root/catkin_ws/src/./include/interfaces/ai_detection_interface.h:38:41: fatal error: voxl_mpa_to_ros/AiDetection.h: No
    such file or directory
     #include <voxl_mpa_to_ros/AiDetection.h>
                                             ^
    compilation terminated.
    CMakeFiles/voxl_mpa_to_ros_node.dir/build.make:206: recipe for target 'CMakeFiles/voxl_mpa_to_ros_node.dir/src/interface_mana
    ger.cpp.o' failed
    make[2]: *** [CMakeFiles/voxl_mpa_to_ros_node.dir/src/interface_manager.cpp.o] Error 1
    Scanning dependencies of target voxl_mpa_to_ros_generate_messages_lisp
    [ 66%] Generating Lisp code from voxl_mpa_to_ros/AiDetection.msg
    [ 66%] Built target voxl_mpa_to_ros_generate_messages_lisp
    Scanning dependencies of target voxl_mpa_to_ros_generate_messages_py
    [ 73%] Generating Python from MSG voxl_mpa_to_ros/AiDetection
    [ 80%] Generating Python msg __init__.py for voxl_mpa_to_ros
    [ 80%] Built target voxl_mpa_to_ros_generate_messages_py
    [ 80%] Built target voxl_mpa_to_ros_generate_messages_cpp
    Scanning dependencies of target voxl_mpa_to_ros_generate_messages
    [ 80%] Built target voxl_mpa_to_ros_generate_messages
    CMakeFiles/Makefile2:1546: recipe for target 'CMakeFiles/voxl_mpa_to_ros_node.dir/all' failed
    make[1]: *** [CMakeFiles/voxl_mpa_to_ros_node.dir/all] Error 2
    Makefile:138: recipe for target 'all' failed
    make: *** [all] Error 2
    Invoking "make install -j8 -l8" failed
    voxl-emulator:~$
    

    This is the result when running build.sh apq8096, which I assume is correct for Voxl-Flight-Deck. Are those instructions up to date? I am running with docker image "voxl-eumlator:V1.7".


  • Dev Team



  • Not sure how that topic applies to my question (sorry, I certainly admit to being new to VOXL). Right now all I'm trying to do is build that repository by cloning it and following the build steps outlined in the README.md file. No changes, I'm just trying to verify that I have my host environment set up properly.
    Am I correct to assume that this should build clean as is?



  • I just pulled down master and it built successfully (you have the correct docker image and version , voxl-emulator-1.7).

    voxl-emulator:~/voxl-mpa-to-ros$ ./install_build_deps.sh apq8096 stable 
    using apq8096 stable repo
    adding arm64 to opkg conf
    Downloading http://voxl-packages.modalai.com/dists/apq8096/stable/binary-arm64//Packages.gz.
    Updated source 'stable'.
    installing: 
    libmodal-json
    libmodal-pipe
    libvoxl-cutils
    Installing libmodal-json (0.4.2) on root.
    Downloading http://voxl-packages.modalai.com/dists/apq8096/stable/binary-arm64//libmodal-json_0.4.2.ipk.
    Configuring libmodal-json.
    Installing libmodal-pipe (2.4.0) on root.
    Downloading http://voxl-packages.modalai.com/dists/apq8096/stable/binary-arm64//libmodal-pipe_2.4.0.ipk.
    Configuring libmodal-pipe.
    Installing libvoxl-cutils (0.1.1) on root.
    Downloading http://voxl-packages.modalai.com/dists/apq8096/stable/binary-arm64//libvoxl-cutils_0.1.1.ipk.
    Configuring libvoxl-cutils.
    
    Done installing dependencies
    
    
    voxl-emulator:~/voxl-mpa-to-ros$ ./clean.sh 
    
    
    voxl-emulator:~/voxl-mpa-to-ros$ ./build.sh apq8096
    Base path: /home/root/voxl-mpa-to-ros/catkin_ws
    Source space: /home/root/voxl-mpa-to-ros/catkin_ws/src
    Build space: /home/root/voxl-mpa-to-ros/catkin_ws/build
    Devel space: /home/root/voxl-mpa-to-ros/catkin_ws/devel
    Install space: /home/root/voxl-mpa-to-ros/catkin_ws/install
    ####
    #### Running command: "cmake /home/root/voxl-mpa-to-ros/catkin_ws/src -DCMAKE_BUILD_TYPE=Release -DCATKIN_DEVEL_PREFIX=/home/root/voxl-mpa-to-ros/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/root/voxl-mpa-to-ros/catkin_ws/install -G Unix Makefiles" in "/home/root/voxl-mpa-to-ros/catkin_ws/build"
    ####
    -- The C compiler identification is GNU 4.9.3
    -- The CXX compiler identification is GNU 4.9.3
    -- Check for working C compiler: /usr/bin/cc
    -- Check for working C compiler: /usr/bin/cc -- works
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Check for working CXX compiler: /usr/bin/c++
    -- Check for working CXX compiler: /usr/bin/c++ -- works
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- Using CATKIN_DEVEL_PREFIX: /home/root/voxl-mpa-to-ros/catkin_ws/devel
    -- Using CMAKE_PREFIX_PATH: /opt/ros/indigo
    -- This workspace overlays: /opt/ros/indigo
    -- Found PythonInterp: /usr/bin/python (found version "2.7.9") 
    -- Using PYTHON_EXECUTABLE: /usr/bin/python
    -- Using default Python package layout
    -- Found PY_em: /usr/lib/python2.7/site-packages/em.pyc  
    -- Using empy: /usr/lib/python2.7/site-packages/em.pyc
    -- Using CATKIN_ENABLE_TESTING: ON
    -- Call enable_testing()
    -- Using CATKIN_TEST_RESULTS_DIR: /home/root/voxl-mpa-to-ros/catkin_ws/build/test_results
    -- Found gtest: gtests will be built
    -- Using Python nosetests: /usr/bin/nosetests-2.7
    -- catkin 0.6.19
    
    { A bunch of cmake warnings here that I hid for readability }
    
    -- voxl_mpa_to_ros: 1 messages, 0 services
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /home/root/voxl-mpa-to-ros/catkin_ws/build
    ####
    #### Running command: "make install -j16 -l16" in "/home/root/voxl-mpa-to-ros/catkin_ws/build"
    ####
    Scanning dependencies of target _voxl_mpa_to_ros_generate_messages_check_deps_AiDetection
    Scanning dependencies of target voxl_mpa_to_ros_node
    [  6%] Building CXX object CMakeFiles/voxl_mpa_to_ros_node.dir/src/interfaces/imu_interface.cpp.o
    [ 13%] Building CXX object CMakeFiles/voxl_mpa_to_ros_node.dir/src/interfaces/camera_interface.cpp.o
    [ 26%] Building CXX object CMakeFiles/voxl_mpa_to_ros_node.dir/src/interfaces/stereo_interface.cpp.o
    [ 26%] Building CXX object CMakeFiles/voxl_mpa_to_ros_node.dir/src/interfaces/ai_detection_interface.cpp.o
    [ 33%] Building CXX object CMakeFiles/voxl_mpa_to_ros_node.dir/src/interfaces/vio_interface.cpp.o
    [ 40%] Building CXX object CMakeFiles/voxl_mpa_to_ros_node.dir/src/interfaces/point_cloud_interface.cpp.o
    [ 46%] Building CXX object CMakeFiles/voxl_mpa_to_ros_node.dir/src/mpa_ros_node.cpp.o
    [ 53%] Building CXX object CMakeFiles/voxl_mpa_to_ros_node.dir/src/interface_manager.cpp.o
    [ 60%] Building CXX object CMakeFiles/voxl_mpa_to_ros_node.dir/src/utils/camera_helpers.cpp.o
    [ 66%] Building CXX object CMakeFiles/voxl_mpa_to_ros_node.dir/src/utils/common_utils.cpp.o
    [ 66%] Built target _voxl_mpa_to_ros_generate_messages_check_deps_AiDetection
    Scanning dependencies of target voxl_mpa_to_ros_generate_messages_cpp
    Scanning dependencies of target voxl_mpa_to_ros_generate_messages_lisp
    Scanning dependencies of target voxl_mpa_to_ros_generate_messages_py
    [ 73%] Generating C++ code from voxl_mpa_to_ros/AiDetection.msg
    [ 80%] Generating Python from MSG voxl_mpa_to_ros/AiDetection
    [ 86%] Generating Lisp code from voxl_mpa_to_ros/AiDetection.msg
    [ 93%] Generating Python msg __init__.py for voxl_mpa_to_ros
    [ 93%] Built target voxl_mpa_to_ros_generate_messages_lisp
    [ 93%] Built target voxl_mpa_to_ros_generate_messages_py
    [ 93%] Built target voxl_mpa_to_ros_generate_messages_cpp
    Scanning dependencies of target voxl_mpa_to_ros_generate_messages
    [ 93%] Built target voxl_mpa_to_ros_generate_messages
    [100%] Linking CXX executable /home/root/voxl-mpa-to-ros/catkin_ws/devel/lib/voxl_mpa_to_ros/voxl_mpa_to_ros_node
    /usr/lib/gcc/arm-oemllib32-linux-gnueabi/4.9.3/../../../../arm-oemllib32-linux-gnueabi/bin/ld: warning: skipping incompatible /usr/lib64/libmodal_pipe.so while searching for modal_pipe
    /usr/lib/gcc/arm-oemllib32-linux-gnueabi/4.9.3/../../../../arm-oemllib32-linux-gnueabi/bin/ld: warning: skipping incompatible /usr/lib64/libmodal_json.so while searching for modal_json
    [100%] Built target voxl_mpa_to_ros_node
    Install the project...
    -- Install configuration: "Release"
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/_setup_util.py
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/env.sh
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/setup.bash
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/setup.sh
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/setup.zsh
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/.rosinstall
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/share/voxl_mpa_to_ros/msg/AiDetection.msg
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/share/voxl_mpa_to_ros/cmake/voxl_mpa_to_ros-msg-paths.cmake
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/include/voxl_mpa_to_ros
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/include/voxl_mpa_to_ros/AiDetection.h
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/share/common-lisp/ros/voxl_mpa_to_ros
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/share/common-lisp/ros/voxl_mpa_to_ros/msg
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/share/common-lisp/ros/voxl_mpa_to_ros/msg/voxl_mpa_to_ros-msg.asd
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/share/common-lisp/ros/voxl_mpa_to_ros/msg/_package_AiDetection.lisp
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/share/common-lisp/ros/voxl_mpa_to_ros/msg/_package.lisp
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/share/common-lisp/ros/voxl_mpa_to_ros/msg/AiDetection.lisp
    Listing /home/root/voxl-mpa-to-ros/catkin_ws/devel/lib/python2.7/site-packages/voxl_mpa_to_ros ...
    Compiling /home/root/voxl-mpa-to-ros/catkin_ws/devel/lib/python2.7/site-packages/voxl_mpa_to_ros/__init__.py ...
    Listing /home/root/voxl-mpa-to-ros/catkin_ws/devel/lib/python2.7/site-packages/voxl_mpa_to_ros/msg ...
    Compiling /home/root/voxl-mpa-to-ros/catkin_ws/devel/lib/python2.7/site-packages/voxl_mpa_to_ros/msg/_AiDetection.py ...
    Compiling /home/root/voxl-mpa-to-ros/catkin_ws/devel/lib/python2.7/site-packages/voxl_mpa_to_ros/msg/__init__.py ...
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/lib/python2.7/site-packages/voxl_mpa_to_ros
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/lib/python2.7/site-packages/voxl_mpa_to_ros/__init__.py
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/lib/python2.7/site-packages/voxl_mpa_to_ros/__init__.pyc
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/lib/python2.7/site-packages/voxl_mpa_to_ros/msg
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/lib/python2.7/site-packages/voxl_mpa_to_ros/msg/_AiDetection.pyc
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/lib/python2.7/site-packages/voxl_mpa_to_ros/msg/__init__.py
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/lib/python2.7/site-packages/voxl_mpa_to_ros/msg/_AiDetection.py
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/lib/python2.7/site-packages/voxl_mpa_to_ros/msg/__init__.pyc
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/lib/pkgconfig/voxl_mpa_to_ros.pc
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/share/voxl_mpa_to_ros/cmake/voxl_mpa_to_ros-msg-extras.cmake
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/share/voxl_mpa_to_ros/cmake/voxl_mpa_to_rosConfig.cmake
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/share/voxl_mpa_to_ros/cmake/voxl_mpa_to_rosConfig-version.cmake
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/share/voxl_mpa_to_ros/package.xml
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/share/voxl_mpa_to_ros/launch
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/share/voxl_mpa_to_ros/launch/voxl_mpa_to_ros.launch
    -- Installing: /home/root/voxl-mpa-to-ros/catkin_ws/install/lib/voxl_mpa_to_ros/voxl_mpa_to_ros_node
    -- Removed runtime path from "/home/root/voxl-mpa-to-ros/catkin_ws/install/lib/voxl_mpa_to_ros/voxl_mpa_to_ros_node"
    voxl-emulator:~/voxl-mpa-to-ros$ ./make_package.sh ipk
    Package Name:  voxl-mpa-to-ros
    version Number:  0.3.3
    starting building IPK package
    ar: creating voxl-mpa-to-ros_0.3.3.ipk
    DONE
    voxl-emulator:~/voxl-mpa-to-ros$ 
    


  • @Alex-Gardner Ok, thanks much for running that. Since it built clean for you, that made it clear that there was something bad about my environment (the whole reason I'm down this rabbit hole!).
    Anyway, my typical configuration is to ssh into my Linux machine from a W10 box using Cygwin/SSH. Apparently something in the build.sh script doesn't like that; hence my failures. When I build directly through the console of that Linux machine the build completes successfully.
    Sorry for the confusion, and thanks to all for the responses.


Log in to reply