@Zachary-Lowell-0 Yes I was able to install docker of u22.04, but at the same time when I was running everything on natively in melodic on the drone I was able to use 3rd party libraries like PCL ROS and I was able to install it, this was because the ROS installation was left on the user. I just thought it would be same with ROS2. Although now I have set up ARM64 dockers in my desktop ubuntu so now I can make as many changes on my desktop and just push the new docker
Latest posts made by Darshit Desai
-
RE: ROS foxy PCL ROS
-
Unable to see rostopics published by mpatoros2 foxy in my humble docker container
Pretty much what the topic line says
-
Run code on boot from docker in voxl2
Hi @Moderator I saw in the docs that for voxl1 there was a thing which allowed this functionality, does the same one exist in voxl2?
-
RE: ROS foxy PCL ROS
@Moderator I just wanted to clarify something, if I am building a ubuntu ros 22.04 humble image it should be arm64 version right? Specifically arm64/v8, this is the architecture which VOXL2 has right?
-
RE: ROS foxy PCL ROS
@Moderator I have tried building from source the pcl_conversions and pcl_msgs interfaces and using it in my workspace but when I try to build it, I get this very huge error which I cannot understand the context, So I thought that pcl_conversions might be causing that error so I removed that package entirely from my workspace and modified my code not to use it, and I almost get the same huge error. I am not sure why?
It is able to build one package which just does a simple static tf transform but other than that it is not able to build the ones doing rigid body transformations.
I have attached the files of the simple tf static publisher package here which the ros2 foxy is able to build: https://drive.google.com/drive/folders/1ztfUPCP5LBFMhwHVekq7Z8GiAV2sKDT7?usp=sharing
I am also able to build the pcl_conversions and pcl_msgs from source in my workspace successfully, the tee'd output is here: https://drive.google.com/file/d/1uUnfCSvEmzaRdQDuqrffW-mAJky9wCao/view?usp=drive_link
The only main package which is the backbone of my sensor fusion code isn't able to build both with the pcl_conversions package included and without it which just uses vanilla ros functions, their package links are here,
pcl_msgs: https://github.com/ros-perception/pcl_msgs/tree/ros2
pcl_conversions: https://github.com/ros-perception/perception_pcl/tree/ros2Vanilla ros function rigid body transformer tee'd error file: https://drive.google.com/file/d/1yVQS8FGBL1S6wfqPgEWjVe9JiV7SbR4g/view?usp=drive_link
Package link: https://drive.google.com/drive/folders/1e_ucTv8ohAXtaPGEpLEprF6KQB8hN_O9?usp=sharingPCL_conversion included rigid body transformer tee'd build error file: https://drive.google.com/file/d/1uL2qk2i4GmZD0wu4TtNs3l_ACGUiZLCA/view?usp=sharing
package link: https://drive.google.com/drive/folders/1Ep-Vn_Hr-xDXreqI9nW1r5lzcfx929Z1?usp=sharingNote installing packages from source is very tedious I don't know why the functionality of apt install was removed and the ros2-foxy is being built from a rosinstall generator, but doing such a thing makes the use of ros2 limited to just mpatoros2 node which isn't much because I still need to install a docker container now to use ros2 libraries if this doesn't work. (https://gitlab.com/voxl-public/voxl-sdk/third-party/voxl-ros2-foxy/-/blob/master/build.sh?ref_type=heads#L139)
-
RE: ROS foxy PCL ROS
@Moderator it seems that since the voxl-ros2-foxy is just using a rosinstall generator its just installing lesser than bare bones foxy which is needed for building mpatoros2. If I mention pcl_ros in the rosdep install line and the rosinstall generator line would that also make a .deb file with that installed in it?
#!/bin/bash # # builds everything without installing # # Modal AI Inc. 2023 # author: zachary.lowell@ascendengineer.com set -e AVAILABLE_PLATFORMS="qrb5165" print_usage(){ echo "" echo " Build the current project based on platform target." echo "" echo " Usage:" echo "" echo " ./build.sh qrb5165" echo " Build 64-bit binaries for qrb5165" echo "" echo "" } case "$1" in qrb5165) ROS_DIST="foxy" ;; *) print_usage exit 1 ;; esac current_dir=$(pwd) sudo apt purge --auto-remove -y cmake sudo apt update sudo apt install --fix-missing sudo apt install -y python3-pip sudo apt install -y software-properties-common sudo apt install -y ca-certificates gpg wget sudo apt-get update # manually obtain copy of keyring test -f /usr/share/doc/kitware-archive-keyring/copyright || wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | sudo tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null echo "adding kitware repository to sources" echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic main' | sudo tee /etc/apt/sources.list.d/kitware.list >/dev/null sudo apt-get update #sudo apt-get install kitware-archive-keyring sudo apt install -y cmake sudo apt install -y qtcreator qtbase5-dev qt5-qmake python3 -m pip install lark ROS_PKG=ros_base ROS_DISTRO=foxy # Core ROS2 workspace - the "underlay" ROS_BUILD_ROOT=/opt/ros/${ROS_DISTRO}-src ROS_INSTALL_ROOT=/opt/ros/${ROS_DISTRO} locale # check for UTF-8 sudo apt update && sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 export LANG=en_US.UTF-8 # Add the ROS 2 apt repository sudo apt-get update sudo apt-get install -y --no-install-recommends \ curl \ wget \ gnupg2 \ lsb-release sudo rm -rf /var/lib/apt/lists/* wget --no-check-certificate https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc sudo apt-key add ros.asc sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list' # install development packages sudo apt-get update sudo apt-get install -y libeigen3-dev sudo cp -r /usr/include/eigen3/Eigen /usr/include sudo apt-get install -y --no-install-recommends \ build-essential \ git \ libbullet-dev \ libpython3-dev \ python3-flake8 \ python3-pip \ python3-pytest-cov \ python3-rosdep \ python3-setuptools \ python3-vcstool \ python3-rosinstall-generator \ python3-numpy \ libasio-dev \ libtinyxml2-dev \ libcunit1-dev sudo rm -rf /var/lib/apt/lists/* # install some pip packages needed for testing python3 -m pip install -U \ colcon-common-extensions \ argcomplete \ flake8-blind-except \ flake8-builtins \ flake8-class-newline \ flake8-comprehensions \ flake8-deprecated \ flake8-docstrings \ flake8-import-order \ flake8-quotes \ pytest-repeat \ pytest-rerunfailures \ pytest # compile yaml-cpp-0.6, which some ROS packages may use (but is not in the 18.04 apt repo) git clone --branch yaml-cpp-0.6.0 https://github.com/jbeder/yaml-cpp yaml-cpp-0.6 && \ cd yaml-cpp-0.6 && \ mkdir build && \ cd build && \ cmake -DBUILD_SHARED_LIBS=ON .. && \ make -j$(nproc) && \ sudo cp libyaml-cpp.so.0.6.0 /usr/lib/aarch64-linux-gnu/ && \ sudo ln -s /usr/lib/aarch64-linux-gnu/libyaml-cpp.so.0.6.0 /usr/lib/aarch64-linux-gnu/libyaml-cpp.so.0.6 # https://answers.ros.org/question/325245/minimal-ros2-installation/?answer=325249#post-id-325249 sudo mkdir -p ${ROS_BUILD_ROOT}/src && \ cd ${ROS_BUILD_ROOT} sudo sh -c "rosinstall_generator --deps --rosdistro ${ROS_DISTRO} ${ROS_PKG} pcl_ros pcl_conversions launch_xml launch_yaml example_interfaces > ros2.${ROS_DISTRO}.${ROS_PKG}.rosinstall && \ cat ros2.${ROS_DISTRO}.${ROS_PKG}.rosinstall && \ vcs import src < ros2.${ROS_DISTRO}.${ROS_PKG}.rosinstall" # download unreleased packages sudo sh -c "git clone --branch ros2 https://github.com/Kukanani/vision_msgs ${ROS_BUILD_ROOT}/src/vision_msgs && \ git clone --branch ${ROS_DISTRO} https://github.com/ros2/demos demos && \ cp -r demos/demo_nodes_cpp ${ROS_BUILD_ROOT}/src && \ cp -r demos/demo_nodes_py ${ROS_BUILD_ROOT}/src && \ rm -r -f demos" # install dependencies using rosdep sudo apt-get update cd ${ROS_BUILD_ROOT} sudo rm -rf /etc/ros/rosdep/sources.list.d/20-default.list sudo rosdep init rosdep update && \ rosdep install --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} -y --skip-keys "console_bridge fastcdr fastrtps rti-connext-dds-5.3.1 urdfdom_headers qt_gui" pcl_ros pcl_conversions && \ sudo rm -rf /var/lib/apt/lists/* # build it! sudo mkdir -p ${ROS_INSTALL_ROOT} # sudo required to write build logs sudo colcon build --merge-install --install-base ${ROS_INSTALL_ROOT} --packages-skip vision_msgs_rviz_plugins cd $current_dir mkdir -p misc_files/opt/ros/${ROS_DIST}/ cp -r /opt/ros/foxy/* misc_files/opt/ros/${ROS_DIST}/ chmod -R 777 misc_files
-
RE: voxl mpa to ros melodic voxl2 aidetection message header file missing
@Moderator @Zachary-Lowell-0 there is a similar issue with trying to include the message type AIDetection.h in ROS2 mpatoros2.
-
ROS foxy PCL ROS
Hi for VOXL2 I have tried installing PCL ROS for foxy it always gives an error unable to locate packages, may I know any alternatives or plans to include this? I checked the same in my native desktop ubuntu18.04+foxy, it is able to install the same
-
RE: voxl mpa to ros melodic voxl2 aidetection message header file missing
Hi @Zachary-Lowell-0 , actually there is one thing I want to clarify I am not building the source here, but I am simply including the rosidl generated header file of the AIDetection message. Ideally and message if it is installed in the /opt/{ROS_DISTRO} system it should have header files folder inside that path, for example std_msgs has a header file inside the path /opt/{ROS_DISTRO}/include/std_msgs/std_msgs.h I was just trying to include that file.
About installation:
I install melodic from ros docs
The voxl_mpa_to_ros I assume is already there in the SDK 1.1.2 update. so I donot need to install it explicitly
Once I install ros I can use roslaunch to launch voxl_mpa_to_ros as you showedMy problem is when I include this AIDetection message in my other nodes which subscribe to tflite_data topic it doesn't parse it in the /opt folder and its not even there
You can check the following link of my code to understand what I am trying to do:
https://github.com/darshit-desai/Project_LegionAir/blob/master/tflite_prop_detection/src/tflite_prop_detection_cpp_node.cpp#L17C1-L17C41 -
RE: VOXL2 starling bootable images
@Eric-Katzfey as far as I know docker image in the voxl2 ecosystem is used for installing stuff like a different version of Ros or opencv or some other dependency. In my case I modified a lot of back end services and the .conf files, that along with some of the Ros dependencies make the process of cloning a drone atleast 1.5 hr long. Making a docker image for ros dependencies and installing it would shave off only half off that time the other half I would still need to reconfigure voxl2 sdk as my other drone. For 4-5 drones it's fine, but for more 5 it's not