Startup

The following instructions guide you through the process of setting up either a single or dual UR3 robotic arm system in simulation or in our lab.

Important

In each terminal make sure you:

  1. source the underlay i.e. source /opt/ros/jazzy/setup.bash. This is so the terminal has the paths to the ros2 and colcon commands. This command can be placed in the .bashrc file so it is sourced automatically on terminal startup.

  2. source the overlay i.e. source install/setup.bash from your ros workspace’s install directory.

Warning

The single arm setup is outdated. Use the dual arm setup and set the arm not being used to mock hardware if you want to control one arm.

Simulation Setup

Open a new terminal for each step and source the underlay and overlay.

  1. To launch the driver:

    ros2 launch crm_dual_control start_robots.launch.py alice_use_mock_hardware:=true bob_use_mock_hardware:=true launch_rviz:=false
    
    ros2 launch crm_control start_robot.launch.py use_mock_hardware:=true launch_rviz:=false
    

    If you want to print with both arms add the argument alice_end_effector:=hot_end.

  2. To launch moveit open a new terminal

    ros2 launch crm_dual_moveit_config dual_ur_moveit.launch.py
    
    ros2 launch crm_moveit_config ur_moveit.launch.py
    

    If you want to print with both arms add the argument alice_end_effector:=hot_end.

  3. Now start the duet_board fake communication as you are in simulation

    ros2 run duet_communication {board}_fake_service
    

    Where {board} is the control board to used (either bob or alice).

Danger

Delete the initial lines that lower the z height from the starting point of the gcode file otherwise the end effector will force through the bed!!! They look like G1 Z-1.

  1. We are ready to print a part using the gcode.

    ros2 run printer print {robot} <path-to-gcode>
    

    Where {robot} is the arm used for printing (either bob or alice).

There’s a test gcode file in the printer directory of the crm_core repository.

Physical Hardware Setup

Open a new terminal for each step and source the underlay and overlay.

  1. To launch the driver with both arms in real hardware mode:

    ros2 launch crm_dual_control start_robots.launch.py alice_use_mock_hardware:=false bob_use_mock_hardware:=false launch_rviz:=false
    
    ros2 launch crm_control start_robot.launch.py use_mock_hardware:=true launch_rviz:=false
    

    If you want to print with both arms add the argument alice_end_effector:=hot_end.

  2. To launch moveit open a new terminal

    ros2 launch crm_dual_moveit_config dual_ur_moveit.launch.py
    
    ros2 launch crm_moveit_config ur_moveit.launch.py
    

    If you want to print with both arms add the argument alice_end_effector:=hot_end.

  3. Now start the duet_board fake communication as you are in simulation

    ros2 run duet_communication {board}_service
    

    Where {board} is the control board to use (either bob or alice).

Danger

Delete the initial lines that lower the z height from the starting point of the gcode file otherwise the end effector will force through the bed!!! They look like G1 Z-1.

  1. We are ready to print a part using the gcode.

    ros2 run printer print {robot} <path-to-gcode>
    

    Where {robot} is the arm used for printing (either bob or alice).

There’s a test gcode file in the printer directory of the crm_core repository.