Open Source Robot OS Finds Niches From Farms To Space
jfruh (300774) writes "Blue River Technology built a robot named LettuceBot that uses computer vision to kill unwanted lettuce plants in a field. Rather than build their creation from scratch, they built off of the Robot Operating System, an open source OS that, in the words of one engineer, 'allowed only a few engineers to write an entire system and receive our first check for service in only a few months.' With ROS robots starting to appear everywhere, including the International Space Station, it looks like open source may be making huge strides in this area."
For those like me who didn't know, it is the set of Linux packages enumerated here.
The "lettuce bot" is an agricultural implement towed behind a tractor, not a robot. It's apparently a vision system that triggers fertilizer sprays. It's probably using the vision libraries that come with ROS, which are mostly improved versions of Intel's old OpenCV library.
Vision-guided weeding is useful, but not new. Here's a computer vision controlled plasma weeding system. As the tractor pulls this implement along, the control system recognizes plants vs weeds, and zaps the weeds with a plasma jet, missing the plants. It's a sentry gun for weeding.
There are more computer vision systems used in food processing than most people realize. Vegetable sorting is highly automated. The flawless tomatoes go to retail stores, and the flawed ones go to the tomato sauce plant. Vision-based sorting is so fast and cheap it can be applied to peas. This isn't exotic technology - it's production.
Based on your observations, I would suspect that the intent of ROS is to let people get started with building a functional robot, without having to delve into the communications system to begin with. Whether the result is the least processor intensive solution possible is at best a tertiary goal. You don't write code in Java because it provides the fastest possible platform to run your code on. You don't develop in Python because you're planning on writing to the bare metal. You use these systems to put together a system that works for you, or that you can deploy in a changing environment, or across different providers hardware, or because you need something that works now.
You never know...
I just wish everyone would lettuce alone....
Donte Alistair Anderson Roberts - hi son!
Karma: Chameleon
I had to write software that's able to send commands to ROS robots. Since ROS is a framework and I only needed the communication part I just wanted to implement the (tiny) communication protocol myself.
The documentation was extremely vague, incomplete and did not match up with what their code actually did. Some claimed features weren't even implemented, although the code was extremely fundamental and not new or anything.
The code quality was also terrible for an easy task of serializing some data into a 40 byte packet. It also looked extremely Java-like (they basically reimplemented things like ByteArray in C++ instead of using the standard library). They also obviously didn't understand pointers.
I'd audit that code to the maximum before even considering actually using it.
It is designed for systems where you are using a large number of different technologies, possibly across multiple computers within the robot. (Although I raised exactly the same point you did when I started using it). It has a lot of existing libraries for various hardware components and makes it very easy to add more, which is very helpful when you don't have time to find and stick all the different libraries for these components together yourself.
That being said the documentation, and official tutorials are absolutely terrible and often contain out of date information, or tell you to do things which are no longer available in the current release. This can add a lot of time to projects.
null
I use ROS for two things only: the interprocess communication system (with the nice data logging capabilities) and rviz, the data visualization tool. They can keep the rest. Also, it irks me that they call ROS an operating system, when it runs on top of Linux.