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.


CLion (pronounced “sea lion”) is a cross-plateform IDE for C and C++ framework developed by JetBrains.

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...

Guassian Process and Gaussian Mixture Model

This document acts as a tutorial on Gaussian Process(GP), Gaussian Mixture Model, Expectation Maximization Algorithm. We recently ran into these approaches in our robotics project that having multiple robots to generate environment models with minimum number of samples.


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...


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.

Common Platforms

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.

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.


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


## 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]( {: .notice--warning}


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

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...

Sensor Fusion and Tracking

Fusing data from multiple sensor is an integral part of the perception system of robots and especially Autonomous Vehicles. The fusion becomes specially useful when the data coming from the different sensors gives complementary information. In this tutorial we give an introduction to Radar-Camera sensor fusion for tracking oncoming vehicles....

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.

Web-Based Visualization using ROS JavaScript Library

This tutorial will give you an introduction to the ROS JavaScript Library (`roslibjs`) and how you can use it in your own projects to interface with web-based platforms or GUIs.

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...

Stream Rviz Visualizations as Images

This tutorial will help you stream live Rviz visualizations as `Image` topics in ROS. The tutorial will cover how one can setup multiple virtual cameras and virtual lighting within the Rviz environment. Streaming Rviz visualizations has several applications such as, one can record multiple views simultaneously for off-line analysis or...

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:

Controlling UR5e arm using ROS

Industrial cobots such as UR5 arms have found an increasing interest in academia research nowadays. In order to perfrom complex actuation tasks using a computer, it becomes imperative to know how to control these arms using software. Since ROS is a widely used framework for robotics applications; in this tutorial...

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:

Visual Servoing

## Visual Servoing Motivation

Making Field Testing Easier Through Visualization and Simulation

If you have an outdoor system, field testing is going to make or break your validation demonstration. No amount of testing in the lab will expose as many issues with your system as 10 minutes of testing outside. Picking up your system and taking it somewhere else is difficult but...


[Webots]( is a free open source robot simulator used for a variety of purposes and applications. It was previously a paid software developed by Cyberbotics and became open source in December 2018. It is still being developed by Cyberbotics with association from Industry and Academia. It is compatible with ROS...

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

Setting up WiFi hotspot at the boot up for Linux devices

# Setting up WiFi hotspot at the boot up for Linux devices Most of the mobile robot platform uses Linux based Single board computer for onboard computation and these SBCs typically have WiFi or an external WiFi dongle can also be attached. While testing/debugging we need to continuously monitor the...

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...