Isaac ROS image_pipeline package for hardware-accelerated image processing in ROS2.

Overview

isaac_ros_image_pipeline

Overview

This metapackage offers similar functionality as the standard, CPU-based image_pipeline metapackage, but does so by leveraging the Jetson platform's specialized computer vision hardware. Considerable effort has been made to ensure that replacing image_pipeline with isaac_ros_image_pipeline on a Jetson device is as painless a transition as possible.

System Requirements

This Isaac ROS package is designed and tested to be compatible with ROS2 Foxy on Jetson hardware.

Jetson

  • AGX Xavier or Xavier NX
  • JetPack 4.6

x86_64

  • CUDA 10.2/11.2 supported discrete GPU
  • VPI 1.1.11
  • Ubuntu 18.04+

Docker

Precompiled ROS2 Foxy packages are not available for JetPack 4.6 (based on Ubuntu 18.04 Bionic). You can either manually compile ROS2 Foxy and required dependent packages from source or use the Isaac ROS development Docker image from Isaac ROS Common based on images from jetson-containers. The Docker images support both Jetson and x86_64 platfroms. The x86_64 docker image includes VPI Debian packages for CUDA 11.2.

Run the following script in isaac_ros_common to build the image and launch the container:

$ scripts/run_dev.sh <optional_path>

You can either provide an optional path to mirror in your host ROS workspace with Isaac ROS packages, which will be made available in the container as /workspaces/isaac_ros-dev, or you can setup a new workspace in the container.

Package Dependencies

