Hydro Node Wireless Sensor Network

Wireless Sensor Network Node Design with Code

In 2014 I launched Mayim, LLC (a spinoff from the USDA SCRI-MINDS project) to reduce wasted water being applied to crops when irrigating. Most farmers overwater their crops since to underwater means death to their crops. By accurately controlling irrigation we were able to not only reduce water usage, but also reduce pesticide usage, reduce fertilizer usage, reduce leeching of…
Servotronix Motion Coordinator

Motion Coordinator Gateways: Make interfacing to motor controllers easier

Often we need to communicate with motor controllers from different vendors. Writing software drivers for each one can be a pain and time consuming. Other times we need to use motor controllers utilizing EtherCAT or CANopen, but talking to those drives from our computers is difficult to implement. One solution is using a motion coordinator as a gateway. Sample layout…
Decision tree

Machine Learning Methods

There are many terms that are thrown around about machine learning. But what do they all mean? and what are the differences? Lets start with machine learning. Machine learning "gives computers the ability to learn without being explicitly programmed" (Arthur Samuel, 1959). Machine learning is a large and complex field with many algorithms that mostly operate in the approaches below.…
drive kinematics

Drive Kinematics: Skid Steer & Mecanum (ROS Twist included)

Hi all I am often in need of the basic kinematic motion equations for skid steer vehicles. I have also recently been working with mecanum wheeled vehicles. The skid steer equations are fairly simple and easy to find, however I will include it in different versions and include a ROS approach. The mecanum wheel equations are harder to find and…
peer review in software

Book Review: Peer Reviews in Software by Karl Wiegers

I have been part of many software teams where we desired to do code reviews. In most of those cases the code reviews did not take place, or were pointless and a waste of time. So the question is; how do you effectively conduct peer reviews in order to improve the quality of your systems. I found this book titled…
Adaptive RRT

Adaptive RRT – ARRT (with code)

Hi all Back in 2010 I was taking an AI class where we learned about Rapidly Exploring Random Trees for motion planning. For my final project I developed an adaptive version of the RRT that I named ARRT. I decided to post it here to share with others. The post below is based from the final presentation that I gave…
Fix Bad Code

Software Development Principles

Hi all I have often thought about what the proper software methodology should be for the various robots that I build. My thoughts have evolved over time as I have seen these tool work. I do not have any formal software engineering training, however these are things that I have seen, heard, read, etc.. that I believe in (at 2am…
motion planning example

Robot Path (Motion) Planning Overview

This post is going to be a summary of the different path planning (ie. route finding) algorithms that are commonly used. I am not going to detail any of the particular algorithms, but rather give you a launchpad for finding a suitable algorithm for your application. You should remember that often you will mix and match different ideas as you…
PID equations

PID Control (with code), Verification, and Scheduling

Hi allPID controllers are the workhorse of the controls world. PID controllers have the goal of taking some error in your system and reducing it to 0. While there are many other control strategies out there PID is probably the most common (unless you count human control) outside of just setting a setpoint. There are many advanced control strategies out…
kalman filter equations

Kalman Filtering – A Practical Implementation Guide (with code!)

Hi all Here is a quick tutorial for implementing a Kalman Filter. I originally wrote this for a Society Of Robot article several years ago. I have revised this a bit to be clearer and fixed some errors in the initial post. Enjoy! Note: The post has been translated into Russian here and is hosted by Everycloud Introduction Kalman filtering…
software flow in a robot

Software that Forms a Robot

Hi all While many people find it boring, one thing that has always interested me is the software infrastructure of a robot. By infrastructure I mean the code that all robots have and that binds everything else together. This includes the things like the interprocess communication (IPC) method, the system executive, the health monitor and the user interface. I will…
git repository

Software repositories or just plain repo

Hi again There are many software repositories out there that can be used for backing up your files or sharing them with others. Repositories can be useful when you are the only developer or also when you are working with a team. It should also be noted that you can use the repos for storing things besides code such as…