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? -
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".
-
Maybe this post helps? https://forum.modalai.com/topic/1097/subscribe-to-voxl_mpa_to_ros-topics/2?_=1660186237636
-
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.