Note: `isaac_ros_common' is used for running tests and/or creating a development container. It also contains VPI Debian packages that can be installed natively on a development machine without a container.

Quickstart

  1. Create a ROS2 workspace if one is not already prepared:
    mkdir -p your_ws/src
    Note: The workspace can have any name; the quickstart assumes you name it your_ws.
  2. Clone this metapackage repository to your_ws/src/isaac_ros_image_pipeline. Check that you have Git LFS installed before cloning to pull down all large files.
    cd your_ws/src && git clone https://github.com/NVIDIA-AI-IOT/isaac_ros_image_pipeline
  3. Build and source the workspace:
    cd your_ws && colcon build --symlink-install && source install/setup.bash
  4. (Optional) Run tests to verify complete and correct installation:
    colcon test
  5. Start isaac_ros_image_proc using the prebuilt executable:
    ros2 run isaac_ros_image_proc isaac_ros_image_proc
  6. In a separate terminal, spin up a calibrated camera publisher to /image_raw and /camera_info using any package(for example, v4l2_camera):
    ros2 run v4l2_camera v4l2_camera_node
  7. Observe the rectified image output in grayscale and color on /image_rect and /image_rect_color, respectively:
    ros2 run image_view image_view --ros-args -r image:=image_rect
    ros2 run image_view image_view --ros-args -r image:=image_rect_color

Replacing image_pipeline with isaac_ros_image_pipeline

  1. Add a dependency on isaac_ros_image_pipeline to your_package/package.xml and your_package/CMakeLists.txt. If all desired packages under an existing image_pipeline dependency have Isaac ROS alternatives (see Supported Packages), then the original image_pipeline dependency may be removed entirely.
  2. Change the package and plugin names in any *.launch.py launch files to use [package name] and isaac_ros::image_proc::[component_name] respectively. For a list of all packages, see Supported Packages. For a list of all ROS2 Components made available, see the per-package detailed documentation below.

Supported Packages

At this time, the packages under the standard image_pipeline have the following support:

Existing Package Isaac ROS Alternative
image_pipeline See isaac_ros_image_pipeline
image_proc See isaac_ros_image_proc
stereo_image_proc See isaac_ros_stereo_image_proc
depth_image_proc On roadmap
camera_calibration Continue using existing package
image_publisher Continue using existing package
image_view Continue using existing package
image_rotate Continue using existing package

See also:

  • isaac_ros_apriltag: Accelerated ROS2 wrapper for Apriltag detection
  • isaac_ros_common: Utilities for robust ROS2 testing, in conjunction with launch_test

Tutorial - Stereo Image Pipeline

  1. Connect a compatible Realsense camera (D435, D455) to your host machine.
  2. Build and source the workspace:
    cd your_ws && colcon build --symlink-install && source install/setup.bash
  3. Spin up the stereo image pipeline and Realsense camera node with the launchfile:
    ros2 launch isaac_ros_stereo_image_proc isaac_ros_stereo_image_pipeline_launch.py

Note For best performance on Jetson, ensure that power settings are configured appropriately (Power Management for Jetson).

ROS2 Package API

isaac_ros_image_proc

Overview

The isaac_ros_image_proc package offers functionality for rectifying/undistorting images from a monocular camera setup, resizing the image, and changing the image format. It largely replaces the image_proc package, though the image format conversion facility also functions as a way to replace the CPU-based image format conversion in cv_bridge.

Available Components

Component Topics Subscribed Topics Published Parameters
ImageFormatConverterNode image_raw, camera_info: The input camera stream image: The converted image backends: The VPI backend to use, which is CUDA by default (options: "CPU", "CUDA", "VIC")
encoding_desired: Target encoding to convert to. Note: VIC does not support RGB8 and BGR8 for either input or output encoding.
RectifyNode image, camera_info: The input camera stream image_rect: The rectified image interpolation: The VPI interpolation scheme to use during undistortion, which is Catmull-Rom Spline by default
backends: The VPI backend to use, which is CUDA by default (options: "CUDA", "VIC")
ResizeNode image, camera_info: The input camera stream resized/image, resized/camera_info: The resized camera stream use_relative_scale: Whether to scale in a relative fashion, which is true by default
scale_height: The fraction to relatively scale height by
scale_width: The fraction to relatively scale width by
height: The absolute height to resize to
width: The absolute width to resize to
backends: The VPI backend to use, which is CUDA by default(options: "CPU", "CUDA", "VIC")

isaac_ros_stereo_image_proc

Overview

The isaac_ros_stereo_image_proc package offers functionality for handling image pairs from a binocular/stereo camera setup, calculating the disparity between the two images, and producing a point cloud with depth information. It largely replaces the stereo_image_proc package.

Available Components

Component Topics Subscribed Topics Published Parameters
DisparityNode left/image_rect, left/camera_info: The left camera stream
right/image_rect, right/camera_info: The right camera stream
disparity: The disparity between the two cameras max_disparity: The maximum value for disparity per pixel, which is 64 by default. With TEGRA backend, this value must be 256.
window_size: The window size for SGM, which is 5 by default
backends: The VPI backend to use, which is CUDA by default (options: "CUDA", "TEGRA")
PointCloudNode left/image_rect_color: The coloring for the point cloud
left/camera_info: The left camera info
right/camera_info: The right camera info
disparity The disparity between the two cameras
points2: The output point cloud queue_size: The length of the subscription queues, which is rmw_qos_profile_default.depth by default
use_color: Whether or not the output point cloud should have color. The default value is true.
unit_scaling: The amount to scale the xyz points by

References

[1] D. Scharstein, H. Hirschmüller, Y. Kitajima, G. Krathwohl, N. Nesic, X. Wang, and P. Westling. High-resolution stereo datasets with subpixel-accurate ground truth. In German Conference on Pattern Recognition (GCPR 2014), Münster, Germany, September 2014.

Issues
  • Build fails on Jetson AGX with Jetpack 5.0

    Build fails on Jetson AGX with Jetpack 5.0

    Error description :

    Hello, I've created a new workspace containing only the isaac_ros_common and isaac_ros_image_pipeline packages but the build fails on the isaac_ros_image_proc node.

    System setup :

    ROS Distro - Foxy Hardware - Nvidia Jetson AGX Ubuntu - 20.04 Jetpack version - 5.0.0

    Error message :

    /home/xavier/test/src/isaac_ros_image_pipeline/isaac_ros_image_proc/src/image_format_converter_node.cpp: In function ‘cv::Mat {anonymous}::GetConvertedMat(VPIImageImpl*&, VPIImageImpl*&, VPIStreamImpl*&, const cv::Mat&, uint32_t, std::__cxx11::string, std::__cxx11::string)’:
    /home/xavier/test/src/isaac_ros_image_pipeline/isaac_ros_image_proc/src/image_format_converter_node.cpp:68:5: error: ‘vpiImageCreateOpenCVMatWrapper’ was not declared in this scope
         vpiImageCreateOpenCVMatWrapper(
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /home/xavier/test/install/isaac_ros_common/include/isaac_ros_common/vpi_utilities.hpp:20:25: note: in definition of macro ‘CHECK_STATUS’
         VPIStatus status = (STMT); \
                             ^~~~
    /home/xavier/test/src/isaac_ros_image_pipeline/isaac_ros_image_proc/src/image_format_converter_node.cpp:68:5: note: suggested alternative: ‘vpiImageCreateWrapper’
         vpiImageCreateOpenCVMatWrapper(
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /home/xavier/test/install/isaac_ros_common/include/isaac_ros_common/vpi_utilities.hpp:20:25: note: in definition of macro ‘CHECK_STATUS’
         VPIStatus status = (STMT); \
                             ^~~~
    /home/xavier/test/src/isaac_ros_image_pipeline/isaac_ros_image_proc/src/image_format_converter_node.cpp:81:61: error: too many arguments to function ‘VPIStatus vpiImageLock(VPIImage, VPILockMode)’
       CHECK_STATUS(vpiImageLock(output, VPI_LOCK_READ, &out_data));
                                                                 ^
    /home/xavier/test/install/isaac_ros_common/include/isaac_ros_common/vpi_utilities.hpp:20:25: note: in definition of macro ‘CHECK_STATUS’
         VPIStatus status = (STMT); \
                             ^~~~
    In file included from /home/xavier/test/src/isaac_ros_image_pipeline/isaac_ros_image_proc/src/image_format_converter_node.cpp:28:
    /opt/nvidia/vpi2/include/vpi/Image.h:556:22: note: declared here
     VPI_PUBLIC VPIStatus vpiImageLock(VPIImage img, VPILockMode mode);
                          ^~~~~~~~~~~~
    /home/xavier/test/src/isaac_ros_image_pipeline/isaac_ros_image_proc/src/image_format_converter_node.cpp:82:31: error: ‘VPIImageData’ {aka ‘struct VPIImageDataRec’} has no member named ‘planes’
       cv::Mat output_mat{out_data.planes[0].height, out_data.planes[0].width,
                                   ^~~~~~
    /home/xavier/test/src/isaac_ros_image_pipeline/isaac_ros_image_proc/src/image_format_converter_node.cpp:82:58: error: ‘VPIImageData’ {aka ‘struct VPIImageDataRec’} has no member named ‘planes’
       cv::Mat output_mat{out_data.planes[0].height, out_data.planes[0].width,
                                                              ^~~~~~
    /home/xavier/test/src/isaac_ros_image_pipeline/isaac_ros_image_proc/src/image_format_converter_node.cpp:83:54: error: ‘VPIImageData’ {aka ‘struct VPIImageDataRec’} has no member named ‘planes’
         g_str_to_channels.at(encoding_desired), out_data.planes[0].data,
                                                          ^~~~~~
    /home/xavier/test/src/isaac_ros_image_pipeline/isaac_ros_image_proc/src/image_format_converter_node.cpp:84:34: error: ‘VPIImageData’ {aka ‘struct VPIImageDataRec’} has no member named ‘planes’
         static_cast<size_t>(out_data.planes[0].pitchBytes)};
                                      ^~~~~~
    /home/xavier/test/src/isaac_ros_image_pipeline/isaac_ros_image_proc/src/image_format_converter_node.cpp:84:55: error: no matching function for call to ‘cv::Mat::Mat(<brace-enclosed initializer list>)’
         static_cast<size_t>(out_data.planes[0].pitchBytes)};
                                                           ^
    In file included from /usr/include/opencv4/opencv2/core.hpp:58,
                     from /usr/include/opencv4/opencv2/core/core.hpp:48,
                     from /opt/ros/foxy/include/cv_bridge/cv_bridge.h:43,
                     from /home/xavier/test/src/isaac_ros_image_pipeline/isaac_ros_image_proc/src/image_format_converter_node.cpp:20:
    /usr/include/opencv4/opencv2/core/mat.hpp:2091:5: note: candidate: ‘cv::Mat::Mat(cv::Mat&&)’
         Mat(Mat&& m);
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:2091:5: note:   candidate expects 1 argument, 5 provided
    /usr/include/opencv4/opencv2/core/mat.hpp:1051:14: note: candidate: ‘cv::Mat::Mat(const cv::cuda::GpuMat&)’
         explicit Mat(const cuda::GpuMat& m);
                  ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:1051:14: note:   candidate expects 1 argument, 5 provided
    /usr/include/opencv4/opencv2/core/mat.hpp:1048:37: note: candidate: ‘template<class _Tp> cv::Mat::Mat(const cv::MatCommaInitializer_<_Tp>&)’
         template<typename _Tp> explicit Mat(const MatCommaInitializer_<_Tp>& commaInitializer);
                                         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:1048:37: note:   template argument deduction/substitution failed:
    /usr/include/opencv4/opencv2/core/mat.hpp:1044:37: note: candidate: ‘template<class _Tp> cv::Mat::Mat(const cv::Point3_<_Tp>&, bool)’
         template<typename _Tp> explicit Mat(const Point3_<_Tp>& pt, bool copyData=true);
                                         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:1044:37: note:   template argument deduction/substitution failed:
    /usr/include/opencv4/opencv2/core/mat.hpp:1040:37: note: candidate: ‘template<class _Tp> cv::Mat::Mat(const cv::Point_<_Tp>&, bool)’
         template<typename _Tp> explicit Mat(const Point_<_Tp>& pt, bool copyData=true);
                                         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:1040:37: note:   template argument deduction/substitution failed:
    /usr/include/opencv4/opencv2/core/mat.hpp:1036:51: note: candidate: ‘template<class _Tp, int m, int n> cv::Mat::Mat(const cv::Matx<_Tp, m, n>&, bool)’
         template<typename _Tp, int m, int n> explicit Mat(const Matx<_Tp, m, n>& mtx, bool copyData=true);
                                                       ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:1036:51: note:   template argument deduction/substitution failed:
    /usr/include/opencv4/opencv2/core/mat.hpp:1032:44: note: candidate: ‘template<class _Tp, int n> cv::Mat::Mat(const cv::Vec<_Tp, m>&, bool)’
         template<typename _Tp, int n> explicit Mat(const Vec<_Tp, n>& vec, bool copyData=true);
                                                ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:1032:44: note:   template argument deduction/substitution failed:
    /usr/include/opencv4/opencv2/core/mat.hpp:1028:49: note: candidate: ‘template<class _Tp, long unsigned int _Nm> cv::Mat::Mat(const std::array<_Tp, _Nm>&, bool)’
         template<typename _Tp, size_t _Nm> explicit Mat(const std::array<_Tp, _Nm>& arr, bool copyData=false);
                                                     ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:1028:49: note:   template argument deduction/substitution failed:
    /usr/include/opencv4/opencv2/core/mat.hpp:1024:37: note: candidate: ‘template<class _Tp> cv::Mat::Mat(std::initializer_list<int>, std::initializer_list<_Tp>)’
         template<typename _Tp> explicit Mat(const std::initializer_list<int> sizes, const std::initializer_list<_Tp> list);
                                         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:1024:37: note:   template argument deduction/substitution failed:
    /usr/include/opencv4/opencv2/core/mat.hpp:1020:14: note: candidate: ‘template<class _Tp, class> cv::Mat::Mat(std::initializer_list<_Tp>)’
         explicit Mat(const std::initializer_list<_Tp> list);
                  ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:1020:14: note:   template argument deduction/substitution failed:
    /usr/include/opencv4/opencv2/core/mat.hpp:1015:37: note: candidate: ‘template<class _Tp> cv::Mat::Mat(const std::vector<BufferT>&, bool)’
         template<typename _Tp> explicit Mat(const std::vector<_Tp>& vec, bool copyData=false);
                                         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:1015:37: note:   template argument deduction/substitution failed:
    /usr/include/opencv4/opencv2/core/mat.hpp:997:5: note: candidate: ‘cv::Mat::Mat(const cv::Mat&, const std::vector<cv::Range>&)’
         Mat(const Mat& m, const std::vector<Range>& ranges);
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:997:5: note:   candidate expects 2 arguments, 5 provided
    /usr/include/opencv4/opencv2/core/mat.hpp:987:5: note: candidate: ‘cv::Mat::Mat(const cv::Mat&, const cv::Range*)’
         Mat(const Mat& m, const Range* ranges);
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:987:5: note:   candidate expects 2 arguments, 5 provided
    /usr/include/opencv4/opencv2/core/mat.hpp:977:5: note: candidate: ‘cv::Mat::Mat(const cv::Mat&, const Rect&)’
         Mat(const Mat& m, const Rect& roi);
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:977:5: note:   candidate expects 2 arguments, 5 provided
    /usr/include/opencv4/opencv2/core/mat.hpp:967:5: note: candidate: ‘cv::Mat::Mat(const cv::Mat&, const cv::Range&, const cv::Range&)’
         Mat(const Mat& m, const Range& rowRange, const Range& colRange=Range::all());
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:967:5: note:   candidate expects 3 arguments, 5 provided
    /usr/include/opencv4/opencv2/core/mat.hpp:955:5: note: candidate: ‘cv::Mat::Mat(const std::vector<int>&, int, void*, const size_t*)’
         Mat(const std::vector<int>& sizes, int type, void* data, const size_t* steps=0);
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:955:5: note:   candidate expects 4 arguments, 5 provided
    /usr/include/opencv4/opencv2/core/mat.hpp:941:5: note: candidate: ‘cv::Mat::Mat(int, const int*, int, void*, const size_t*)’
         Mat(int ndims, const int* sizes, int type, void* data, const size_t* steps=0);
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:941:5: note:   conversion of argument 1 would be ill-formed:
    /usr/include/opencv4/opencv2/core/mat.hpp:926:5: note: candidate: ‘cv::Mat::Mat(cv::Size, int, void*, size_t)’
         Mat(Size size, int type, void* data, size_t step=AUTO_STEP);
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:926:5: note:   candidate expects 4 arguments, 5 provided
    /usr/include/opencv4/opencv2/core/mat.hpp:910:5: note: candidate: ‘cv::Mat::Mat(int, int, int, void*, size_t)’
         Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP);
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:910:5: note:   conversion of argument 1 would be ill-formed:
    /usr/include/opencv4/opencv2/core/mat.hpp:894:5: note: candidate: ‘cv::Mat::Mat(const cv::Mat&)’
         Mat(const Mat& m);
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:894:5: note:   candidate expects 1 argument, 5 provided
    /usr/include/opencv4/opencv2/core/mat.hpp:884:5: note: candidate: ‘cv::Mat::Mat(const std::vector<int>&, int, const Scalar&)’
         Mat(const std::vector<int>& sizes, int type, const Scalar& s);
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:884:5: note:   candidate expects 3 arguments, 5 provided
    /usr/include/opencv4/opencv2/core/mat.hpp:874:5: note: candidate: ‘cv::Mat::Mat(int, const int*, int, const Scalar&)’
         Mat(int ndims, const int* sizes, int type, const Scalar& s);
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:874:5: note:   candidate expects 4 arguments, 5 provided
    /usr/include/opencv4/opencv2/core/mat.hpp:863:5: note: candidate: ‘cv::Mat::Mat(const std::vector<int>&, int)’
         Mat(const std::vector<int>& sizes, int type);
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:863:5: note:   candidate expects 2 arguments, 5 provided
    /usr/include/opencv4/opencv2/core/mat.hpp:856:5: note: candidate: ‘cv::Mat::Mat(int, const int*, int)’
         Mat(int ndims, const int* sizes, int type);
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:856:5: note:   candidate expects 3 arguments, 5 provided
    /usr/include/opencv4/opencv2/core/mat.hpp:848:5: note: candidate: ‘cv::Mat::Mat(cv::Size, int, const Scalar&)’
         Mat(Size size, int type, const Scalar& s);
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:848:5: note:   candidate expects 3 arguments, 5 provided
    /usr/include/opencv4/opencv2/core/mat.hpp:837:5: note: candidate: ‘cv::Mat::Mat(int, int, int, const Scalar&)’
         Mat(int rows, int cols, int type, const Scalar& s);
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:837:5: note:   candidate expects 4 arguments, 5 provided
    /usr/include/opencv4/opencv2/core/mat.hpp:826:5: note: candidate: ‘cv::Mat::Mat(cv::Size, int)’
         Mat(Size size, int type);
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:826:5: note:   candidate expects 2 arguments, 5 provided
    /usr/include/opencv4/opencv2/core/mat.hpp:818:5: note: candidate: ‘cv::Mat::Mat(int, int, int)’
         Mat(int rows, int cols, int type);
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:818:5: note:   candidate expects 3 arguments, 5 provided
    /usr/include/opencv4/opencv2/core/mat.hpp:810:5: note: candidate: ‘cv::Mat::Mat()’
         Mat() CV_NOEXCEPT;
         ^~~
    /usr/include/opencv4/opencv2/core/mat.hpp:810:5: note:   candidate expects 0 arguments, 5 provided
    make[2]: *** [CMakeFiles/image_format_converter_node.dir/build.make:63: CMakeFiles/image_format_converter_node.dir/src/image_format_converter_node.cpp.o] Error 1
    make[1]: *** [CMakeFiles/Makefile2:168: CMakeFiles/image_format_converter_node.dir/all] Error 2
    make: *** [Makefile:141: all] Error 2
    ---
    Failed   <<< isaac_ros_image_proc [15.8s, exited with code 2]
    Aborted  <<< isaac_ros_stereo_image_proc [1min 4s]                                        
    

    Am i missing any dependency ? Thank you in advance !

    opened by cordu69 0
  • VPI_ERROR_OUT_OF_MEMORY: Not enough space for resource allocation

    VPI_ERROR_OUT_OF_MEMORY: Not enough space for resource allocation

    Hello,

    after running isaac_ros_image_proc or isaac_ros::image_proc::RectifyNode for a few minutes, it seems to overflow the GPU Memory. In this case, the following error message is shown:

    [component_container-2] [ERROR] [1645635774.159060082] [rectify_node]: Error while rectifying image: /workspaces/isaac_ros-dev/src/isaac_ros_image_pipeline/isaac_ros_image_proc/src/rectify_node.cpp:305: VPI_ERROR_OUT_OF_MEMORY: Not enough space for resource allocation

    It is running inside a container created by the latest isaac_ros_common and runs on amd64 with a Titan RTX, Driver Version: 470.103.01 and CUDA Version: 11.4 on host OS: Ubuntu 20.04 LTS with Docker 20.10.10. I could also provide some logs, but i don't know which additional information would be helpful.

    Kind regards, Patrick

    opened by poett1 4
Releases(v0.9.0-ea1)
Owner
NVIDIA AI IOT
NVIDIA AI IOT
Apache Arrow is a multi-language toolbox for accelerated data interchange and in-memory processing

Apache Arrow Powering In-Memory Analytics Apache Arrow is a development platform for in-memory analytics. It contains a set of technologies that enabl

The Apache Software Foundation 9.7k Jun 25, 2022
Raspberry Pi Pico (RP2040) and Micro-ROS (ROS 2) Integration

The Pico is an amazing microcontroller and I couldn't wait for ROS 2 support or Arduino Core, so here is my approach. Once the Arduino Core for RP2040 is out it will be easier to use micro_ros_arduino.

Darko Lukić 19 Jun 19, 2022
image_projection is a ROS package to create various projections from multiple calibrated cameras.

image_projection Overview image_projection is a ROS package to create various projections from multiple calibrated cameras. Use cases involve: Rectify

Technische Universität Darmstadt ROS Packages 104 Jun 23, 2022
A ros package for robust odometry and mapping using LiDAR with aid of different sensors

W-LOAM A ros package for robust odometry and mapping using LiDAR with aid of different sensors Demo Video https://www.bilibili.com/video/BV1Fy4y1L7kZ?

Saki-Chen 45 Jun 14, 2022
A ROS package for mobile robot localization with 2D LiDAR

mcl_ros About mcl_ros mcl_ros is a ROS package for mobile robot localization with 2D LiDAR. To implement localization, Monte Carlo localization (MCL)

Naoki Akai 45 May 13, 2022
ROS package to calibrate the extrinsic parameters between LiDAR and Camera.

lidar_camera_calibrator lidar_camera_calibrator is a semi-automatic, high-precision, feature-based camera and LIDAR extrinsic calibration tool. In gen

Networked Robotics and Sytems Lab 39 Jun 21, 2022
Godot module to use ROS2 within Godot

godot_ros This repo is a Godot Module meant to connect Robotic Operating System 2 (ROS2) and the Godot Game Engine. Quick Start Make sure to have both

Evan Flynn 23 Jun 23, 2022
A ROS2 port of rosbag_snapshot

rosbag2_snapshot Solution for this rosbag2 issue which acts similarly to rosbag_snapshot. It is added as a new package here rather than patching rosba

Gaia Platform 9 Mar 29, 2022
ROS2 support for smartmicro radars.

ROS2 smartmicro radar driver Purpose / Use cases There is a need for a node that will interface with a smartmicro radar driver and publish the data ac

null 16 May 23, 2022
A software serial driver package by using the hardware timer capture / comparison functionality.

Soft serial 1.简介 Soft serial 是利用硬件定时器捕获/比较功能实现软件模拟串口的软件包。 1.1目录结构 Soft serial 软件包目录结构如下所示: soft_serial ├───inc // 头文件目录 │

齐永忠 2 Oct 2, 2021
TelloTalent Robomaster TT hardware package for programming the esp32 included with it

TelloTalent esp32 for arduino IDE TelloTalent Robomaster TT hardware package for programming the esp32 included with it Notes All this files are extra

MCTRACO 2 Nov 8, 2021
A CUDA-accelerated cloth simulation engine based on Extended Position Based Dynamics (XPBD).

Velvet Velvet is a CUDA-accelerated cloth simulation engine based on Extended Position Based Dynamics (XPBD). Why another cloth simulator? There are a

Vital Chen 10 Jun 9, 2022
Second life for famous JPEGView - fast and tiny viewer/editor for JPEG, BMP, PNG, WEBP, TGA, GIF and TIFF images with a minimalist GUI and base image processing.

JPEGView-Image-Viewer-and-Editor Updated Dec 07 2021. Version 1.1.1.0 has been released. Download link1, link2 added. Second life for famous JPEGView

Ann Hatt 20 Jun 9, 2022
An image processing application & library built in C++20 and the Qt Framework.

Image Processing This is an image processing application & library built using C++ and Qt. It contains set of the most common image processing algorit

Rami Zouari 9 Jun 8, 2022
A ROS based Open Source Simulation Environment for Robotics Beginners

A ROS based Open Source Simulation Environment for Robotics Beginners

Sulegeyixiu 101 Jun 25, 2022
This project contains the main ROS 2 packages of Xiaomi CyberDog®.

Xiaomi CyberDog ROS 2 文档包含简体中文和English 简介 - Introduction 本项目包含小米铁蛋®的ROS 2主要功能包. This project contains the main ROS 2 packages of Xiaomi CyberDog®. 基本信

null 333 Jun 27, 2022
Developing a Drone from scratch in ROS Gazebo

Project Building a drone and developing its control system. Table of Contents Project Table of Contents About The Project Tech Stack File Structure Ge

null 15 Mar 22, 2022
ROS packages for Scout 2.0

ROS packages for Scout 2.0

ROAS 3 Jun 14, 2022
Dobot MG400 callaborative robot with ROS

MG400Robot Chinese version of the README -> please click here Building ubuntu16.04 cd $HOME/catkin_ws/src git clone https://github.com/Dobot-Arm/mg40

Dobot 5 Jun 15, 2022