Wiki Index

3D Printers

This article is a technology overview of the fundamentals of 3D Printers, especially “Fused Filament Modeling” (FFM) & “Fused Deposition Modeling” (FDM). It explains the fundamentals of 3D Printer technology and applications. It should be useful for those considering working with, designing, or modifying a 3D printer. It is not...

Adaptive Monte Carlo Localization

What is a particle filter? Particle filter are initialized by a very high number of particles spanning the entire state space. As you get additional measurements, you predict and update your measurements which makes your robot have a multi-modal posterior distribution. This is a big difference from a Kalman...

Altium Circuit Maker

Altium Circuitmaker is a Community Driven PCB Design Application. Circuitmaker can be downloaded here. It requires a user account since most of its features are cloud-based.


AprilTags is a visual fiducial system, useful for a wide variety of tasks including augmented reality, robotics, and camera calibration. The tags provide a means of identification and 3D positioning, even in low visibility conditions. The tags act like barcodes, storing a small amount of information (tag ID), while also...


This tutorial covers the basics of different Arduinos, and how to implement common functions with them.

Blink(1) LED

Introduction Using an LED indicator is an extremely useful troubleshooting technique. The Blink(1) USB RGB LED makes this very easy and straightforward. Using this product can help determine the state of the robot without needing to have a direct data link. This can be useful on mobile robots,...

Bluetooth Socket Programming using Python PyBluez

This tutorial is intended at providing a primer into Bluetooth programming in general and getting started with PyBluez, a Python Bluetooth module. Bluetooth socket programming is similar to socket programming used by network developers for TCP/IP connections and familiarity with that paradigm will certainly aid understanding although it is not...

Iterations in maps and vectors using boost libraries

Using Boost libraries for maps and vectors in C++ for ROS.

Cable Management

Effective cable management is essential for servicing, debugging and creating reliable robotic systems. Cabling is often regarded as one of the less glamorous parts of electrical engineering, but it is an essential and an extremely important part of creating a complete system.

Camera Calibration

It is quite common for projects to involve vision systems, but despite this most teams working with cameras ignore the basic advantages of calibrating a camera properly. Not only does a good calibration lead to better quality of data in form of images captured but also reduces overall errors in...

IMU-Camera Calibration using Kalibr

This tutorial will help you in setting up the Kaliber library developed at ETH Zurich for combined IMU-Camera calibration. For better understanding, we have also included an example of Pixhawk (IMU) and ZED camera (stereo camera) calibration procedure.

CMake and Other Build Systems

Build systems are scripts that automate the compilation process. It will be most frequently encountered when compiling software in Linux Understanding how they are configured can help you write custom scripts and fix compatibility issues.

Computer Vision for Robotics- Practical Considerations

Things to take care of when working with vision in robotics:

Building Prototypes in CubePro

Cube Pro is a 3D printing alternative to the popular MakerBot Replicator Series. This is a step-by-step tutorial to using CubePro for developing prototypes and parts. CubePro is available to Carnegie Mellon University Students in Mechanical Engineering cluster.

Outdoor UAV navigation (focus on DJI SDK)

While DJI has been developing great hardware and software to make relatively safe UAV technology commercially available and has made available an amazing SDK to help research and development, sometimes it becomes difficult to get details on their implementation as their documentation is pretty limited. This article will help a...


Docker Setup

How to use Eigen Geometry library for c++

The Eigen Geometry library is a C++ libary useful for robotics. It is capable of the following operations: Declare Vectors, matrices, quaternions. Perform operations like dot product, cross product, vector/matrix addition ,subtraction, multiplication. Convert from one form to another. For instance one can convert quaternion to affine pose...

Fabrication Considerations for 3D printing

There is more to 3D printing than designing components and parts and replicating those 3D solid models into useful assemblies. When beginning a design, one must take into account the 3D filament to use, the 3D printing equipment, the model’s final resolution and the limitations of each 3D CAD software...


Git is a distributed revision control and source code management system with an emphasis on speed. Every Git working directory is a full-fledged repository with complete history and full version tracking capabilities, and is not dependent on network access or a central server. Git is free software distributed under the...


Contribution Quickstart Guide The Robotics Knowledgebase is hosted on Github. You are welcome to edit and improve this project. You can find a link to the repository here.


This page is a stub. You can help us improve it by editing it.


This page is a stub. You can help us improve it by editing it.

Project Management

This page is a stub. You can help us improve it by editing it.


This page is a stub. You can help us improve it by editing it.


This page is a stub. You can help us improve it by editing it.

System Design & Development

This page is a stub. You can help us improve it by editing it.


This page is a stub. You can help us improve it by editing it.


This page is a stub. You can help us improve it by editing it.

Common Platforms

This page is a stub. You can help us improve it by editing it.

State Estimation

This page is a stub. You can help us improve it by editing it.


