Author Topic: Programm language for robotic  (Read 14842 times)

0 Members and 1 Guest are viewing this topic.

Offline IrukandjiTopic starter

  • Contributor
  • Posts: 25
  • Country: dk
Programm language for robotic
« on: July 19, 2019, 12:15:12 pm »
Hi guys,
i want to learn a programming language. Which language i must learn for programming robots or autonomous cars? Can i learn robotic language with an Arduino?

best regards
 

Online ataradov

  • Super Contributor
  • ***
  • Posts: 11234
  • Country: us
    • Personal site
Re: Programm language for robotic
« Reply #1 on: July 19, 2019, 06:14:07 pm »
C/C++/Python. Arduino - depends on the depth you want to go. You definitely can't do anything close to modern understanding of an "autonomous car", but you can do basic robotics stuff.
Alex
 

Offline techman-001

  • Frequent Contributor
  • **
  • !
  • Posts: 748
  • Country: au
  • Electronics technician for the last 50 years
    • Mecrisp Stellaris Unofficial UserDoc
Re: Programm language for robotic
« Reply #2 on: July 19, 2019, 10:22:37 pm »
Hi guys,
i want to learn a programming language. Which language i must learn for programming robots or autonomous cars? Can i learn robotic language with an Arduino?

best regards

Forth of course, Arduino is for artists who want a quickly built light display for their ice sculpture etc.

With Forth you can leverage the inbuilt programmer machine interactivity using Words like  " 30 forward", 100 left" for robots,  plus Forth is big in Germany, see the German Forth Org  https://forth-ev.de/

Autonomous cars ? Join Google or Tesla or a university as this isn't a hobby area and would be controlled by all kinds of safety and government regulations.
 

Offline TK

  • Super Contributor
  • ***
  • Posts: 1722
  • Country: us
  • I am a Systems Analyst who plays with Electronics
Re: Programm language for robotic
« Reply #3 on: July 19, 2019, 11:53:05 pm »
For simple robots, probably Arduino is the best option.  For autonomous driving robots: python because of the extensive deep learning frameworks available for python.
 

Offline IrukandjiTopic starter

  • Contributor
  • Posts: 25
  • Country: dk
Re: Programm language for robotic
« Reply #4 on: July 20, 2019, 08:59:14 am »
Thanks so much for your help. If i understand it right, it would be helpful to understand python and c or c++ programming language. Plus Forth i never hear that before thanks.
 

Offline techman-001

  • Frequent Contributor
  • **
  • !
  • Posts: 748
  • Country: au
  • Electronics technician for the last 50 years
    • Mecrisp Stellaris Unofficial UserDoc
Re: Programm language for robotic
« Reply #5 on: July 20, 2019, 09:11:38 am »
Thanks so much for your help. If i understand it right, it would be helpful to understand python and c or c++ programming language. Plus Forth i never hear that before thanks.

Eight Forth powered MCU's were on the Philae Lander robot that accompanied the Rosetta spacecraft until it separated to land on comet 67P/Churyumov–Gerasimenko, in
12 November 2014.
 

Offline Doctorandus_P

  • Super Contributor
  • ***
  • Posts: 3341
  • Country: nl
Re: Programm language for robotic
« Reply #6 on: July 22, 2019, 10:15:09 am »
A programming language is just a programming language.

"arduino" is not a programming language.

That said. The language itself is not a very important factor.
Probably a lot more important are the tools and libraries available in the language you want to use, and if that language fits with your personality.

[Python rant]
For example, there are a bunch of reasons I quite dislike Python, such as the complete dependence on whitespace, the lack of strong typing and variable declaration (A single typo will just create a new variable instead of generate a syntax error, and may go unnoticed untill that line of code is actually executed, which easily creates hard to find bugs Yuck). But I am still interested in Python because it seems to become the defacto standard language for scripting stuff (KiCad, FreeCAD, Sigrok, etc).
[/Python rant]

Your choice may also depend on what sort of "robot" you want to build. From small carts such as line following carts or "micro mouse" to the autonomous vehicles that are tle latest craze in the last few years. Or are you more interested in "industral type" robot arms?

Search the web a bit for projects similar to your interest, and look at the available documentation / libraries / etc.
You can also do some searches on sites such as github and gitlab. There is a lot of code over there, and such sites are not well indexed by regular search engines.
Hackaday also has a quite extensive overview of all kind of robotic related projects:
https://hackaday.com/?s=robot

