About Pneumatic Robots for Hobbyists

A pneumatic system uses compressed air to perform a certain task. You have definitely experienced such a system at a dentist or if you have been riding a bus across the city. The doors of the bus are closed and opened with such a system.

In robotics, the pneumatic systems are used to replace servo and electric motors. In other words, a pneumatic motor acts to move a certain load.

Such a system is simple. Inside of a pneumatic system is a cylinder piston that moves up and down to create pressure.

Even if a pneumatic system is simple, we rarely find a hobby project that uses pneumatic pistons to act on the arms, legs or other components of the robot.

The most common projects using pneumatic systems are in the film industry. Disney uses compressed air to move various movie characters. A pneumatic system is the best hardware to build a robot with realistic and fluid movements.

a pneumatic robot

a pneumatic robot (source)


Read more →

uArm Swift Pro

ufactory released the new uArm Swift Pro robotic arm. The robotic arm is open-source, and as we expected, the arm is controlled by an Arduino Mega 2560 board.

Besides the double price compared with the standard version uArm Swift, the Pro version comes with improvements for 3D printing and for operations requiring computer vision.

Because I said something about the price, the Swift Pro version has a price of $1,129.95 while Swift has a price tag of $499.00. Both prices do not include the shipping.

Leaving aside the fact that the arm has been designed for hobbyists or for use in educational courses, Swift Pro has some interesting features that can also be used by small businesses.

ROS and computer vision. Two concepts that support object recognition and pick & place applications for small objects up to 500g. The 0.2mm precision helps to accurately handle objects or print 3D objects.

Swift Pro supports several programming methods. Aside from visual programming (it’s more for beginners or simple applications), we come to programming with Arduino sketches or Python for ROS.

Below are the technical specifications of the arm:

  • Arduino Mega 2560 Motherboard
  • Customized Gearbox & Stepper Motors
  • 12-bit Encoder Position Feedback
  • 4 Degrees of Freedom
  • Max Payload: 500g
  • Repeatability: 0.2mm
  • Working Range: 50mm–320mm
  • Max Speed: 100mm/s
  • Input Voltage: 12VDC
  • Bluetooth 4.0
uArm Swift Pro

uArm Swift Pro

How to use rosserial with two Arduinos and Raspberry Pi

Arduino is a good development board for reading data from various sensors and for controlling the robot’s DC motors. Raspberry Pi is a very good Linux computer running ROS. To benefit from both systems, the easiest way is to connect and make them communicate through ROS nodes.

In this tutorial, I’ll show you how to use two Arduino boards as an extension of the Raspberry Pi computer. For this tutorial, you need Raspberry Pi to be able to identify each Arduino board. Such a system becomes necessary when the robot’s architecture is complex.

At one time, only one ROS node can run on an Arduino board. So in this tutorial, I will use one of the two Arduino boards to generate a random number, and a second Arduino board to control the LED connected to pin 13. On both boards, I will run one ROS node that will send or receive data according to the chart below.

How To use rosserial with Two Arduinos and Raspberry Pi

How To use rosserial with Two Arduinos and Raspberry Pi

Read more →

Fruit Harvesting Robots

The robotics designers offer to the farmers the opportunity to significantly reduce the costs of manual labor for harvesting. The robots can replace the seasonal manual work or even permanent employees on farms.

In this article, I made a presentation of the robots designed to replace the manual work in harvesting the fruits. All of the below robots have the ability to detect, recognize, and determine if these are ripe enough to be picked. In addition, they are able to harvest the fruits without damaging them.

Apple-Picking robot with vacuum


Thanks to the start-up Abundant Robotics, apple orchard farmers will be able to use robots instead of seasonal pickers. The AR startup uses the vacuum to pick apples from trees.

The robot uses computer vision algorithms to identify and locate apples in the tree. The technology used is not specifically designed for agriculture. The same technology can be applied in a wide range of industries, but for now they are using it into the agriculture.

Apples require attention at harvesting. The robot is designed to work with precision in harvesting and to store the apples. The collection is made through a flexible hose and the storage is made in the same big boxes as used by the human workers.

The company is already planning the next version of the robot that will have many more robotic arms.

The transition from the prototype to the mass production of the robot is scheduled to start in 2018.
Read more →

Why this project fails to attract funding

I really like the TigerBot project from Kickstarter. A full electric lawn mower that can be remotely controlled. It has a microphone, a camera, and a 100A battery. Broadly speaking, it has just about everything for a lawn mower controlled in front of the TV or on the terrace of the house. And yet the fundraising campaign is not going well. Why?

First of all, I tried to find the missing parts of the Kickstarter campaign. The project description is not complete. As a customer, I would be interested in the time required for a full battery charge.

Details such as the grass surface cut at one move, the maximum angle of the slope it can be used are missing from the description. Given that it is a lawn mower for large surfaces of several thousand square meters, I am interested in the maximum slope that can be used.

$1910 or $2600: the first price is valid during the fundraising campaign, the second one is the price in the stores. An approximate version of a gasoline mowing machine costs around $1,460. Considering a lower mechanical complexity for an electric grass mower, the price of $2,600 is almost unjustified.
Read more →

Template for a ROS Subscriber Using rosserial on Arduino

A few weeks ago I started writing a series of tutorials that ease the work of beginners in ROS. The first tutorial was about a template for a publisher node, the second tutorial was about a template for a subscriber node in ROS, the third tutorial was a simple ROS subscriber and publisher in Python, and the fourth template is about a publisher using rosserial.

Today, I continue the series of tutorials with a template for a ROS subscriber using rosserial on the Arduino board. In addition, I’ll write a subscriber node based on the below template.

