Skip to content

Latest commit

 

History

History
150 lines (113 loc) · 8.36 KB

README.md

File metadata and controls

150 lines (113 loc) · 8.36 KB

grinder-automation

Overview

This repository contains instructions and necesssary files for setting up a workspace to perform automated testing of material removal using a pneumatic grinder.

grinder-automation Repositories

The .repos file contain references to all repositories (excluding dependencies) required to operate either stationary grinding tests or robot-arm mounted grinding tests. The following are the repositories that will be installed using .repos:

CAUTION: rws_motion_client is a repository for moving grinder on a robot, and for grinder on a robot, the following repositories also need to be checked out in moving-grinder branch: data_gathering, data_gathering_msgs, pcl_processing_ros2, grinder_model, and bag_converter.

grinder-automation Dependencies

The requirement.txt and .pkglist contains all python and apt dependencies required for all the repositories outlined in the .repos file:

  • ros-humble-rosbag2-storage-mcap: Enabled MCAP storage format for rosbags
  • open3d: for pointcloud operations. Note that the used (and currently latest) version requires Numpy < 1.25. Used in pcl_processing_ros2 and lls_processing.
  • libsdl2-dev: Simple DirectMedia Layer(SDL) 2.0 for keyboard repository
  • pyads: A Python wrapper for TwinCAT ADS library. Used in data_gathering
  • concave_hull: A Python library to calculate concave hulls. Used in pcl_processing_ros2
  • pyransac3d: A python library for the RANSAC algorithm. Used inpcl_processing_ros2

For the grinder_automation repositories to work, the following Third party repositories are also required to be built:

  • keyboard_msgs: keyboard ROS2 messages for UR trajectory recording. Used in ur_trajectory_controller. Installation instruction uses a fork created by Luka140
  • abb_ros2: ABB robot ROS2 driver. Used in rws_motion_client. Installation instruction uses a fork created by panin-anan

Aside from above dependencies, the following third party packages are also required to be installed as dependencies by using setup_scancontrol.sh on your docker.

see Installation section for installation instructions

Installation

To install the repositories, navigate to your workspace source folder again (e.g., ~/workspace_folder/src)

cd src

clone this repositories to your workspace source folder and run vcs import using the path to the .repos file, for example the author workspace name is 'BrightSkyRepoLinux':

git clone https://github.com/Luka140/grinder-automation.git
vcs import < /workspaces/BrightSkyRepoLinux/src/grinder-automation/.repos

NOTE: For robot-arm mounted grinding test setup, check out moving-grinder branch of this repository.

To install the dependencies

$DEV_WORKSPACE/src/grinder-automation/setup.sh 
cd src
git clone https://github.com/Luka140/ros2-keyboard.git
git clone https://github.com/panin-anan/abb_ros2.git -b humble
vcs import < abb_ros2/abb.repos
rosdep install -r --from-paths . --ignore-src --rosdistro $ROS_DISTRO -y
cd ..

To install aravis and scancontrol SDK with setup_scancontrol.sh:

$DEV_WORKSPACE/src/grinder-automation/setup_scancontrol.sh 

To build all the packages, follow below sequence because some repositories are dependent on the ROS2 message type repositories

colcon build --packages-select stamped_std_msgs --symlink-install
colcon build --packages-skip rws_motion_client --symlink-install
source install/setup.bash
colcon build --packages-select rws_motion_client --symlink-install
source install/setup.bash

For more information on the usage, Check out https://github.com/Luka140/data_gathering

Hardware setup

This grinder-automation repository works with the following hardware setup for an automated grind:

PLC computer also contains extra IO Field Buses as necessary to connect to a flow control valve, which controls the flow rate and RPM of the Dynafile grinding power tool

A picture showing an example of automated grinding test setup is shown below: image

Test Run Example

First, source installed packages

source install/setup.bash

Before running the entire system, we can check each component by launching the following drivers one by one:

ros2 launch ur_trajectory_controller ur_driver.launch.py
ros2 launch ferrobotics_acf acf.launch.py
ros2 launch micro_epsilon_scancontrol_driver load_driver.launch.py

When all components are confirmed to be connectable to the actual hardware, launch with data_gathering launch file with the following launch parameters:

ros2 launch data_gathering data_gathering.launch.py

Launch Parameters Example:

  • sample = "sample_name_input" (String)

  • plate_thickness = 0.002 (float, in meters)

  • grit = 120 (float)

  • belt_width = 0.025 (float, in meters)

  • pass_length = 0.1 (float, in meters)

  • force_settings = [5, 6, 7] (float 1D array, in Newtons)

  • rpm_settings = [9500, 10000] (float 1D array, in rev/min)

  • feed_rate_settings = [20, 30] (float 1D array, in mm/s)

  • pass_count_settings [10, 15] (int 1D array)

  • repeat_test_count = 1 (int, number of test repeat before scanning for volume removed)

  • all_setting_permutations = False (bool, permutate all possible setting from array if True, go by index if False)

  • initially_prime_new_belt = False (bool, prime belt before grinding)

  • wear_threshold = 5e7 (float, threshold before forcing to change grinding belt)

  • feed_rate_threshold = 45 (float, threshold for setting feed_rate_settings)

  • belt_wear_path = "src/data_gathering/data/belt_data/beltid_14_grit_120.csv" (String, path to belt wear tracking file .csv)

  • motion_client node: 'grinder_spinup_duration' = 4 (float, waiting time before moving grinding belt to the first grind position)

  • acf_node: 'payload' = 2.0 (weight of the parts on acf (in kg), for gravity compensation)