Last but not least, have a look at Robot Operating System (ROS)
http://www.ros.org/
https://rosindustrial.org/





 
The following users thanked this post: petert

Online Mechatrommer

  • Super Contributor
  • ***
  • Posts: 11611
  • Country: my
  • reassessing directives...
Re: Programm language for robotic
« Reply #7 on: July 22, 2019, 10:51:02 am »
always C/C++.... i can command the robot to goto(x,y) with my dead reckon and sensories library, i can do deep learning with proper library downloaded from the net and installed, i can show my face old 50 years from now, if i know the algorithm... if you want a working robot while you wiggle your foot on the chair (aka very little work), just buy a ready made robot.
Nature: Evolution and the Illusion of Randomness (Stephen L. Talbott): Its now indisputable that... organisms “expertise” contextualizes its genome, and its nonsense to say that these powers are under the control of the genome being contextualized - Barbara McClintock
 

Offline raptor1956

  • Frequent Contributor
  • **
  • Posts: 869
  • Country: us
Re: Programm language for robotic
« Reply #8 on: July 30, 2019, 01:39:09 am »
Most commercial robots from companies like Fanuc or Kuka have there own programming environment allowing the user to program in a Basic like way using a teach pendant and robot specific operators/commands.  Interfacing to them is a different issue with the various flavors of C being dominant. 


Brian
 

Offline Rick Law

  • Super Contributor
  • ***
  • Posts: 3437
  • Country: us
Re: Programm language for robotic
« Reply #9 on: July 30, 2019, 02:38:58 am »
Hi guys,
i want to learn a programming language. Which language i must learn for programming robots or autonomous cars? Can i learn robotic language with an Arduino?

best regards

re: "...autonomous cars..."

First, Arduino is not a language.  Second, I don't think Arduino will ever be a good answer for "autonomous cars".  Arduino is a specific implementation of a MCU (computer) to do experimentation and education.  It is a simple implementation of hardware (MCU) and software working together.  I can for example do some simple input (sensors), make some decision, and do some hardware effect (such as showing the sensor value or turning on a light).  The hardware capabilities is very limited even with the "bigger better" Arduino boards.  The space to store program is also very limited.

The Arduino implementation choose C++ as the language it used to program the MCU.  "Autonomous cars" will need far more hardware and far more software capabilities than what is available in the Arduino environment.
 

Offline kenshi

  • Contributor
  • Posts: 11
  • Country: us
Re: Programm language for robotic
« Reply #10 on: August 05, 2019, 12:39:58 pm »
Industrial robots have their own languages, and they're pretty easy in my experience. I play with ABB robots, which use RAPID. It's an interpreted procedural language that mostly uses move and I/O commands, so if you know one or two computer programming languages, you can pick up on the basics like syntax extremely quickly and just read the manual on instructions, functions, and data types for the details.

For instance, a function that makes a single weld on a part might be something like this:

PROC Weld_Side_A

Set roInFixtureA;
Move WeldA1, v2000, z200, tMIG_TORCH;
Move WeldA2, v300, z50, tMIG_TORCH;
ArcLStart w101_start, v50, fine, wd101, sd101, tMIG_TORCH;
ArcLEnd w101_end, v200, fine, wd101, sd101, tMIG_TORCH;
Move WeldA2, v50, z50, tMIG_TORCH;
Move WeldA1, v300, z50, tMIG_TORCH;
Reset roInFixtureA;
PulseDO \PLength:=1.0,roWeldAComplete;
MoveJAbs pHome, v2000, fine, tMIG_TORCH;

END PROC

