Advertisement

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 →

A List of the Best Arduino Robot Car Kits

I spent more than 20 hours studying and analyzing the best Arduino robot car kits. About Arduino, there is much to say, but the most important thing is why someone would use this board to control a mobile robot.

As you will see in every kit’s description, some of these can be remotely controlled, while others can be programmed to autonomously navigate in the environment. Some kits come with object detection sensors, while others have attached a webcam to capture images in real time. The conclusion is a simple one: working with Arduino in robotics is a process that will never end.

There are a few things that should be considered when choosing an Arduino robot car kit. One of the basic things is the documentation, and the vast majority of these kits includes some kind of manual or assembly instructions. In addition, each of the below kits has different features compared to each other.

Below I have gathered for you a list of the best Arduino robot car kits. So check out the list and let me know which one is your favorite in the comments section.

  • Smart Robot Car Kit with Four-wheel Drives

    Smart Robot Car Kit with Four-wheel Drives

    Smart Robot Car Kit with Four-wheel Drives

    This four-wheel kit is for users who already have a contact at the beginner-level with the Arduino board and want to move to another level. The kit can be used in a wide range of applications such as tracking a line, detecting and avoiding obstacles, building a spy robot with a video camera, etc.

    One of the major issues faced by users while working with kits is the documentation. But this kit comes with everything you need to start; the documentation and all the components needed to make a smart robot. The package contains a CD with examples and a PDF file with assembly instructions.

    Any user can modify the program installed on Arduino using a USB cable and a PC or laptop.

    In addition, you have plenty of space to add new components and parts.

    All four wheels can be controlled independently.

    The price on Amazon for this kit is $69.99.

  • Read more →

How To setup Raspberry Pi to identify two Arduino devices

The applications that run on Raspberry Pi can’t always identify the serial port that belongs to each Arduino board. If we don’t use an identifier for each board, the serial port may change every time we disconnect or connect the Arduino board to Raspberry Pi.

In this tutorial, I’ll show you how to configure Raspberry Pi to automatically identify two Arduino boards. The procedure can be extended to multiple boards, but in this tutorial, I’ve used two identical Arduino boards.

How To setup Raspberry Pi to identify two Arduino devices

How To setup Raspberry Pi to identify two Arduino devices

Below are the steps to identify each board separately, regardless of which USB port of the Pi is used.

Step 1: navigate to /etc/udev/rules.d/99-arduino.rules
Step 2: this command returns the two serial ports connected to the Arduino boards

ls /dev/ttyACM*
ls /dev/ttyACM* for two Arduino boards

ls /dev/ttyACM* for two Arduino boards

Step 3: after finding the KERNEL of the two Arduino boards, run for each board the command:

udevadm info -a -n /dev/ttyACM00 | less

Instead of ttyACM00, use the serial port of the Arduino board
Step 4: for each Arduino’s KERNEL, add a line to the file 99-arduino.rules

Setup Raspberry Pi

Step 5: refresh udev

sudo /etc/init.d/udev reload

Template for a Simple ROS Subscriber and Publisher in Python

A few days 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, and the second tutorial was about a template for a subscriber node in ROS.

Today, I continue the series of tutorials with a template for a publisher and a subscriber node in Python. In addition, I’ll test it by writing and running a publisher and subscriber node.

Template for a Simple ROS Subscriber and Publisher in Python

Template for a Simple ROS Subscriber and Publisher in Python (image source)

Copy the template into a ‘. py’ file, delete the information that you don’t need and replace the text in capital letters.

#ROS Node Subscriber & Publisher template

#!/usr/bin/env python

#remove or add the library/libraries for ROS
import rospy, time, math, cv2, sys

#remove or add the message type
from std_msgs.msg import String, Float32, Image, LaserScan, Int32

varS=None

#define function/functions to provide the required functionality
def fnc_callback(msg):
    global varS
    varS==do_something(msg.data)

if __name__=='__main__':
    #Add here the name of the ROS. In ROS, names are unique named.
    rospy.init_node('NODE_NAME')
    #subscribe to a topic using rospy.Subscriber class
    sub=rospy.Subscriber('TOPIC_NAME', THE_TYPE_OF_THE_MESSAGE, fnc_callback)
    #publish messages to a topic using rospy.Publisher class
    pub=rospy.Publisher('TOPIC_NAME', THE_TYPE_OF_THE_MESSAGE, queue_size=1)
    rate=rospy.Rate(10)

    while not rospy.is_shutdown():
        if varS<= var2:
            varP=something()
        else:
            varP=something()

        pub.publish(varP)
        rate.sleep()
   

I used the above template to write a ROS node that will display the random numbers received from another node, then I add some conditional statements, and finally I publish the results.

#!/usr/bin/env python

import rospy

from std_msgs.msg import Int32

varS=None

def fnc_callback(msg):
    global varS
    varS=msg.data
   
if __name__=='__main__':
    rospy.init_node('NODE_SUB_AND_PUB')
   
    sub=rospy.Subscriber('rand_no', Int32, fnc_callback)
    pub=rospy.Publisher('sub_pub', Int32, queue_size=1)
    rate=rospy.Rate(10)

    while not rospy.is_shutdown():
        if varS<= 2500:
            varP=0
        else:
             varP=1
   
        pub.publish(varP)
        rate.sleep()

To run the above node, navigate to the .py file and make it executable. The command is:

chmod u+x my_python_file.py

After the file is executable, you can run the node.

Step 1: open a new Terminal and run the command:

roscore

Step 2: open a new Terminal and run the publisher node with the following command:

rosrun your_package your_ros_node_that_generates_random_number.py

Step 3: open a new Terminal and run the publisher and subscriber node with the following command:

rosrun your_package your_ros_node_for_publisher_and_subscriber.py

Robot Tractors to Work The Land

This article was last modified on 19 July 2017.

Some of the farmer’s responsibilities have already been taken over by the machines. The robot tractors capable of turning around, cultivating or maintaining the land are a common presence in the landscape.

The main objective of the manufacturers is to replace the manual labor for all types of farming activities. But I know, it is too early to talk about such intelligent machines. Until then, in this article, you will find the best robot tractors capable of autonomous operations in agriculture.

  • Greenbot – safety first

    Added on 19 July 2017

    Greenbot

    Greenbot

    Greenbot is an autonomous tractor that uses a diesel engine to generate power.

    Is guided by GPS and has software specially designed to be used by the operator for commands and data analysis.

    The tractor robot comes with a series of systems for detecting obstacles, animals, people, etc. In front, it has mounted a radar and a bumper bar with mobile parts to detect the impact. Additionally, in the bumper are installed other few sensors for detection.

  • Read more →