Isaac ROS AprilTag ros1_bridge Tutorial

Overview

This tutorial walks you through a graph to estimate the 6DOF pose of AprilTags using isaac_ros_apriltag running ROS 2 and a ROS 1 rosbag containing images. The image data will be published from the ROS 1 bag and sent to ROS 2 for computation and the tag detections result will be visualized in ROS 1 using the command line rostopic echo tool.

https://media.githubusercontent.com/media/NVIDIA-ISAAC-ROS/.github/main/resources/isaac_ros_docs/concepts/fiducials/apriltag/ros1-bridge-flow-chart.png/

Tutorial Walkthrough

  1. Complete the quickstart here.

  2. Complete the Isaac ROS ros1_bridge Setup Guide.

  3. Start the Noetic container:

    docker run -it --cap-add=SYS_PTRACE --privileged --network host --pid host --runtime nvidia --entrypoint /usr/local/bin/scripts/workspace-entrypoint.sh --name nitros_bridge --rm nitros_bridge:latest /bin/bash
    
  4. Source ros1_noetic and run roscore:

    source /opt/ros/noetic/setup.bash && \
     roscore
    
  5. Attach the second terminal to the Noetic docker container:

    docker exec -it nitros_bridge /bin/bash
    
  6. Clone isaac_ros_apriltag into the Noetic container:

    cd /tmp && \
     git clone https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_apriltag.git
    
  7. Pull down a ROS 1 rosbag of sample data:

    cd /tmp/isaac_ros_apriltag/ && \
     git lfs pull -X "" -I "resources/rosbags/ros1_bridge_apriltag.bag"
    
  8. Inside the container, build and source the workspace:

    cd /workspaces/isaac_ros-dev/ && \
     source install/setup.bash && \
     export ROS_MASTER_URI=http://localhost:11311 && \
     ros2 run ros1_bridge dynamic_bridge --bridge-all-topics
    
  9. Attach the third terminal to the Noetic docker container:

    docker exec -it nitros_bridge /bin/bash
    
  10. Play the AprilTag ROS1 rosbag in a loop:

    source /opt/ros/noetic/setup.bash && \
     cd /tmp/isaac_ros_apriltag/resources/rosbags && \
     rosbag play -l ros1_bridge_apriltag.bag
    
  11. Launch the Isaac ROS Dev Docker container using the run_dev.sh script:

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
 ./scripts/run_dev.sh -d ${HOME}/workspaces -a --pid=host
  1. Run the isaac_ros_apriltag node:

    cd /workspaces/isaac_ros-dev && \
     source install/setup.bash && \
     ros2 launch isaac_ros_apriltag isaac_ros_apriltag.launch.py
    
  2. Attach the forth terminal to the Noetic docker container:

    docker exec -it nitros_bridge /bin/bash
    
  3. Use rostopic echo to print the tag detections in the container:

    cd /workspaces/isaac_ros_1-dev && \
     source install_isolated/setup.bash && \
     rostopic echo /tag_detections
    
    https://media.githubusercontent.com/media/NVIDIA-ISAAC-ROS/.github/main/resources/isaac_ros_docs/concepts/fiducials/apriltag/ros1_tag_echo.png/