Pretty simple. It starts off telling the PLC that it's in fixture A so it doesn't try to open the clamps or anything. Then there are some move commands which have as parameters a position, speed, flyby zone, and the tool being used. The flyby zone gives a radius around a point in which it can curve to change trajectory for the next point. Fine means it has to go to that exact point. There are ArcLStart and ArcLEnd instructions to start and end a straight line MIG weld, respectively. They have the same parameters as the Move commands but add welddata and seamdata which contain weld parameters. The flyby zone is fine so the weld starts and stops in a predictable position. Then you let the PLC know the robot is no longer in the fixture and that it completed the weld by pulsing that output on for one second. Finally the robot goes home. (You use MoveJAbs for that because the home position uses a data type for the position that has the angles for each joint of the robot instead of the intended location and angle of the tool.

Anyway, that's a pretty simple weld procedure to give you an idea. I think learning pretty much any computer language will make learning something like RAPID a piece of cake.
 
The following users thanked this post: petert

Offline rstofer

  • Super Contributor
  • ***
  • Posts: 9888
  • Country: us
Re: Programm language for robotic
« Reply #11 on: September 05, 2019, 06:09:25 pm »
If you're starting from nowhere, you might as well start with the Arduino platform using the C language.  The Arduinno libraries are indeed written in C++ but most of the user code I have seen is written in C.  When somebody wants to propose a language, see how many operating system kernels are written in the language.  Then look at Real Time Operating Systems (RTOSs) and see which languages are used.  Python won't show up, neither will Fortran.  I would be amazed if C++ showed up.  Fast code is written in C.  It started with Unix and it is still true today.

There are thousands of Arduino projects on the Internet.  Everything that can be done, has been done.  It's all out there!

Later on, after mastering the Arduino, you can transition to the underlying avr-libc libraries and write code directly for the ATmega328P.  You can get as detailed as you want and the chip is pretty amazing for what it is.  There are larger variants of the ATmega chip family and all are supported by avr-gcc (the compiler/linker) and avr-libc (the C library).

You will be working at the lowest level of automation, sensors and actuators.  You won't be doing high level stuff like curing world hunger.  These, and similar, processors are intended to control.  Don't be surprised when you find out there are more than 100 such processors in the modern automobile.  Divide and conquer!  It's cheaper to build 100 small systems than it is to incorporate all the logic into a single processor, even if it is orders of magnitude more capable.

Eventually, you will migrate to one of the ARM processors.  Maybe the Teensy 4.0 which is a blazing fast (600 MHz) ARM processor with gobs of memory (like 2 MB of flash memory for code and 1 MB of RAM).  Why would you gravitate to this platform?  Well, there's a plug-in for the Arduino toolchain and the TeensyDuino provides all the Arduino library functions rewritten for the ARM.  User code can be written that runs on both the ATmega and the Teensy platform, unchanged.  Not all code, of course,  particularly not low level code, but a lot of the standard functions (A/D, PWM, Serial) all work.

Or you could skip the ATmega328P experience and move straight to the Teensy.  It is essentially pin compatible (compare to Arduino Nano), it is source code compatible (for the most part) and it has a LOT more memory and a much brighter future.  It's $20.

https://www.pjrc.com/store/teensy40.html

I have 3 of these.  I used to have 4 but my dog thought the prototype board would make an excellent chew toy!

I like the 'stamp' format that is compatible with prototype boards.  The more I think about it, the more convinced I become that skipping the ATmega328P and going for the Teensy 4.0 is the right way to go.  Cheap, fast and lots of memory!
« Last Edit: September 05, 2019, 06:21:16 pm by rstofer »
 

Offline SiliconWizard

  • Super Contributor
  • ***
  • Posts: 14431
  • Country: fr
Re: Programm language for robotic
« Reply #12 on: September 09, 2019, 04:08:53 pm »
The Arduinno libraries are indeed written in C++ but most of the user code I have seen is written in C.

Yup. Well, the Arduino "framework" uses a very small subset of C++ from what I've seen, mainly to make use of namespaces (which C definitely lacks) and basic class stuff.

Or you could skip the ATmega328P experience and move straight to the Teensy.  It is essentially pin compatible (compare to Arduino Nano), it is source code compatible (for the most part) and it has a LOT more memory and a much brighter future.  It's $20.

I personally never recommend using the Arduino platform ( ;D ), but if you want to, I definitely agree with you there. Many MCUs are now supported by Arduino. At least pick some that are reasonably powerful and modern.
 
The following users thanked this post: krayvonk

Offline legacy

  • Super Contributor
  • ***
  • !
  • Posts: 4415
  • Country: ch
Re: Programm language for robotic
« Reply #13 on: September 09, 2019, 07:15:00 pm »
A couple of kits by NVIDIA for machine vision and machine learning are based on a C++ SDK and C++ frameworks.


 

Online Siwastaja

  • Super Contributor
  • ***
  • Posts: 8166
  • Country: fi
Re: Programm language for robotic
« Reply #14 on: September 30, 2019, 01:47:05 pm »
Yes, by all means start by playing around with Arduino, a motor control shield and a few simple motors.

It gets you going in a fairly simple manner, and you start learning about the very basic concepts. The start needs to be fun, and artistic is not a bad choice.

Then you can slowly move on to professional stuff, almost always written in C or C++ for software, VHDL or Verilog for hardware.
 
The following users thanked this post: petert

Offline jackthomson41

  • Regular Contributor
  • *
  • Posts: 53
  • Country: us
Re: Programm language for robotic
« Reply #15 on: October 10, 2019, 03:55:16 pm »
Yeah for robotics and particularly automation, Arduino Starter Kits are best to learn. You can find a lot of tutorials online teaching from basics to pro.

When I was learning Arduino, I have used Proteus Simulation software and have simulated Arduino in it, that way I didn't have to waste time on hardware assembling and have learnt Arduino coding quickly. So I would suggest you to do the same, download Arduino Library for Proteus and simulate it.
« Last Edit: March 02, 2021, 03:38:05 am by jackthomson41 »
 
The following users thanked this post: krayvonk

Offline krayvonk

  • Regular Contributor
  • *
  • !
  • Posts: 144
  • Country: au
Re: Programm language for robotic
« Reply #16 on: October 10, 2019, 11:31:21 pm »
You need a portable computer to stick in a robots head,   you cant just get your desktop and add legs to it... hang on maybe you can but it would be pretty heavy. and it would probably crash the slightest bump.  :palm:
 

Offline rstofer

  • Super Contributor
  • ***
  • Posts: 9888
  • Country: us
Re: Programm language for robotic
« Reply #17 on: October 17, 2019, 04:43:21 pm »
You need a portable computer to stick in a robots head,   you cant just get your desktop and add legs to it... hang on maybe you can but it would be pretty heavy. and it would probably crash the slightest bump.  :palm:

Some of the larger wheeled robots do indeed use a laptop and some of them are using the on-board camera for machine vision.  There will be lower level uCs doing the grunt work of driving motors and capturing sensor data.  I would expect all of the low level code to be written in C and it's pretty clear that Linux is written in C.  OTOH, vision libraries may very well be written in Python.  OpenCV supports a Python interface but it also supports C++ and Java.  For this type of thing, I would want to use C++ for the speed.  Interpreted languages, like Java and Python might slow down the process.  Or not...   Try them and see!

Start with C, branch out to other languages as required.  C++ is fairly easy to learn after C.
 

Offline petert

  • Regular Contributor
  • *
  • Posts: 178
  • Country: de
Re: Programm language for robotic
« Reply #18 on: March 19, 2020, 10:42:30 am »
I am surprised nobody suggested V-REP, an open source robot simulator.

It's especially useful if you want to make an autonomous car, because it allows you to collect training data, by recording vision sensor frames. It also has car models and allows you to design/decorate the environment.

The hardest part is training a reliable neural net.

If you want to do it in real hardware, I definitely would start with a robotics kits and Arduino. It's easy to program servos/motors there, and the rest can be controlled in any language you wish, either remotely, or on the robot itself.

Donkey Car has become somewhat of a standard for the more ambitious hobbyist.
 

Offline petert

  • Regular Contributor
  • *
  • Posts: 178
  • Country: de
Re: Programm language for robotic
« Reply #19 on: March 19, 2020, 10:46:45 am »
You need a portable computer to stick in a robots head,   you cant just get your desktop and add legs to it... hang on maybe you can but it would be pretty heavy. and it would probably crash the slightest bump.  :palm:
That's what single board computers are for. Before that the small ITX boards were useful, too.

There is a large variety today, from Raspberry Pi 4 to Nvidia Jetson Nano (good for deep learning).

So yes, you could work on a desktop initially, for training or making the control code, then transfer it to a SBC.
Controlling hardware, such as wheels, is still best done with a microcontroller, rather than trying to fight an OS or trying to use a real time one.
« Last Edit: March 19, 2020, 10:53:03 am by petert »
 

Offline petert

  • Regular Contributor
  • *
  • Posts: 178
  • Country: de
Re: Programm language for robotic
« Reply #20 on: March 19, 2020, 10:56:21 am »
Second, I don't think Arduino will ever be a good answer for "autonomous cars".  Arduino is a specific implementation of a MCU (computer) to do experimentation and education.
It's quite popular actually, for this purpose. You can control a toy car rather easily with Arduino, so it's fun. Then if you want vision based control, you can solve that with a SBC, that in turn controls the Arduino / delegates direct motor control to the Arduino.

There is no reason to start with overly complex or overly optimized systems. If there are abstractions and higher level platforms, use them.

"Autonomous cars" will need far more hardware and far more software capabilities than what is available in the Arduino environment.
How so? Most autonomous car projects from the well-known companies use a laptop and interface with the car using its CAN-bus (or similar interface). Add in a microcontroller and you are set. But you won't be allowed to do that anyways, so you can as well learn with toy cars. All you need is a camera, a SBC to process the image or other sensors, and a microcontroller to control the steering/motors.
« Last Edit: March 19, 2020, 11:01:51 am by petert »
 

Offline MarkMLl

  • Frequent Contributor
  • **
  • Posts: 360
  • Country: gb
Re: Programm language for robotic
« Reply #21 on: March 21, 2020, 01:29:20 pm »
Can i learn robotic language with an Arduino?

For some very constrained interpretation of the word "robotic".

I'm sorry, but I date back to an era when "the white heat of technology" was going to provide us with intelligent and dextrous mechanical assistants in home, office and factory. But instead its greatest contribution to industrial productivity has been the invention of the vibrator.

MarkMLl
 
The following users thanked this post: Vtile

Offline brucehoult

  • Super Contributor
  • ***
  • Posts: 4026
  • Country: nz
Re: Programm language for robotic
« Reply #22 on: March 21, 2020, 01:57:00 pm »
[
"Autonomous cars" will need far more hardware and far more software capabilities than what is available in the Arduino environment.
How so? Most autonomous car projects from the well-known companies use a laptop and interface with the car using its CAN-bus (or similar interface).

I think you'd find that while you might see a laptop, it's being used only to monitor what is going on, not to do the heavy work pf analyzing sensor data from cameras, LIDAR etc.

There has been a bit documented about Tesla's current "HW3" full self-driving computer that has been going into their cars since mid 2019. There was a presentation on it at "Hot Chips" in August.

https://www.anandtech.com/show/14766/hot-chips-31-live-blogs-tesla-solution-for-full-self-driving

It has a ML accelerator with an array of 96x96 MAC units, 12x A72 CPUs, 1x GPU
 

Offline petert

  • Regular Contributor
  • *
  • Posts: 178
  • Country: de
Re: Programm language for robotic
« Reply #23 on: March 21, 2020, 11:25:35 pm »
I think you'd find that while you might see a laptop, it's being used only to monitor what is going on, not to do the heavy work pf analyzing sensor data from cameras, LIDAR etc.
I have worked on robots in Uni, and that's what the laptops were used for: data processing (SLAM, LIDAR etc.), but also data visualization, and monitoring.

Quote
It has a ML accelerator with an array of 96x96 MAC units, 12x A72 CPUs, 1x GPU
Certainly, you could use accelerators, but you can get started without all that processing power.
There is no reason to discourage people from getting into this, by making them believe you cannot do without all of that hardware. Actually, most accelerators did not exist when research started.

An Arduino, a NVIDIA Jetson Nano, and (optionally a laptop) is perfectly fine for first steps. Research institutes use the more powerful Jetson platforms for actual products.
« Last Edit: March 21, 2020, 11:32:23 pm by petert »
 

Offline brucehoult

  • Super Contributor
  • ***
  • Posts: 4026
  • Country: nz
Re: Programm language for robotic
« Reply #24 on: March 22, 2020, 12:56:59 am »
I think you'd find that while you might see a laptop, it's being used only to monitor what is going on, not to do the heavy work pf analyzing sensor data from cameras, LIDAR etc.
I have worked on robots in Uni, and that's what the laptops were used for: data processing (SLAM, LIDAR etc.), but also data visualization, and monitoring.

Quote
It has a ML accelerator with an array of 96x96 MAC units, 12x A72 CPUs, 1x GPU
Certainly, you could use accelerators, but you can get started without all that processing power.
There is no reason to discourage people from getting into this, by making them believe you cannot do without all of that hardware. Actually, most accelerators did not exist when research started.

An Arduino, a NVIDIA Jetson Nano, and (optionally a laptop) is perfectly fine for first steps. Research institutes use the more powerful Jetson platforms for actual products.

Playing around at home or at uni is very different from your "Most autonomous car projects from the well-known companies", assuming that by "well-known companies" you meant Tesla, Mercedes, Google etc rather than SparkFun.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf