Switching lanes as a developer – Part II
I’m a couple of months at my new job now and I’m learning a lot. I’ve seen a lot of projects which I visited like a AGV, a RobotDog and UniversalRobots which are among them. It got me inspired and it gives me a lot of energy so I bought a 3D-printer (Ender 5 Pro) and some electronics through shops like banggood.com and robotshop.com to create and build my own innovationlab.
So where was I a few months back? On the same attic where I was working from home for my old employer since Covid-19 came in. My old job was all about automating and building administration systems for banks and governments. However when I got in touch with an old teacher of mine, I was quickly sold to the profession I had in mind when I started at the University of Applied Sciences Utrecht.
Then it began to wander in my head for a few days and when the chance was there I was sold. They didn’t offer me more money, but hey did offer me my dream. My dream to be part of a revolutionary process in the world, the part where robotics come into the world. A process where a lot of movies are based on and usually the robots are the bad guys like the Terminator and their Skynet.
Are robots ethical?
My opinion is that we don’t have to worry about robotics and need to put them in the right place in order to support people. In my country the age of retirement is increased to 67 and may increase for the new generation. This is only based on people getting older, not the quality of life they have in their late 60’s.
But, do you see a construction worker lifting things while in their 70’s? Probably there are a few exceptions which are usually by choice because they have a passion for their work. However if your health doesn’t support your wish for that but you must, how good would it be if you will have a buddy which carries your tools, your shipment for the rest of the day.
And I’m not talking of replacing people or denying them to work. I’m talking to support people where they need it. And on the open spots where extra people are needed but where they can’t get people.
I’ve been searching and reading the internet about technical items. Especially items where robotics came into place, however on the first consultancy assignment I was asked: “How about the people?” which I haven’t thought of earlier. After some research it’s common for people and business to not choose for the best option in favor of the company people.
Leaving your comfortzone
However after my comparison within my comfortzone it was time to leave my comfortzone. I had worked a long time in the business software within the Java ecosystem and it’s frameworks. Especially the Spring Framework and the architectural concept of Microservices.
Therefore I made the earlier comparison with a Framework of C++ which was comparable to the Spring Framework. I took the Qt Framework and made a little deepdive in the concepts of C++ and the different standards and guidelines.
How cool was that, it felt like I can rule the world but again, for business software and that’s not what I want. So I’ve decided to look further and deeper into the world of Robotics. I’ve ordered a Raspberry Pi Zero W, a Raspberry pi 4Bwith 4GB RAM and a Nvidia Jetson Nano Development Kit B01 with some accessories to become familiar with different concepts within the field of Robotics.
Turns out my Arduino’s and several Raspberry Pi 3 Model B+ would also do the trick. But it can’t hurt to make a small collection of things ;-). First I looked at the Nvidia Isaac SDK which is great for Vision and object detection as they arrange a quick configuration for a smooth start.
However, at the moment of writing when you reach a certain point when you need to integrate more then just Vision and object detection like for example handling the motor drivers and connecting to other peripherals Isaac SDK is still a bit buggy. That being said I’ve looked further what is hot on the market but also what’s a solid piece of software.
Robot Operating System
I came out to several options and configurations of ROS and ROS 2. ROS stands for Robotic Operating System. As I thought in my first impression is that ROS2 is just the newest version of ROS. I could not be more wrong.
As ROS2 is based on ROS but the concept is different. Where ROS is mainly focused on a single stand-alone robot, this is to my opinion quickly understood when you’ll see that ROS can only create one node in the process while ROS2 is more suitable for managing and creating multiple nodes. Also worthy of mentioning is that ROS2 uses Python to create the roslaunch files which enables the developers to use complex logic while ROS uses an XML file to define the roslaunch files which doesn’t consits any kind of complex logic.
A node in the ROS systems is a process which performs computations. They communicate through topics, services and actions. I compare that to an event-driven system with for example RabbitMQ (https://www.rabbitmq.com/).
However to my surprise there are a lot of ROS Docker images available! So there are certain subjects which overlap with my comfortzone. How nice is that! I’m already familiar with Docker so that’s just my luck.
ROS Docker images can be found here: https://hub.docker.com/_/ros .
But now we can develop and see it running on a Docker image, what’s next? How about a testing environment. A few concepts draw my attention to it to test ROS with an 3D simulation.
- Gazebo – http://gazebosim.org/
- Rviz – https://github.com/ros-visualization/rviz
- TF2 – http://wiki.ros.org/tf2
It also depends which OS you’re using, but there is a lot of software available for Linux, MacOS as Windows. Keeping track of new releases and/or patches but for now it’s pretty much my goal to learn by doing.
I’ll keep you all posted on my projects and/or subjects!