Below you will find the template for a ROS subscriber using rosserial on the Arduino board. To write your own subscriber using rosserial on Arduino, copy the template into Arduino IDE, delete the information that you don’t need and replace the text in capital letters.

ROS and Arduino

#include <ros.h>
#include <std_msgs/THE_TYPE_OF_THE_MESSAGE_YOU_SUBSCRIBER>

//create the ros node nh. The node will be used to publish to Arduino
ros::NodeHandle nh;


void messageCb(const std_msgs::MESSAGE_TYPE& msg)
{
  do_domething with msg.data;
 
}

ros::Subscriber sub("THE_TOPIC_THAT_SUBSCRIBER", &messageCb);

void setup()
{
  nh.initNode();
  nh.subscribe(sub);
}

void loop()
{
  nh.spinOnce();
  delay(10);
}

I used the above template to write a ROS node that will subscribe to a node that generates random numbers.

#include <ros.h>
#include <std_msgs/Int32.h>

ros::NodeHandle nh;

float var;

void messageCb(const std_msgs::Int32 &msg)
{
  var=msg.data;
 
  if(var > 2000)
   digitalWrite(13, HIGH);   // blink the led
      else
   digitalWrite(13, LOW);   // turn off the led
}

ros::Subscriber sub("rand_no", &messageCb);

void setup()
{
  pinMode(13, OUTPUT);
  nh.initNode();
  nh.subscribe(sub);
}

void loop()
{
  nh.spinOnce();
  delay(200);
}

How to run the node
Step 1: Open a new Terminal, type roscore and press the Enter key;
Step 2: Open a new Terminal and run the node to publish the messages;
Step 3: Open another Terminal and start the subscriber node by typing the following command:

rosrun rosserial_python serial_node.py /dev/ttyACM0

This week in robotics: 7-13 August

7-13 August 2017 was a full-week for robotics. From launching new robot kits, military projects, to crowdfunding campaigns, tutorials about artificial intelligence, and a research to make likable robots. All of these are listed below.

  • ANYmal – The Swiss company Anybotics made another presentation of the robot with legs imitating a dog. The robot looks more advanced to mobility than the DARPA Alpha Dog;
  • A Japanese designed a wheel-shaped robot from a soft material;
  • GoPiGo3 is available on Amazon.com and RobotShop;
  • Someone built the smallest robot with artificial intelligence;
  • Norman Di Palo was in Japan and built a robot with artificial intelligence in a week;
  • This robot uses Kinect, ROS, a recognition algorithm and Raspberry Pi to follow a human;
  • CrazyPi is a new project on Kickstarter that is looking for crowdfunding. It is a robotic kit that can be used for a wide range of applications;
  • If you want to make a likeable robot, it must be imperfect;
  • Good to know if you plan to sell robots that uses open-source technologies;
  • A comparison Tensorflow vs Keras vs PyTorch;
  • A tutorial how to measure the distance using the HC-SR04 ultrasonic sensor and Raspberry Pi;
  • A long introduction in TensorFlow;
  • How to build an autonomous car with Raspberry Pi and TensorFlow;

Understanding the concept of vector and tensor

Machine learning (part of artificial intelligence) uses libraries like TensorFlow to do numerical calculations. For numerical calculations, the library uses tensors.

The first step in understanding tensors is understanding the vectors.

Scalar vs vector

Both concepts are sizes. The difference between the two concepts is that a vector has a direction. For example, “1 meter” is a scalar size, while “1 meter north” is a vector.

The two concepts are very well detailed in the following video:

Template for a ROS Publisher Using rosserial on Arduino

A few weeks ago I started writing a series of tutorials that ease the work of beginners in ROS. The first tutorial was about a template for a publisher node, the second tutorial was about a template for a subscriber node in ROS, and the third tutorial was a simple ROS subscriber and publisher in Python.

Today, I continue the series of tutorials with a template for a ROS publisher using rosserial on the Arduino board. In addition, I’ll test the template and write a publisher node.

Below you will find the template for a ROS publisher using rosserial on the Arduino board. To write your own publisher using rosserial on Arduino, copy the template into Arduino IDE, delete the information that you don’t need and replace the text in capital letters.

ROS and Arduino

#Template for a ROS Publisher Using rosserial on Arduino

//different specific libraries
#include <ros.h>
#include <ros/time.h>
#include <sensor_msgs/Range.h>
#include <std_msgs/Float32.h>
#include "DHT.h" 

//create the ros node nh. The node will be used to publish to Arduino
ros::NodeHandle nh;

//for example, if you're using an ultrasonic sensor, the sensor message is Range
sensor_msgs::SENSOR_RETURN_TYPE msg;

ros::Publisher pub("/TOPIC_NAME", &msg);
void setup() {
   nh.initNode();
   nh.advertise(pub);
}

void loop() {
  unsigned long currentMillis = millis();

  if (currentMillis-range_timer >= 50) //publish every 50 milliseconds
  {
    range_timer = currentMillis+50;
    pub.publish(&msg);
    }
   
   nh.spinOnce();
}

Read more →

How Robots Are Changing Our World (AD)

Robots were not able to become the force they are today without the invention and subsequent reliance upon linear actuators, equipment which has greatly increased our abilities in terms of what functions can be carried out where. Actuators are pieces of equipment which allow for a much greater degree of control over the speed and precision of certain movements. Having these makes building robots which are more suited to their tasks much easier than before, as we can now create robots which are suited to delicate tasks.

As a result, our ability to build and use robots has changed greatly, with a corresponding effect on how robots are used within our lives as a whole – they already form a huge number of our production lines in car making and other manufacturing, but the increase in their ability to undertake more delicate and precise tasks means that we are now looking to incorporate robots further afield, in industries such as medicine and hospitality, among others. Read more →