Robot Operating System - Is it applicable for Ardunio?

I want to move a robot car forward, backward, right turn, etc.

I could try to accomplish this without ROS or with ROS.

Is there a sketch to implement this in Arduino or
Do we need at a mimimum, the Raspberry Pi?

When should we consider using ROS and when should we not use ROS?

A car that moves forward, back, right and left is well within the capabilities of an Arduino with fairly basic software and has already been done many many times.

What do you think that ROS might add to that?

Steve

slipstick:
What do you think that ROS might add to that?

Extra course credits?

Thanks Steve and @AWOL for your responses. It seems that for the use case I am considering, ROS is not needed.

For what use cases should we consider ROS? And if we consider ROS, is Arduino an adequate platform?

ROS would be more suited to a robot that has an onboard processor that can run Linux, such as the Rasp Pi. A really good combination is to have both a Pi and Arduino on the robot. The Arduino can perform some task in a superior manner to the PI, but the PI with Linux and or ROS can perform more complex processing, communications, video, and provide a higher level of web interface. My rover uses an Arduino and a Rasp pi. On the pi I am using Node Red to process the data that the Arduino gathers and processes, and passes on to the Rasp Pi using the usb serial, and with the data formatted in JSON (javascript object notation). From there, the pi can process the data and make decisions and accept input via wifi.

Thanks @Northof49. I have a GoPiGo3 that runs DexterOS and I believe can ROS as well, though not natively supported by ROS. I currently have a distance sensor connected to the Raspberry Pi. I do have a camera that I plan on connecting to the robot.

Any suggestions on what I can use the Arduino for? I will check out usb serial.

It will be great to have both Arduino and RPi on the same system, primarily in order to learn how these systems work. I am more driven by technology possibilities than use case driven :slight_smile:

I started reading up on ROS after your recommendation. Thanks.

I use the Arduino on the robot rover for at least a couple of functions that I can think of: analogue readings of battery voltages and sharp IR distance sensors, running newping so that I can have many ultrasonic ping sensors running what is effectively simultaneously, and running an I2C board that controls the servo operated robot arm. All of the decision making is now run on the pi using node red.

When the data is sent to the rasp pi in JSON format, the subject allows the data to be easily sorted routed to the desired functions such as decision making, gauges, etc. Here's an example of JSON formatting of the output from the arduino:

 Serial.print ("{\"leftDistance\":");
      Serial.print (cm[0]);
      Serial.print (",");
      Serial.print ("\"centerDistance\":");
      Serial.print (cm[1]);
      Serial.print (",");
      Serial.print ("\"rightDistance\":");
      Serial.print (cm[2]);
      Serial.print (",");
      Serial.print ("\"rearDistance\":");
      Serial.print (cm[3]);
      Serial.print (",");
      Serial.print ("\"batteryVoltage\":");
      Serial.print (valAnalog2);
      Serial.print (",");
      Serial.print ("\"rearIr\":");
      Serial.print (valAnalog1);
      Serial.print (",");
      Serial.print ("\"frontIr\":");
      Serial.print (valAnalog0);

      Serial.println ("}"); // end of JSON

I have found that the more ultrasonic ping sensors, the better. That way you can watch out front and rear, sides, etc and have all the distance data on hand so that if any parameter comes within a threshold the vehicle can make a turn decision without having to stop. It looks cool to have a ping sensor on a servo, panning left and right, but that doesn't provide continuous information as to how close the rover is to obstacles, and limits the speed the rover can move at and predictably react to an obstacle it approaches. I am using downward facing sharp IR sensors as cliff sensors so that the rover doesn't drive off a cliff or staircase.

Thanks @Northof49. You keep introducing me to new technologies :slight_smile: I started exploring Node Red and will also check out the various ideas you have provided.