Continuing the discussion from "This board requires newer software" when loading Raspbian for Robots:
Sometimes we forget that some of the people who get a robot might be a bit new to the topic of both programming in general and robotics in particular.
Note that this thread is not intended to teach programming or a particular skill, rather it is intended to provide a broad overview of what robotics is, what we’re doing here, and “how to get here from there.”
First, some definitions:
-
Robotics
For the sake of this thread, I am defining “robotics” as the skill and learning required to make a “robot” do something. It might be something as simple as moving around or as complicated as going to the refrigerator and getting a beer on command.
Others may disagree, but IMHO getting a robot to do something, no matter how simple, is “robotics”.
-
A robot
I consider any autonomous device that can be programmed to do something under the control of some software program to be a robot.
Some people consider tethered devices at the end of a cable to be robots. (i.e. bomb robots or robots designed to be used in intensely radioactive environments.) Others believe that a robot should be entirely independent of immediate manual control.
Though I think that, ultimately, a robot should be capable of independent action, I’m not going to argue semantics.
-
Software
Software is a sequence of commands, usually written in a higher level language like Python, C, C++, etc., used to tell the robot how to function and what to do.
-
Hardware
This is the actual electronic and/or mechanical mechanism that people recognize as the robot itself and is what actually does something under the control of the software.
-
Interfaces
An “interface” is the way one part of the robot talks to a different, unrelated, part of the robot.
For example: The software telling the robot hardware to move uses a software interface to talk to the robot.
Likewise, the GUI, or remote connection that allows you to program and/or issue commands to the robot is also an “interface”, often called the “user interface”.
====================
What is “robotics” anyway?
As far as I am concerned anything you do with a robot, (aside from knocking it off the kitchen table!)[1], is robotics.
It can be as simple as programming the robot to move forward 1 foot, turn around, and drive back. (The “driving back” isn’t necessary, but it keeps you from chasing the robot all around the room! )
Or it can be a robot using a complex robot operating system like ROS, connecting fancy stereo cameras and a LIDAR to it, and expecting it to recognize (and chase!) the dog.
The software
Robotics software can be extremely simple, like the block-based software that comes built-in to the GoPiGo O/S, or something more complicated like Python.
====================
Robotics is a learned skill, like riding a bicycle or driving a car, so don’t expect your robot to navigate to the corner store as your first project.
Unless you are already exceptionally skilled, I recommend starting with the block-based software, (Bloxter), as a way of getting familiar with the robot before trying more advanced projets.
Even more advanced programmers can benefit from this as it provides a quick way to find out what the robot can do and how sensitive the commands are.[2]
Be aware that robotics, (like everything else), isn’t always as easy as it seems. However, it’s not impossibly difficult either and a bit of diligent effort will go a long way.
And this is where we, the forum members, come into the picture.
You will experience difficulties and you will have problems. We all do and we all have so you’re not alone!
There are no stupid questions. So feel free to ask, no matter how “stupid” you think it might be.
====================
-
I’ve already done that too!
https://forum.dexterindustries.com/t/breaking-news-charlie-critically-injured-more-news-at-11/8188 -
Even when I am working on an advanced project, I like the convenience of using Bloxter (the “Blockly/Scratch” like programming environment where you fit blocks representing functional robot or programming actions together to make a program), as a convenient “sandbox” to try out a new idea.