This page is a stub. You can help us improve it by editing it.


This page is a stub. You can help us improve it by editing it.


**This page is a stub.** You can help us improve it by [editing it]( {: .notice--warning}


**This page is a stub.** You can help us improve it by [editing it]( {: .notice--warning}

Getting Started with Microsoft Kinect and PCL

## Microsoft Kinect Overview Kinect for Xbox 360 is a low-cost vision device equipped with one IR camera, one color camera and one IR projector to produce RGB images as well as voxel (depth-pixel) images. The RGB video stream gives a 8-bit VGA resolution (640 x 480 pixels) with a...

Linear Actuator Resources and Quick Reference

Linear movement is necessary for many types of robotics and automation, from simple 3D Printers with belts and threaded rod to complex high precision stages for Industrial Automation equipment, there always is a need to move something in a straight line.

Machining and Prototyping - 18 incredible videos on basic machining and prototyping of mechanical components

Makerbot Replicator 2x Overview

[Makerbot Replicator 2x]( is a popular 3D printer used by hobbyists. This page is for information on the Makerbot Replicator 2x.

Mechanical Design

This section will provide you some of the design criteria’s and consideration you should keep in mind when developing a mechanical system: - If possible, develop a mathematical model before ordering parts and prototyping. This will help you determine whether the values you have in mind are suitable enough or...

Milling Process

Milling is one of the most important machining processes. Knowledge of milling would be very helpful in prototyping. Almost all mechatronic design projects would require milling at one time or the other.

Motor Controller with Feedback

In most of the applications for a DC geared motor speed control or position control might be important. This is achieved by implementing feedback control.

Multithreaded Programming as an Alternative to ROS

As a software framework for robotics, ROS is an an obvious choice. Having said that, sometimes ROS can be an overkill or can cause trouble due to the amount of abstraction it has. The option of using ROS should be carefully evaluated, especially when you have all your processing on...

Getting Started with the Myo

Here are some resources that are useful if you want to get started quickly with the [Myo Gesture Control Armband]( The learning curve is not too steep if you want to make simple apps. It should take you just a couple of days (maybe even less) to get working. However,...

OpenCV Stereo Vision Processing

For a stereo vision camera, there are multiple operations that can be done like tracking, detection, position estimation, etc. OpenCV has lot of libraries which are much faster than MATLAB's computer vision toolbox.

ORB SLAM2 Setup Guidance

This tutorial will help you in setting up the ORB SLAM2 on SBC. We will start with the installation procedure for the stereo mode and then we will discuss the changes required in the stereo camera's yaml configuration file. Since the ORB SLAM2 code doesn't publish pose output, we have...

PCB Design Notes

## Software Tools - [Eagle CAD]( - Freemium CAD software package - Free version limited to 4" X 3.2" board sizes w/ two layers - [CAD Soft Tutorials]( - [Spark Fun Tutorials]( - [GerbMerge]( - Free Python program for panellizing generated PCBs - [Ubuntu install instructions]( - [GerbMerge Tutorial]( -...

Photometric Calibration

## Background Digital cameras of today have CMOS based sensors to convert the light incident (irradiance) on them into digital values. These sensors have a characteristic Inverse Camera Response Function (ICRF) which maps the irradiance to the pixel value generated (typically between 0-255). In the cameras we use, the ICRF...

PID Control on Arduino

The main idea behind PID control is fairly simple, but actually implementing it on an Arduino can be tricky. Luckily, the Arduino IDE comes with [a standard library for PID](

Pixhawk UAV Platform

This guide is meant for people using UAVs with the Pixhawk hardware and looking to control the UAV through a computer/microprocessor.

Product Development in Complex System Design

## History (Waterfall Model) Before iterative design became an industry standard in product development the waterfall model was largely popular. The waterfall model originated in industries that are highly structured physical environments such as manufacturing and construction where changes to the design after building are incredibly expensive if not physically...

Programming Interviews

## Google tips

Python Construct Library

Sending data over serial communication channels in robotic systems that need real time updates between multiple agents calls for ensuring reliability and integrity. Construct is a Python library that comes to the rescue for building and parsing binary data efficiently without the need for writing unnecessary imperative code to build...

Rapid Prototyping

One of the biggest challenges a designer faces is validating their design works. The more complex the system design becomes, the more difficult it becomes to accurately predict the behavior of the system. Development of full scale prototype takes time and could prove costly both in terms of time and...

Risk Management

Risk management is an important process, but can easily turn into an exercise in making a list of items that people think about once and never look at again. There can be little accountability and - if only listed by name with a nebulous category - no real grasp of...

ROCON Multi-master Framework

ROCON stands for *Robotics in Concert*. It is a multi-master framework provided by ROS. It provides easy solutions for multi-robot/device/tablet platforms. Multimaster is primarily a means for connecting autonomously capable ROS subsystems. It could of course all be done underneath a single master - but the key point is for...

Cost Maps in ROS

## Package to Use - ROS Package: - Git Code:

Running ROS over Multiple Machines

Multi­robot systems require intercommunication between processors running on different computers. Depending on the data to be exchanged between machines, various means of communication can be used. - **Option 1:** Create Python server on one machine and clients on the rest and use python for communication on a locally established network....


From ROS's homepage:

ROS Mapping and Localization

## Mapping To map the environment, there are many ROS packages which can be used: 1. #### [Gmapping]( - Gmapping requires odometry data from the mobile robot. So, if one has odometry data coming from the robot, Gmapping can be used. 2. #### [Hector Mapping]( - The advantage of using...

ROS Motion Server Framework

This tutorial will help you in setting up the ROS motion server framework developed at the University of Pittsburgh. This framework is built around the ROS Simple Action Server. For better understanding, we have also included an example of a high-level task running on Pixhawk with ROS motion server framework....

Setting up the ROS Navigation Stack for Custom Robots

## Dealing With Transforms Setting up the ROS navigation stack on a robot that is not officially supported by ROS/3rd party is little bit tricky and can be time consuming. The [robot setup guide]( is informative and helpful but can be confusing to many simply because it goes over a...

Rosbags In MATLAB

Sometimes you would rather analyze a rosbag in MATLAB rather than within the ROS environment. This page describes how to set up the Matlab infrastructure and includes a script example.

SBPL Lattice Planner

This tutorial covers implementing the Search Based Planning Lab's Lattice Planner in ROS indigo

Setup your GPU Enabled System for Computer Vision and Deep Learning

This tutorial will help you setup your Ubuntu (16/17/18) system with a NVIDIA GPU including installing the Drivers, CUDA, cuDNN, and TensorRT libraries. Tutorial also covers on how to build OpenCV from source and installing Deep Learning Frameworks such as TensorFlow (Source Build), PyTorch, Darknet for YOLO, Theano, and Keras....

Single-Board Computers

This article is out of date and should not be used in selecting components for your system. You can help us improve it by [editing it]( {: .notice--warning}


A complete and comprehensive 'How to' guide on soldering. A complete set of tutorials has been provided to guide students on effective soldering techniques, the caveats, and other relevant information.

Getting started with Solidworks

[SolidWorks]( is a 3D Computer Aided Design program commonly used for mechanical design. The following guide introduces a tutorial series from SolidWorks, in addition to offering some basic tips for setting up your environment.

Speech Recognition

Speech Recognition can be a very efficient and powerful way to interface with a robot. It has its downsides since it requires a parser to do something intelligent and be intuitive to use. Also, it is not the most reliable mode of communication since it is plagued with background noise...

System-Subsystem-Interface Modeling

A useful tool in system engineering is the system model, which can drive development, requirements generation, design, and just about anything else to do with your project. While the WBS, schedule, and other tools are good for their particular area, the system model has the potential to be useful in...


TMUX is a useful tool to open multiple tabs in the terminal especially while using SSH. [This video]( give a nice over view to use TMUX.

Turning Process

Turning process is done on lathe machines and is ideal for creating components with rotational symmetry. Components such as shafts, sleeves, pulleys etc can be manufactured/modified on a lathe. This two part tutorial gives in a good insight into the usage of the lathe machines.

Installing stable version of Ubuntu 14.04 on Chromebook

Installing Linux on Chromebook Acer C-720 (stable version)

Using ULN 2003A as a motor controller

![Using ULN 2003A as a stepper motor controller](/wiki/actuation/assets/ULN2003AMotorController-8ee22.png)

Upgrading the Ubuntu Kernel

Following are the steps to be followed for upgrading the Ubuntu kernel:

Vedder Open-Source Electronic Speed Controller

This page provides resources for the open-source electronic speed controller designed by Benjamin Vedder.

Vim text editor

Vim text editor greatly helps speed-up your programming workflow. It has a fairly big learning curve but the shortcuts and macro functions can easily double your productivity. Vim is also modular, enabling you to easily customize it. ## Resources Links to help you get started: 1. Vim Cheat Sheet:

XBee Pro DigiMesh 900

XBee-PRO 900 DigiMesh is useful for setting up your own low bandwidth mesh network. These adapters are great for Mesh Networks and implementations of networks such as VANETs. This tutorial is intended to help you with configuring these adapters and writing a simple python script to initiate bi-directional communication on...

Asctec Pelican UAV Setup Guidance

# Asctec Pelican UAV Setup Guidance

Oculus Prime Navigation

# Oculus Prime Navigation

udev Rules

# udev Rules [udev]( is the system on Linux operating systems that manages USB devices. By default, when you plug in a USB device, it will be assigned a name like `ttyACM0`. If you are writing code and need to communicate with that device, you will need to know the...