Search This Blog

Saturday, 2 July 2016

V-REP - What makes it the greatest free virtual robot simulator?

Main screen with empty scene

V-REP it stands for Virtual Robot Experimentation Platform, as the name implies, its designed to simulate virtual worlds with all kind of robots, from mobile to immobile, even industrial robots.

JEL's SCARA Robot with three commanded axis

It was presented to me by my teacher Mario Ivan for my ControlJEL project (I posted about ControlJEL here). I've started learning it by examples, loading every example project and model and checking how they're done. I've learned a lot about how this awesome software works and how I can make my robot work, after hours of research and work I've finally got it going.

V-REP is completely free for education and commercially available by some special licensing. I'm using the education version of the software and it's great!

Welding robot with 6 numerically commanded axis from ABB

It's possible to simulate almost any industrial robot using V-REP, there are few examples included with V-REP from ABB, Adept, Kuka and more. You can include your own robot or concept of a robot and see how it works in a virtual environment. Simulate the movement of the axis, kinematics and even communication protocol.

Example line follower robot

If you're a fan of contest robots, like me, you can also simulate robots for sumo, line follower, football and even drones! Customize the UI how you want, you have the power to do a lot of things that other virtual robotics environments doesn't let you to do, even if they're commercially available.

The Lua code of the line follower robot

Codding it's even easier! You can write your own code using Lua programming language, customize UI, customize axis movement, setup a communication protocol using TCP/UDP by remote controlling from distance or from another software (I'm using this for ControlJEL to communicate with V-REP).

A showcase of mobile robots by default in V-REP


You can extend using C++ calls with Lua or even more by using included plugins.
It's the perfect tool for a student to learn more about robotics without having to use a real robot, or even for high schools.


I'm not affiliated with V-REP, I've wrote this article to showcase an awesome free educational software for everyone interested in robots and virtual worlds.

Visit V-REP site here for more information

Friday, 1 July 2016

ControlJEL - The journey of my first research project


ControlJEL is a command interface made by me for my university on a research project, it's designed to command and control a JEL SCARA robot with three numerically commanded axis.
The JEL robot having just three commanded axis, wasn't that hard at start, these axis where: Z translation, rotation around the base and translation of the effector. Combining all these you can build a cylinder.

The challenge is how to command such an old robot with so low knowledge about it's communication capabilities and working states.

I had only few lines that I know to send to the robot using RS232 Serial communication (an antique way of communication used in older computers, a standard in industry still, being replaced by USB, I will detail more about this in another blog post), with these few lines I had to make the robot move how I want in this 'cylinder'.

Started by writing a simple command interface using my previous work in Love2D for a robot I made for a contest (a line follower contest, where you could command the robot using bluetooth), with this I made the communication possible and got going the interface development.

I had only few hours of testing on the real robot and then I had to do all work at home, writing code that might not work on the real robot was a real pain, but It's all I had but it was worth it, only few tweaks and things were going well.



The interface starts with a connect phase, where you choose what port to use to connect on (where the robot is supposed to be), I've also included a virtual mode using V-REP by using localhost TCP socket.

After you get the interface connected to the robot, you can start to command every axis how you want and get things you want done, you can record the movement (using recorded points) and then play it again.

In between the computer and robot are two major components, one of which we can remove. There is an Arduino Uno controller and the robot controller, we use the Arduino to get a bluetooth link going between the computer and robot as I proposed to myself to make (I will talk more about radio links using Bluetooth in a future post). We can remove Arduino and connect directly to robot's controller using RS232, but in future, we want to remove robot's controller and make our own controller based on Arduino or something similar to command the motors how we want, without having to use JEL's protocol.



JEL's protocol, the tricky part. The most annoying thing I had to work with is the protocol used in the communication between JEL and a computer. The computer sends commands using a prefix '$1' for talking to the 'first' controller of the JEL arhitecture, after this prefix you'll get the command you want to send, for example, to get the current position on axis 1, you need to send '$101', the '01' being the command for getting position of the axis and '1' is the axis number. The very low documented protocol that I had to work with didn't explain anything about $1 or anything else, I've learned more by reverse engineering their software that didn't command motors directly, just uploaded or downloaded the points from the robot, this set me back with few steps, didn't help me at all, more confusion than progress. After a while, I figured a way to get what I want from the robot, using lot of workarounds.

After doing all the communication and getting the interface better, I've decided to give a try to the wonderful world of virtual worlds, or in short virtualization. I started using V-REP (a special software for virtualizing any type of robot that you can imagine on this world, I will make a full post in future about this). V-REP is awesome and it uses my favourite language, Lua (what can be better?), also I can use LuaSockets (TCP and UDP the easiest way possible). I got the 1:1 3D model of the JEL robot on the software and started adding the axis controls while writing the code, it took a while to get going something but it was worth the try, in few hours I got the robot working as it does in the real world (even better..). I didn't know its the most important part of my project while making it, I took it as a side challenge from the sweat taken from communicating with the real controller. The only thing I had to copy from the real controller was the annoying protocol... heh.. but I got it working as I wanted, because was my territory, I could've done anything I want to make it work.



I didn't get the virtual going just in V-REP, I was going to implement it directly to the interface in realtime with the robot or virtual robot. Got the model imported in my interface and added controls for it. Was fun to learn more about 3D programming by directly working with it for my interface.

