Posts

Getting Started with ABB & ROS Industrial

Hi, I succeeded in following the tutorials found in the  abb/Tutorials  for installing and operating an ABB robot using the ROS Industrial interface. This tutorial covered multiple things: 1. Walk-through guide of installing the ROS Server code on the ABB robot controller and in RobotStudio. 2. Running the ABB ROS Server to execute motion commands sent from the ROS client node. I also followed this tutorial  to run motion commands from a Linux PC. This tutorial covered the commands that I needed to get started of moving the ABB in both RobotStudio and the physical robot. To enable the robot in RobotStudio from my Windows PC to move from commands sent by the ROS client in my Linux PC, I had to disable some firewall securities. Using these two web pages ( Google Forum  and  Allow Pings ), I was able to allow communication between two PCs. Looking at the rapid code provided by the abb/Tutorials, I figured that I needed to run the physical robot in...

Camera Setup - Updated

Image
Hi, This week, I updated the camera setup to implement with the overall system. After using the previous camera setup for a couple of weeks now, I found it to be fragile and often moved a lot. To progress with the project and actually get to use the real robot, I had to create a robust table frame that I plan to use in the final demo. Final CAD for Camera Setup Note: The brown table is where the ABB will be mounted on. It has the same dimension as the table that the ABB is currently mounted on. Physical Camera Setup  The image above shows the actual camera setup. I still have to print the part that the camera will be mounted on. In addition, the ABB is currently mounted on two pieces of 8mm thick MDF that contains holes for m8 bolts. I plan on using these holes to hold the table in place to make calibration between the table and the robot easier. Immanuel

Linear Regression - Bounce Trajectory 2

Image
Hi, In the previous method, I described a method for handling bounce trajectories using Linear Regression. Below is an image showcasing another way to predict a bounce without swapping the axis and the need of creating new coordinates from the point that the slope intercepts the Y-axis. Code explained: 1. Calculate slope between atleast two points, as soon as the puck changes direction and is moving towards the ABB. 2. Using the slope, I predict the y position of the puck at the centre of the table. 3. If the prediction is greater than the table height,the error is calculated. 4. A new trajectory called Yc is created by reflecting the error from the end of the table. Video of two softbots playing with each other using two different methods Immanuel

Linear Regression - Bounce Trajectory 1

Image
Hi, In the previous post, I described a method for predicting a future puck position by using linear regression to calculate the slope between at least two points when the puck passes a specified x-coordinate. This method works well in simulation as the paddle could move instantaneously to intercept the puck at any given time. However, in the real-world, the ABB might not be able to move as quickly or as safely as I would want it to like the simulation. Therefore, instead of predicting the trajectory of a puck when it passes an x-coordinate, a possible solution is to predict as soon as the puck is moving towards the ABB so that the ABB does not have to move as fast. The problem with this method is handling possible bounces when the puck hits the table edges before a point that the ABB can intercept the puck. A possible solution to handle bounce trajectories is shown below. This method works by swapping the axis of the table and finding out the point that the slope interce...

Trajectory Prediction - Linear Regression

Image
Hi, If I know the coordinate of the puck within a period of time, I can calculate the change of the puck's y-coordinate in respect to its x-coordinate. Plotting multiple puck's positions in a graph shows the puck's direction of travel and most importantly, I can estimate a future position using the line of best fit, also called regression line. Below is an example of how I can predict the trajectory of the puck using equation: Y = mX + b Where; Y = mean of all y-coordinates X = mean of all x-coordinates m = slope of the line b = intercept point of line in the Y-axis Applying the knowledge gained of calculating linear regression using the least-square method and wonderful tutorials online, I have created a function to calculate m and b to predict a y-coordinate given an x-coordinate. Video of softbots playing with each other using two different methods The video below shows the paddles moving autonomously. Note that the paddle on the left i...

Following the puck's y-coordinate

Image
Hi, This week I have explored ways to defend the robot's goal. I have followed a tutorial to create a game using the turtle module on Python. The tutorial is a two-player pong game that uses keyboard keys to move the paddle. Click here to view the tutorial. I have amended the tutorial to program the paddles to move autonomously. Video of two softbots following the ball and playing with each other The video above shows two softbots playing with each other. I programmed the paddles to follow the y-coordinates of the ball and move accordingly. Although, this is not trajectory prediction, it is a plausible solution to defend the robot's goal. However, with all robotic systems in simulation and the physical world, I expect that the robot will not be able to move in relation to the speed of the ball. I have to explore a method to predict the location of the ball in the y-axis given an x-coordinate to avoid moving the robot when it is not needed. Immanuel

Upgrading hardware to deal with lighting conditions

Hi, Following my previous post, I plan on upgrading the hardware setup by using LEDs to increase light intensity around the table to improve puck detection. This will hopefully provide enough light that the camera can detect the puck through all areas of the table. I plan on calculating the initial brightness of the table by its histogram and depending on the results will yield different LED behaviours e.g. low light intensity will turn on the LED strip. In addition, to make my system more sophisticated, I can calculate the areas with low light intensity within the camera frame and turn on specific regions of the LED strip thus reducing the need to turn the whole LED strip. Although, this will be future work as I plan on sticking with my Gantt Chart and progress with my project. Immanuel