Back in 2014, we struggled to fill out our top 10 roundup of Linux-based robots and padded the list with conceptually similar autonomous underwater vehicles (AUVs) and unmanned aerial vehicles (UAVs). In addition, many of those robots were proprietary or open source only on the software side. Today, however, it’s easy to fill out a top 10 list of Linux-based terrestrial robots that are open source in both software and hardware. In fact, we were forced to leave a number of worthy projects waiting in the wings.
The latest open source Linux robot to hit the scene — the Turtle Rover — won funding on Indiegogo only last week. This four-wheeled bot, which is larger and more sophisticated than typical wheeled robots like the popular, dual-wheeled GoPiGo, was designed to mimic Martian rovers. Another major player here is the recently rev’d, dual-wheeled TurtleBot 3.
Like most of our entries, these models are wheeled robots built around the Raspberry Pi. With the advent of the quad-core, WiFi-enabled RPi 3 model, we’ve seen far more advanced, and sometimes semi-autonomous Pi-based robots, in addition to the numerous RPi-based toy designs of recent years. Other SBCs have also inspired robot designs, especially the BeagleBone and BeagleBone Blue, which is especially suitable for robotics projects.
While open source hacker boards have expanded Linux robot development in recent years, a larger influence is the optimization of Linux platforms such as Ubuntu for interaction with the open source Robot Operating System (ROS) middleware. A number of our top 10 robots include ROS integration.
Combined with open Linux software, the availability of open source hardware schematics and 3D CAD designs means that users create many of their own parts with 3D printers. More importantly, open hardware also means that the stated specs and capabilities are only a starting point. For example, there’s a fair amount of truth to Switch Science’s claims that its Rapiro robot’s “limitless possibilities all depend on you.” Certainly, there are limitations on all these robots based on the compute board and components, but the potential for creativity is much greater than with proprietary bots with the same base feature set.
Many of these systems, such as the Hicat Livera Robot Kit, combine a Linux computer with an Arduino board for motor control. Others use their own MCU-based chips for motor control.
Terrestrial robots come in a wide variety of form factors. In addition to typical wheeled robots, which are essentially remote-controlled or semi-autonomous toy cars, there are stationary bots such as the FarmBot Genesis. We did not include any of the numerous, Pi-based, one-armed picker robots, such as the worthy MeArm Pi.
Industrial one- and two-armed mobile manipulation robots that run Linux include the Rethink Robotics’ Sawyer and similarly $30,000 and up Kuka YouBot. The YouBot offers more open software, but will soon be discontinued. Fetch Robotics appears to be selling its Linux-based, industrial manipulation robot, which features open software, but only as an OEM product packaged with services. None of these offer open hardware, however.
There are several interesting rolling service robots that run Linux such as Savioke’s Relay, the follow-on the SaviOne model that made our last roundup. There are also several tuxified telepresence robots for mobile videoconferencing such as the Suitable Technologies Beam and BeamPro. None that we know of are open source, however.
At the lowest level of mobility, we’ve included the Q.bo One, which is limited to rotating its spherical head to talk directly to humans. The Q.bo One is a member of a new pack of AI-infused social robots, including the long delayed Jibo, a stationary bot with a swivel head that recently launched in an early access program. Other conversational robots that roll around on wheels, but are built with a humanoid form factors include the Linux-based Pepper from Softbank and Aldeberan and the new Android-based iPal from AvatarMind.
Unlike the Q.bo One, these social robots lack open source hardware, and their software platforms are only partially open. They’re worth tracking, however, since they represent the cutting edge of robot AI.
On the opposite end of the movement spectrum, we have included two ambulatory, highly articulated bipedal humanoid robots. On the low end, there’s the Rapiro and on the high-end, the Odroid-XU4 based Poppy Humanoid, which has 25 Degrees of Freedom (DoF) movement, but starts at over $7,000.
Top 10 Robots
We have omitted the many open source robotics projects and products that run only on Arduino. (Learn Robotics has published a list of open source robot projects of all types.) Finally, there are many intriguing academic robots like the Poppy that run Linux, but are not easily available to the general public. Like Poppy, some of these may expand into wider availability.
The following is a list of 10 intriguing Linux terrestrial robots with open source hardware and software. Most are available in both kit or finished form.
Erle Robotics is primarily known for its open source drones, but its terrestrial Erle-Rover runs Debian and ROS on the same Raspberry Pi 3 based Erle-Brain 3 computer that powers its Erle-Copter.
This four-wheeled rover measures 465x325x145mm, and ships with a quad-channel, 2.4GHz remote RC controller and a 1600 mAh battery. Options include an 8-megapixel HD camera, GPS and WiFi modules, and a 2 km range RF telemetry link. Tutorials are provided for adding obstacle avoidance.
If you’re looking into automated watering systems for your garden, there are plenty of Linux- (and RPi-) based options available, but the FarmBot Genesis kit goes several steps further than most. This CNC-style precision farming robot can also seed, weed, and fertilize. Powered by a Raspberry Pi 3 and Arduino based Farmduino v1.0 microcontroller with four DRV8825 stepper drivers, the robot is suspended over an up to 20 sq. meter raised garden. Its gardening arm rolls on tracks for precise location, and extends down into the garden with custom attachments, including sensor devices. Web-based software lets you plan your garden with proper spacing and scheduled maintenance.
Billed as the “world’s best selling Raspberry Pi robot,” the dual-wheeled GoPiGo kit is focused on STEM education. The AA battery powered bot was recently rev’d to a third-gen model that offers improved durability and motor control. Its RedBoard motor control board has been upgraded with more sensors, including 2x analog/digital, 2x I2C, and a serial port. If you bring your own WiFi-enabled RPi 3 to the table, the GoPiGo3 is also faster and more capable than earlier models. With older Pi models, you can plug in a USB WiFi dongle to control the bot, and any model can attach the official Raspberry Pi camera module, as well as Lego Technic parts. The robot is available with a Debian-based DexterOS distro plus Dexter’s Blockly based Bloxter drag-and-drop software. Dexter also offers a separate “BrickPi” RPi-ready platform that features Lego expansion.
Hicat’s Livera Robot Kit is built on its $49 Livera machine vision SBC, which runs Linux on an ARM9 HiSilicon Hi3518 camera SoC, There’s also an Arduino-driven Atmel 32u4 MCU and a MediaTek MT701 WiFi chip. The SBC provides an extension shield with a microSD slot, microphone, and speaker. The modest two-wheeled robot is focused entirely on the Livera board’s 720p ready camera with 140-degree viewing angle. APIs provide streaming and photo processing, as well as OpenCV enabled color sensitivity and object tracking. There’s also a separate Arduino library and NodeJS support.
The six-wheeled DiddyBorg was billed as the “most powerful Raspberry Pi robot available,” but is now out of stock. PiBorg has replaced it with a similar, but four-wheeled, MonsterBorg that appears to be equally tough. Unlike the DiddyBorg, the MonsterBorg requires no soldering. The MonsterBorg can be programmed as a self-driving robot or “or raced around the garden as an RC off-roader,” says PiBorg. It’s also the primary racing robot for the Formula Pi race series. The RPi based kit lets you build a bot that can run for up to three hours on 10x AA batteries. The kit includes a ThunderBorg 5A motor controller and 4x 300 RPM Zhengke 37mm motors that drive 105mm diameter off-road wheels. You supply the Pi of your choice, as well as options such as a Pi camera. The MonsterBorg recently shipped to Kickstarter backers, and you can sign up for notifications about the upcoming retail launch. PiBorg has also launched a Bluetooth controlled, trackwheel BOB robot that runs on a Rasberry Pi Zero W.
The humanoid, bipedal Poppy Humanoid runs Ubuntu 14.04 on an octa-core Odroid-XU4 SBC and is designed for researchers, educators, and artists. The kit includes Robotis Dynamixel servomotors and 3D printed parts. Fully assembled, Poppy Humanoid is an 83cm tall ambulatory robot with 25-DoF movement and a fully actuated vertebral column. The robot’s head features a 4.5-inch screen, and there’s an HD camera with a large FoV. French robotics firm Generation Robots also sells an Odroid-XU4-driven, 5,300 Euro ($6,283) Poppy Torso model with Poppy’s arms and hands, but no legs. There’s also a simple, 319 Euro ($378) Ergo Jr. bot that consists of a single arm and gripper controlled by a Raspberry Pi. Like the Poppy Humanoid, they are fully open source.
The swiveling, slightly humanoid head is the only thing that moves on the tabletop Q.Bo One computer, but there’s a lot more going on inside than the whirring of its Dynamixel servos. The Q.bo One can recognize faces and track movements, and can converse using natural language processing. The robot runs Linux on a Raspberry Pi 3 and Arduino code on an Atmel ATSAMD21 MCU. The Raspbian software uses OpenCV for vision processing, and can be programmed with Scratch, C++, and more. There are also hooks to IBM Bluemix, NodeRED, and ROS. Hardware features include a speaker, 3x microphones, touch sensors, and an LED matrix that creates an expressive mouth.
The humanoid, bipedal Rapiro may look like Buzz Lightyear’s loyal sidekick, but the Amazon shopping page clearly states “This is NOT a toy.” (Aw, Mom…) The Rapiro ships with a control board that can be programmed out of the box via the micro-USB port using the Arduino IDE. If you add a Raspberry Pi, you can give Rapiro additional sensors, WiFi and Bluetooth control, and a camera with image recognition capabilities. The 250x200x155mm robot has 12 servos that provide movement to the neck, waist, arms, and feet. Rapiro can walk and dance, and its dual grippers can pick up light objects. The robot can even be programmed to sweep your desk or grip a pencil and type on a keyboard. LEDs light up to create facial expressions.
The third-gen, Ubuntu/ROS-based TurtleBot switches to a new manufacturer (Robotis), but the community is still guided by Open Robotics, a wing of the Open Source Robotics Foundation (OSRF). The dual-wheeled TurtleBot3 is “the most affordable robot among the SLAM-able mobile robots equipped with a general 360-degree LiDAR,” says Open Robotics. The TurtleBot3 was launched in June with a choice of Raspberry Pi 3 or Intel Joule based compute boards for Burger and Waffle models, respectively. Since then, Intel discontinued the Joule, but no long-term replacement has been announced for the larger Waffle, which sells for $1,799 including the Joule and Intel’s RealSense depth-finding camera. The $549 Burger lacks a RealSense, but similarly integrates a 360-degree HLS-LFCD LDS planar LiDAR system, enabling autonomous navigation with the help of SLAM (simultaneous localization and mapping) algorithms. Both models feature a Robotis OpenCR board for controlling the Dynamixel servos, as well as touch, IR, color, and IMU sensors. The board can run Arduino on its 216MHz, 32-bit Cortex-M7 STM32F7 MCU. An 1800mAh battery and numerous interfaces are also available.
The four-wheel Turtle Rover adopts the basic form factor of a Martian Rover. Built around a Raspberry Pi 3, the robot features a 2-megapixel, fisheye lens HD camera and up to four-hour battery life. There’s no autonomous functionality at this point, but you can remote-control the bot within a 200-meter WiFi range. The waterproof, 460x410x270mm Turtle Rover is bigger than most Pi-based wheeled robots, but can still be carried on a backpack. It includes a 2-DoF arm with gripper that can lift 500 grams, and the robot can carry a 5 Kg payload. The $999 kit lacks the RPi 3, battery, antenna, and some other components, some of which can be 3D printed. The $1,972 kit is fully assembled. You can still order one on Indiegogo for an April or June 2018 delivery.
Learn more about embedded Linux at the upcoming Embedded Linux Conference in Prague. Linux.com readers receive an additional $40 off with code OSSEULDC20. Register Now!
I’ve been using Linux for a very long time. Over the years, I’ve been incredibly happy with how the open source landscape has evolved. One particular area that has come quite a long way is the installation of various distributions. Once upon a time, installing Linux was a task best left to those who had considerable tech skills. Now, if you can install an app, you can install Linux. It’s that simple. And that, my friends, is a very good thing—especially when it comes to drawing in new users. The fact that you can install the entire Linux operating system faster than a Windows user can run an update says quite a bit.
But every so often, I like to see something different—something that might remind me from where I came. That’s exactly what happened when I came into NixOS. To be quite honest, I had assumed this would be just another Linux distribution that offered the standard features, with the KDE Plasma 5 interface.
Boy was I wrong.
After downloading the ISO image, I figured up VirtualBox and created a new virtual machine, using the downloaded image. Once the VM booted, I found myself at a Bash login instructing me that the root account had an empty password and how to start a GUI display manager (Figure 1).
Figure 1: The first contact with NIXOS might be a bit jarring for some.
“Okay,” I thought, “let’s fire this up and see what happens.”
Once the GUI was up and running (KDE Plasma 5), I didn’t see the usual “Install” button. Turns out, NixOS is one of those fascinating distributions that has you configure your OS before you install it. Let’s take a look at how that is done.
Pre-install configuration
The first thing you must do is create a partition. Since the NixOS installer doesn’t include a partition tool, you can fire up the included GParted application (Figure 2) and create an EXT4 partition.
Figure 2: Partitioning the drive before installation.
With your partition created, mount it with the command mount /dev/sdX /mnt (Where sdX is the location of your newly created partition).
You now must generate a configuration file. To do this, issue the command:
nixos-generate-config --root /mnt
The above command will create two files (found in the /mnt/etc/nixos directory):
configuration.nix — The default configuration file.
hardware-configuration.nix — The hardware configuration (this is not to be edited).
Issue the command nano /mnt/etc/nixos/configuration.nix. Within this file, we need to take care of a few edits. The first change is to set the option for the boot loader. Look for the line:
# boot.loader.grub.device = “/dev/sda”; # or “nodev” for efi only
Remove the # sign at the beginning of the line to uncomment this option (making sure /dev/sda is the name of your newly created partition).
Within the configuration file, you can also set your timezone and add packages to be installed. You will see a commented out sample for package installation that looks like:
# List packages installed in system profile. To search by name, run:# nix-env -aqP | grep wget# environment.systemPackages = with pkgs; [# wget vim# ];
If you want to add packages, during installation, comment out that section and add the packages you like. Say, for instance, you want to add LibreOffice into the mix. You could uncomment the above section to reflect:
# List packages installed in system profile. To search by name, run:nix-env -aqP | grep wgetenvironment.systemPackages = with pkgs; [libreoffice wget vim];
You can find the exact name of the package by issuing the command nix-env -aqP | grep PACKAGENAME (where PACKAGENAME is the name of the package you’re looking for).If you don’t want to issue the command, you can always search the NixOS packages database.
After you’ve added all the necessary packages, there is one more thing you must do (if you want to be able to log into the desktop. I will assume you’re going to stick with the KDE Plasma 5 desktop. Go to the bottom of the configuration file and add the following before the final } bracket:
You can find out more options for the configuration file, within the NixOS official documentation. Save and close the configuration file.
Installation
Once you have your configuration exactly how you like it, issue the command (as the root user) nixos-install. Depending upon how many packages you’ve included for installation, the time it takes to complete this task will vary. When it does complete, you can then issue the command reboot and you will (when the reboot completes) be greeted by the KDE Plasma 5 login manager (Figure 3).
Figure 3: The KDE Plasma 5 login manager.
Post-install
One of the first two things you’ll need to do is give the root user a password (issue the command passwd to change the default) and add a standard user. This is done as you would with any Linux distribution. Log in as the root user and then, at a terminal window, issue the command:
useradd -m USER
Where USER is the name of the user you want to add. Next give the user a password with the command:
passwd USER
Where USER is the name of the user just added. You will be prompted to type and verify the new password. You can then log into NixOS as that standard user.
Once you have NixOS installed and running, you can then add new packages to the system, but not via the standard means. If you find you need to install something new, you have to go back to the configuration file (which is now located in /etc/nixos/), add the packages in the same location you did prior to installation, and then issue the command (as root):
nixos-rebuild switch
Once the command completes, you can then use the newly installed packages.
Enjoy NixOS
At this point, NixOS is up and running, with all the software you need and the KDE Plasma 5 desktop interface. Not only have you installed Linux, but you’ve installed a Linux distribution customized to meet your exact needs. Enjoy the experience and enjoy NixOS.
Learn more about Linux through the free “Introduction to Linux” course from The Linux Foundation and edX.
At a fundamental level, open source solutions are better than proprietary ones. Want to know why? Here are six reasons why businesses and government organizations benefit from using open source technology.
1. Easier vendor vetting
Before you invest engineering and financial resources in integrating a product into your infrastructure, you need to know you picked the right one. You want a product that is actively developed, one that brings regular security updates and bugfixes as well as innovations when your business needs them. This last point is more important than you might think: yes, a solution has to fit your requirements. But requirements change as the market matures and your business evolves. If the product doesn’t change with them, you have a costly migration ahead.
It is difficult not just to know what a VM or container was built with, but what has been added or removed or changed and by whom. Grafeas, originally devised by Google, is intended to make these questions easier to answer.
Grafeas is an open source project that defines a metadata API for software components. It is meant to provide a uniform metadata schema that allows VMs, containers, JAR files, and other software artifacts to describe themselves to the environments they run in and to the users that manage them. The goal is to allow processes like auditing the software used in a given environment, and auditing the changes made to that software, to be done in a consistent and reliable way.
It seems that every application out there is hungry for an API. Let’s look at Yelp for example. Yelp by itself won’t have the functionality you’d expect. In order to search nearby restaurants or locations, it needs to use an API for a map. It uses the Google API. With that, you can locate nearest places and get directions to the place. APIs allow you to integrate one tool to another tool to give it more functionality. Without the ability to make these types of integrations, you can say goodbye to a majority of all these softwares and apps out there that you use!
Last week, we learned about LAN (local area network) hardware. This week, we’ll learn about connecting networks to each other, and some cool hacks for mobile broadband.
Routers
Network routers are everything in computer networking, because routers connect networks. Without routers we would be lonely little islands. Figure 1 shows a simple wired LAN (local area network) with a wireless access point, all connected to the Internet. Computers on the LAN connect to an Ethernet switch, which connects to a combination firewall/router, which connects to the big bad Internet through whatever interface your Internet service provider (ISP) provides, such as cable box, DSL modem, satellite uplink…like everything in computing, it’s likely to be a box with blinky lights. When your packets leave your LAN and venture forth into the great wide Internet, they travel from router to router until they reach their destination.
Figure 1 shows a simple wired LAN (local area network) with a wireless access point, all connected to the Internet.
A router can look like pretty much anything: a nice little specialized box that does only routing and nothing else, a bigger box that provides routing, firewall, name services, and VPN gateway, a re-purposed PC or laptop, a Raspberry Pi or Arduino, stout little single-board computers like PC Engines…for all but the most demanding uses, ordinary commodity hardware works fine. The highest-end routers use specialized hardware that is designed to move the maximum number of packets per second. They have multiple fat data buses, multiple CPUs, and super-fast memory. (Look up Juniper and Cisco routers to see what high-end routers look like, and what’s inside.)
A wireless access point connects to your LAN either as an Ethernet bridge or a router. A bridge extends the network, so hosts on both sides of the bridge are on the same network. A router connects two different networks.
Network Topology
There are multitudes of ways to set up your LAN. You can put all hosts on a single flat network. You can divide it up into different subnets. You can divide it into virtual LANs, if your switch supports this.
A flat network is the simplest; just plug everyone into the same switch. If one switch isn’t enough you can connect switches to each other. Some switches have special uplink ports, some don’t care which ports you connect, and you may need to use a crossover Ethernet cable, so check your switch documentation.
Flat networks are the easiest to administer. You don’t need routers and don’t have to calculate subnets, but there are some downsides. They don’t scale, so when they get too large they get bogged down by broadcast traffic. Segmenting your LAN provides a bit of security, and makes it easier to manage larger networks by dividing it into manageable chunks. Figure 2 shows a simplified LAN divided into two subnets: internal wired and wireless hosts, and one for servers that host public services. The subnet that contains the public-facing servers is called a DMZ, demilitarized zone (ever notice all the macho terminology for jobs that are mostly typing on a computer?) because it is blocked from all internal access.
Figure 2: A simplified LAN divided into two subnets.
Even in a network as small as Figure 2 there are several ways to set it up. You can put your firewall and router on a single device. You could have a dedicated Internet link for the DMZ, divorcing it completely from your internal network. Which brings us to our next topic: it’s all software.
Think Software
You may have noticed that of the hardware we have discussed in this little series, only network interfaces, switches, and cabling are special-purpose hardware. Everything else is general-purpose commodity hardware, and it’s the software that defines its purpose. Linux is a true networking operating system, and it supports a multitude of network operations: VLANs, firewall, router, Internet gateway, VPN gateway, Ethernet bridge, Web/mail/file/etc. servers, load-balancer, proxy, quality of service, multiple authenticators, trunking, failover…you can run your entire network on commodity hardware with Linux. You can even use Linux to simulate an Ethernet switch with LISA (LInux Switching Appliance) and vde2.
There are specialized distributions for small hardware like DD-WRT, OpenWRT, and the Raspberry Pi distros, and don’t forget the BSDs and their specialized offshoots like the pfSense firewall/router, and the FreeNAS network-attached storage server.
You know how some people insist there is a difference between a hardware firewall and a software firewall? There isn’t. That’s like saying there is a hardware computer and a software computer.
Port Trunking and Ethernet Bonding
Trunking and bonding, also called link aggregation, is combining two Ethernet channels into one. Some Ethernet switches support port trunking, which is combining two switch ports to combine their bandwidth into a single link. This is a nice way to make a bigger pipe to a busy server.
You can do the same thing with Ethernet interfaces, and the bonding driver is built-in to the Linux kernel, so you don’t need any special hardware.
Bending Mobile Broadband to your Will
I expect that mobile broadband is going to grow in the place of DSL and cable Internet. I live near a city of 250,000 population, but outside the city limits good luck getting Internet, even though there is a large population to serve. My little corner of the world is 20 minutes from town, but it might as well be the moon as far as Internet service providers are concerned. My only option is mobile broadband; there is no dialup, satellite Internet is sold out (and it sucks), and haha lol DSL, cable, or fiber. That doesn’t stop ISPs from stuffing my mailbox with flyers for Xfinity and other high-speed services my area will never see.
I tried AT&T, Verizon, and T-Mobile. Verizon has the strongest coverage, but Verizon and AT&T are expensive. I’m at the edge of T-Mobile coverage, but they give the best deal by far. To make it work, I had to buy a weBoost signal booster and ZTE mobile hotspot. Yes, you can use a smartphone as a hotspot, but the little dedicated hotspots have stronger radios. If you’re thinking you might want a signal booster, I have nothing but praise for weBoost because their customer support is superb, and they will do their best to help you. Set it up with the help of a great little app that accurately measures signal strength, SignalCheck Pro. They have a free version with fewer features; spend the two bucks to get the pro version, you won’t be sorry.
The little ZTE hotspots serve up to 15 hosts and have rudimentary firewalls. But we can do better: get something like the Linksys WRT54GL, replace the stock firmware with Tomato, OpenWRT, or DD-WRT, and then you have complete control of your firewall rules, routing, and any other services you want to set up.
Learn more about Linux through the free “Introduction to Linux” course from The Linux Foundation and edX.
NIST recently published its four-volume SP800-63-3 Digital Identity Guidelines. Among other things, it makes three important suggestions when it comes to passwords:
Stop it with the annoying password complexity rules. They make passwords harder to remember. They increase errors because artificially complex passwords are harder to type in.
As developers, we often hear that tests are important. Automated testing minimizes the number of bugs released to production, helps prevent regression, improves code quality, supplements documentation, and makes code reviews easier. In short, tests save businesses money by increasing system uptime and keeping developers working on new features instead of fighting fires. While software testing has been around for about as long as software has, I would argue that testing is especially important (and unfortunately more challenging) in modern distributed software systems.
“Distributed software” refers to any software that is not run entirely on one computer. Almost all web applications are distributed software as they rely on applications on other servers (eg: remote data stores, internal REST APIs, third-party APIs, content delivery networks, etc.), and most mobile and desktop applications are as well. Distributed software presents new challenges and requires a thoughtful approach to testing.
I’ll be presenting a strategy for testing distributed systems at this year’s API Strategy & Practice Conference. If you’re interested in learning more about the topic of testing distributed software, or you have questions, you can find me at the conference, or anytime on Twitter.
MEF and the Open Network Automation Platform (ONAP) are officially working together, the organizations announced today at the SDN and NFV World Congress. MEF has joined ONAP as an associate member. And the Linux Foundation, which hosts ONAP, has joined MEF as an auditing member.
Arpit Joshipura, general manager of networking and orchestration with the Linux Foundation, told SDxCentral this will help enterprises that offer services across more than one service provider’s network.