Introduction to Tutorials

This section contains multiple tutorials on how to achieve basic tasks in ARIAC. Some competitors may find these tutorials useful as a starting point for their own code. Some of these tutorials use both Python and C++ code. The Python code provides the interface to the ROS and ARIAC systems, while the C++ code provides the interface for robot controls using MoveIt.

The code for tutorials can be found in a GitHub repository which is separate from the official NIST ARIAC repository. The code for each tutorial is located in a separate branch of the repository. The branch name is the same as the tutorial name.

A brief description of each tutorial is provided below.

  • Tutorial 1: Create a Competition Package

    • Demonstrates how to create a package and start the competition based on the state of the competition

  • Tutorial 2: Read Data from a Break Beam Sensor

    • Demonstrates how to add a sensor to the sensor configuration file. The sensor is then used to keep track of the number of parts that are spawned on the conveyor belt.

  • Tutorial 3: Read Data from an Advanced Logical Camera

    • Demonstrates how to add a logical camera to the sensor configuration file. The tutorial then retrieves information about parts detected by the camera and print the result in the terminal.

  • Tutorial 4: Read an Order

    • Demonstrates how to retrieve published orders and print the result in the terminal. Multiple OOP Python classes are used to store each order and its contents.

  • Tutorial 5: Move AGVs to Stations

    • Demonstrates how to retrieve information from published assembly tasks and move the AGVs to the correct station. Service calls to lock and move AGVs are used in this tutorial.

  • Tutorial 6: Enable/Disable a Gripper

    • Demonstrates using service calls to activate/deactivate the gripper of the floor robot.

  • Tutorial 7: Move Robots with MoveIt

    • Demonstrates how to use custom services to move the floor and the ceiling robots to their respective home positions. MoveIt is used in this tutorial. The service clients are implemented in Python while the service servers are hosted in C++.

  • Tutorial 8: Move Robots with ROS2 Actions

    • Demonstrates how to control both robots using ROS2 Actions.

Important

Tutorials are meant to be followed in order as each tutorial uses the code from the previous tutorial to which new functionalities and files are added. This allows code from previous tutorials to be used in later tutorials.

Todo

  • Prerequisites: Installing ARIAC.

  • Clone the package ariac_tutorials in the workspace ~/ariac_ws by running the following commands in the terminal:

    cd ~/ariac_ws/src
    git clone https://github.com/jaybrecht/ariac_tutorials
    cd ..
    rosdep install --from-paths src -y --ignore-src
    colcon build
    source install/setup.bash