After all this, the presentation was closer than I expected, I had only two weeks to write my power point presentation (I hate to make power point presentations to be honest, I will try my best to replace power point with something better, if you have a suggestion, hit me!). Done, power point presentation was done, but.. I've got to make now a document to publish in a book about my project, but after doing reverse engineering, making things that nobody had an idea how to make it work, I've got it all going!

Presented the interface that I've been working for the past one-two months, it was all nice, until I had to go back home and get my laptop in the most fast possible way, waiting for the bus and praying (I'm not a religious person at all, but it 'appears' it worked this time, no, I won't change ;-P) to get it faster. Got the laptop and waited my turn, I was nervous, it was the first time I ever presented something to university teachers, but for me, it wasn't the first time I presented something to a large public (20-30 persons for me is a large public and adding the value of professors, it adds up to 50-60 >:P). Got it all nice with a help of a college, I was tired after a night I haven't sleep because I had to help someone and myself to make projects done until the day of the presentation.

A week after all this, I've got the news that I received first place on this research projects, being on first year of college.

This was a part of my journey on making ControlJEL, an interface for JEL SCARA Robot, that I've been developing for a research project for my college. It doesn't end here as I need to get new challenges completed for this project, like making Arduino control the robot directly, Internet remote control and more!

I hope you did like my post about the journey I had, it was a real pleasure to work with all this people and do researching, it was like a hobby, I'm a big hobbyist so it was really fun! I hope to get more research projects to work on, currently I work on making a robot to play Chess with a human player (more information soon), it can even be JEL doing it! (we'll never know, well.. actually, we will know in few weeks).

PS: I did not talk about all I've done on this project, it would probably take a book or two to write ;-)

Thursday, 30 June 2016

I'm back!

Hello everyone,
It's been a long time since I've post last time (more than an year), today I want to start posting again daily with things that might interest you or not, depends on the type of person you are :-P. If you like things like Arduino, games, robotics and programming, (even indie/mainstream music!), you are in the right place, I will daily post something about these, from things I love to share with you guys and to things I dislike or want to change.

Yeah, up there I've said a lot, I don't like to write so much but I will try my best to get the best content straight to you using this blog. Head with me on my journey to developing cool things!

As you might have seen, I don't have the grammar, so I'm really sorry for any grammar mistake I make while writing all this, I'm not a native english person (I'm born and live in Romania), also a developer, we don't do language things :-S

Here's a sneek peek of next project I make:
Yes, it's a robot, but it won't be just in virtual this project! More info soon ;-P

Tuesday, 24 March 2015

LoveTD Weekly Blog #2 - Sockets and networks


Some HUD and a new map (not done).














Some network testing, a cool socket code was written. Is not a peer to peer, but will work fine, hopefully!














This week I made some tests on my new socket/network code, I also included Red Alert's graphics (by Westwood Studios). I hope you like it.

Sunday, 15 March 2015

Learn how to make your own computer player for a PONG game.

I've made a video on how to make your own computer player (AI) for a simple pong game. It's done with Love2D framework (Lua programming), you can read more about Love2D here at http://love2d.org
In this tutorial you'll learn how to make a computer player play PONG agaisnt a human player, is kinda basic, but enough to teach you the basic of making an advanced computer player (aka Artificial Inteligence). Have fun! Don't forget to share and give that button a like!


LoveTD Weekly Blog #1 - First Encounter


Hello everyone, I'm developing a new game engine (for some games that will come), a Tower Defense engine, called LoveTD (using Love2D framework, that's why the name have 'Love' in it :P ). This engine will give power to some awesome tower defense games that we will make, you'll be able to contribuite to LoveTD (as soon I get a stable client). It will support single player and multiplayer (also, will be on Android tablets/phones and Windows/Mac/Linux!)

I will post weekly (on Saturday or Sunday) about LoveTD's progress, things like new changes, new updates, new games, etc.

This weekend, we have the first encounter, we've made the game playable (still using console commands, but you can kill enemies!!).

In this image you can see that we've added towers and enemies that will spawn and try destroy your base, currently, there's no base, but you can lose against them

Spawning towers is kinda tricky and you can spawn them anywhere (even in water), in next update, we will get them sorted out and get a wave system!

Also, better HUD system.

Do you want to track LoveTD's progress? Follow me on Google+ at https://google.com/+slamaster

I live stream when I work on LoveTD, you can live watch the progress here on http://twitch.tv/slamaster

Don't forget to watch my vlogs! They will be posted on my YouTube channel here http://youtube.com/user/slaromaster (subscribing will help you track them easier)

Let the RUSH BEGIN !

Have fun! Next week we will have even more fun!

Monday, 8 December 2014

Self-Challenge: Make a vector RTS game using Love2D and SVD

*this image is just a representation of what vector does.

I propose a self-challenge, to make a RTS game using SVD (Sla Vector Drawing) library in Lua with Love2D framework, this challenge will take a lot of months, till September of 2015.

Sla Vector Drawing is a library created by myself to draw vector graphics (circles, rectangles, etc.) as one image, by adding the ability to scale it without losing quality, also animations will be supported. This library is still work in progress.

The game must be a RTS game using my current LoveRTS engine with SVD library, this game will have 2 factions. All the graphics must be SVD format, menus, cursors, etc. Sounds and music will be OGG format.

It will support multiplayer (probably), with up to 8 players, I'm not sure if I can pull this off, but a single player skirmish will be!

Playable on Windows, Mac, Linux and Android.

I will be live streaming the work on engine, game and library! You can watch it here  No schedule is set yet, more informations on my Twitch channel.

Thanks! Follow me on Twitch for this self-challenge! More information soon!