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

Cartographer SLAM ROS Integration

Cartographer is a LiDAR-based SLAM algorithm built by Google that is very efficient and accurate at building large maps. From testing Cartographer qualitatively performs better than other ROS SLAM algorithms such as gmapping and rtab-map.

Design considerations for ROS Architectures

Overview Over the past few months we have dicussed various ROS architectures, changed it at least two times in a major way and have come to appreciate the importance of designing a good architecture. We have also realized there are several important factors which need to be considered before...

Hardware-in-Loop and Software-in-Loop Testing

Hardware-in-the-loop (HIL) testing is a test methodology that can be used throughout the development of real-time embedded controllers to reduce development time and improve the effectiveness of testing. As the complexity of electronic control units (ECUs) increases, the number of combinations of tests required to ensure correct functionality and response...

NDT Matching with Autoware

Normal Distribution Transform (NDT)

Oculus Prime Navigation

There are multiple techniques to carry out way-point navigation on the Oculus Prime platform using the navigation stack.

Qtcreator User-Interface with ROS

Qtcreator is a popular user interface integrated development environment (IDE) that can interface easily with ROS. It supports multiple platforms, such as x86 desktop, arm-based embedded devices, and mobile platforms such as Android and iOS. However, this tutorial will focus on using this tool to create a user interface with...

Spawning and Controlling Vehicles in CARLA

This is a short tutorial on using agents and traffic tools in CARLA. This wiki contains details about: Spawning Vehicles in CARLA Controlling these spawned Vehicles using CARLA’s PID controllers.

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

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

Arduino

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

Asctec Pelican UAV Setup Guidance

This document acts as a tutorial on how to set up a Asctec Pelican UAV for autonomous waypoint navigation using ros pakage asctec_mav_framework. We are setting up an Asctec Quadrotor Pelican running with Ubuntu 14.04 and pre-installed ROS-jade.

A* Implementation Guide

Introduction This wiki aims to serve as a brief introduction and implementation guideline for A* search, specifically applied to robot motion planning. This will discuss how the algorithm functions, important design aspects in the pipeline, common knobs to tune, and efficiency considerations. The specific guidance and notes will be...

Amazon Web Services Quickstart

This article will cover the basics of remote login on an Ubuntu machine. More specifically this will help you set up your AWS machine and serve as a tutorial to launch, access and manage your AWS Instance. Launching an EC2 Instance First, we will have to sign up on...

Azure Block Detection

This article presents an overview of object detection using the Azure camera without relying on learning-based methods. It is utilized within our Robot Autonomy project, specifically for detecting Jenga blocks and attempting to assemble 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 IDE

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

CMake and Other Build Systems

Programs written in compiled languages like C/C++ must be compiled before being run, a process which converts the high-level code written by the programmer into binary files that can be executed on a particular architecture. A build system is a framework that automates the process of compiling files in a...

Code Editors - Introduction to VS Code and Vim

This article will provide you with some basic features for both VS Code and Vim, and perhaps it helps you decide which to start with!

Computer Vision for Robotics- Practical Considerations

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

Coverage Planner Implementation Guide

This wiki details how to implement a basic coverage planner, which can be used for generating paths such that a robot can cover a region with a sensor or end-effector.

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.

Custom data-set for segmentation

Image segmentation can be useful in a lot of cases, for example, suppressing pedestrains, cars for your SLAM system so the extracted features belong to static scene only. This tutorial covers the procedure to create annotations for semantic segmentation task. This is useful when you want to outsource the labeling...

DJI Drone Breakdown for Technical Projects

DJI is one of the best selling drone companies in the world. Considering also the fact that a DJI Matrice M100 costs $3500 and a M210 costs $12000, compared to a couple hundred dollars for most other manufacturers, it is obvious that they have some of the best drones in...

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 for Pytorch

In this article we will go over the following: Creating a custom docker image for deep learning workflows Docker run command for starting the container

Docker and Windows Security

Docker is a popular tool for containerization, providing a lightweight and portable environment for applications to run in. One of the biggest advantages of using Docker is that it allows for consistent development and deployment across different environments. Developers can create an image of an application and run it anywhere...

Docker

Docker is a platform for developers and sysadmins to develop, deploy, and run applications with containers. The use of Linux containers to deploy applications is called containerization. Containers are not new, but their use for easily deploying applications is.

Drive-by-wire Conversion for Autonomous Vehicle

Drive by wire technology in the automotive or aviation industry is the use of electrical or electromechanical systems for performing vehicle functions traditionally achieved by mechanical linkages. This technology replaces the traditional mechanical control systems with electronic control systems using electromechanical actuators and human–machine interfaces such as pedal and steering...

Drone Flight Permissions

This article discusses the laws and regulations of flying small drones for the MRSD project. It details the process to fully certify your drone and obtaining flight permissions from the Federal Aviation Administration (FAA) and Carnegie Mellon University (CMU). Furthermore, the article disucsses the rules for two registration categories. For...

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

Comparison of Fiducial Markers

Why is this comparison important? Different fiducial markers are best suited for different applications, so this article elucidates a brief list of pros and cons to evaluate different fiducial markers, enabling readers to choose a suitable one for one’s application.

Trajectory Planning in the Frenet Space

The Frenet frame (also called the moving trihedron or Frenet trihedron) along a curve is a moving (right-handed) coordinate system determined by the tangent line and curvature. The frame, which locally describes one point on a curve, changes orientation along the length of the curve.

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.

Gazebo Simulation

This is a tutorial for Gazebo, including how to customize a model and use a sensor plug-in.

Git

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

Externally Referenced State Estimation for GPS Lacking Environments

Robotic systems will often encounter environments where GPS access is either lacking or denied. In these environments, it’s important to still maintain some accurate global representation of the robot’s state, both for localization and mapping purposes. This is a relatively common problem in robotics, and is commonly dealt with through...

Using an RTK GPS

Introduction Position information can be critical for achieving high accuracy localization and one way to get this information is through the use of a GPS. It is possible to put a GPS only on the robot, but to get the centimeter level accuracy provided by RTK GPS systems a...

Workign with the Hello Robot Stretch RE1

The Stretch RE1 by Hello Robot, is a lightweight and capable mobile manipulator designed to work safely around people in home and office environments. It has 4 degrees of freedom - a telescoping arm which can reach 50cm horizontally, a prismatic lift which can reach 110cm vertically, a differential drive...

Husky Interfacing and Communication

This excerpt covers the basic methodologies to set up communication channels with the Clearpath Husky and make sure the hardware is receiving commands that are input by the user. The article will cover the hardware used for Husky’s onboard processing, additional hardware needed for better Localization and a brief description...

Contribute

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.

Networking

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

Tools

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

Programming

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

Sensing

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.

Actuation

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

Computing

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.

Project Management

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

Planning

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.

Datasets

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

Interfacing

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

Fabrication

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

Actuation

**This page is a stub.** You can help us improve it by [editing it](https://github.com/RoboticsKnowledgebase/roboticsknowledgebase.github.io). {: .notice--warning}

Actuation

**This page is a stub.** You can help us improve it by [editing it](https://github.com/RoboticsKnowledgebase/roboticsknowledgebase.github.io). {: .notice--warning}

Introduction to Reinforcement Learning

The goal of Reinforcement Learning (RL) is to learn a good strategy for the agent from experimental trials and relative simple feedback received. With the optimal strategy, the agent is capable to actively adapt to the environment to maximize future rewards.

Jira Agile Development

JIRA is a product management tool developed by Atlassian Inc. that can be used to track work and manage an agile project. All of the work to be done is logged in a centralized location for other members of the team to see.

Khepera 4

This article with serve as an introduction, overview, and quick-start guide to K-Team's Khepera 4 robots.

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

https://www.youtube.com/user/dgelbart/videos - 18 incredible videos on basic machining and prototyping of mechanical components

Makerbot Replicator 2x Overview

[Makerbot Replicator 2x](https://store.makerbot.com/printers/replicator2x/) is a popular 3D printer used by hobbyists. This page is for information on the Makerbot Replicator 2x.

Mapviz for Map Based Visualization in ROS2

Mapviz is a highly customizable ROS-based visualization tool focused on large-scale 2D data, with a plugin system for extreme extensibility. Mapviz is similar to Rviz, but is specifically designed for 2D, top-down viewing of outdoor robots, especially in overlaying data on an external map from OpenStreetMaps or Google maps.

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

Mediapipe - Live ML Anywhere

## Introduction - What is Mediapipe?

micro-ROS for ROS2 on Microcontrollers

[micro-ROS](https://micro.ros.org/) is a set of software libraries that enables development of robotic applications to be deployed onto microcontrollers that are typically limited in computational resources. The micro-ROS framework is designed for use with ROS 2, and can be leveraged for **bidirectional communication** between ROS 2 nodes running on a separate...

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.

Model Predictive Control Introduction and Setup

​ Model Predictive Control (MPC for short) is a state-of-the-art controller that is used to control a process while satisfying a set of constraints. In this article, we will discuss what MPC is and why one might want to use it instead of simpler but usually robust controllers such as...

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.

Move Base Flex

<!-- This template acts as a tutorial on writing articles for the Robotics Knowledgebase. In it we will cover article structure, basic syntax, and other useful hints. Every tutorial and article should start with a proper introduction.

MoveIt Motion Planning and HEBI Actuator Setup and Integration

## Overview MoveIt is a package within ROS primarily used to plan and actuate robot manipulators and mobile platforms. The package includes multiple path planning libraries, a framework to simulate robots within ROS using Gazebo, and plugins to dynamically build 3D occupancy maps for obstacle avoidance. There is also functionality...

Multi Robot Navigation Stack Design

This article aims to present two competing approaches for multi robot navigation. There is a brief introduction on multi robot navigation followed by description, pros and cons of each of the two competing methods.

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](https://www.myo.com/). 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,...

NLP for robotics

NLP is a field of linguistics and machine learning focused on understanding everything related to human language. The aim of NLP tasks is not only to understand single words individually, but to be able to understand the context of those words.

Open Source Datasets

This is an article to teach you how to make your own dataset or where to find open-source datasets that are free to use and download.

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](http://www.cadsoftusa.com/download-eagle/freeware/?language=en) - Freemium CAD software package - Free version limited to 4" X 3.2" board sizes w/ two layers - [CAD Soft Tutorials](https://www.cadsoftusa.com/training/tutorials/) - [Spark Fun Tutorials](https://www.sparkfun.com/tutorials/108) - [GerbMerge](http://ruggedcircuits.com/gerbmerge) - Free Python program for panellizing generated PCBs - [Ubuntu install instructions](http://eliaselectronics.com/installing-gerbmerge-on-ubuntu/) - [GerbMerge Tutorial](http://pauljmac.com/projects/index.php/Gerbmerge) -...

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](http://playground.arduino.cc/Code/PIDLibrary).

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.

Overview of Motion Planning

The problem of motion planning can be stated as follows: to find an optimal path for the robot to move through gradually from start to goal while avoiding any obstacles in between, given - a start pose of the robot a desired goal pose a geometric description of the robot...

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

This article is meant for people looking for software positions in the robotics industry. It introduces the data structure, algorithms, and other related topics you need to know in order to prepare for your technical interview. It also provides a detailed instruction on how to crack your coding sessions.

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

Python libraries for Reinforcement Learning

**Reinforcement Learning (RL)** is a machine learning approach for teaching agents how to solve tasks by trial and error. More specifically, RL is mostly concerned with how software agents should take actions in an environment in order to maximize its cumulative reward. The application of RL, as it seeks a...

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

Making RC Vehicles Autonomous

The goal of this guide is to discuss the trade-offs and choices to be made amongst the options available to set up an RC car and enable low-level feedback control such that the autonomy stack can be built on top of this platform. This can then serve as a test...

Realsense RGB-D camera

This article serves as an introduction to the Intel Reansense D400 series RGB-D cameras. It details the SDK installation process, ROS intergration, sensor calibration and sensor tuning. Following the intructions in the SDK and the ROS Package section, readers should be able to launch the sensor through ROS and browse...

Registration Techniques in Robotics

Absolute orientation is a fundamental and important task in robotics. It seeks to determine the translational, rotational, and uniform scalar correspondence between two different Cartesian coordinate systems given a set of corresponding point pairs. Dr. Berthold K.P. Horn proposed a closed-form solution of absolute orientation which is often a least-squares...

Resolved-rate Motion Control

For several real-world applications, it may be necessary for the robot end-effector to move in a straight line in Cartesian space. However, when one or more joints of a robot arm are moved, the end-effector traces an arc and not a straight line. Resolved-rate[1] is a Jacobian-based control scheme for...

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

Robotic Total Station (Leica TS16)

This page will go into detail about to get started with the TS16 Total Station, manufactured by Leica Geosystems. This information is likely helpful for other robotic total station integration, but is has not been tested.

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

ROS Arduino Interface

The Arduino Microcontroller is a versatile piece of hardware that can be used in various applications to integrate hardware and software components in a short span of time. Fortunately, It can also be used with Robot Operating System (ROS) without much effort. The following tutorial will guide you through the...

Cost Maps in ROS

## Package to Use - ROS Package: http://wiki.ros.org/costmap_2d - Git Code: https://github.com/ros-planning/navigation/tree/jade-devel/costmap_2d

ROS Cost Maps

## Package to Use

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

ROS Global Planner

There are 3 global planners that adhere to `nav_core::BaseGlobalPlanner` interface: `global_planner`, `navfn` and `carrot_planner`. The `nav_core::BaseGlobalPlanner` provides an interface for global used in navigation.

Framework GUI for robotic system using ROS

PyQt is an easy to implement user interface that can be integrated with ROS. It is customizable and can be deployed on multiple platforms. This documentation provides a basic GUI framework that all robotic systems using ROS can use and build upon.

ROS Introduction

From ROS's homepage:

ROS Mapping and Localization

## Mapping To map the environment, there are many ROS packages which can be used: 1. #### [Gmapping](http://wiki.ros.org/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](http://wiki.ros.org/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](http://wiki.ros.org/navigation/Tutorials/RobotSetup) is informative and helpful but can be confusing to many simply because it goes over a...

ROS Navigation

## 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](http://wiki.ros.org/navigation/Tutorials/RobotSetup) is informative and helpful but can be confusing to many simply because it goes over a...

How to run a ROS distribution on an operating system that doesn't natively support it?

Each ROS distribution supports only a select number of platforms, and for all supported platforms, readily available Debian packages are available which can be easily installed using package managers such as APT. However, there often arise situations where you need to install and use a ROS distribution on a platform...

YOLO Integration with ROS and Running with CUDA GPU

Integrating You Only Look Once (YOLO), a real time object detection algorithm commonly used in the localization task, with ROS might pose a real integration challenge. There are many steps that are not well documented when installing the package in ROS. There is even more difficulty if one tries to...

ROS 1 - ROS 2 Bridge

ROS 2 is widely used nowadays due to its better security features and code organization. A lot of standard and important ROS 1 packages, though, have not yet been ported to ROS 2 or just are more stable in ROS 1, for example, rosserial, husky-base. The [ROS 1 bridge](https://github.com/ros2/ros1_bridge) allows...

ROS 2 Navigation with the Clearpath Husky

ROS 2 has been growing significantly in the robotics community, with its newer features, better security, and improved performance. However, the transition from ROS 1 to ROS 2 is not straightforward. Many packages are still not migrated to ROS 2, and the existing packages are not fully adapted to ROS...

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

Series A Pro

The Series A Pro 3-D printer is a reliable platform that offers a large build volume, flexible controls (including the option to add custom G-code), print monitoring, a large range of print materials. Compared to more beginner-friendly but restrictive options, like the MakerBot, the Series A allows more control and...

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

Simulating Vehicles Using Autoware

## Simulating and controlling an Ackermann drive chassis

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](https://github.com/RoboticsKnowledgebase/roboticsknowledgebase.github.io). {: .notice--warning}

Soldering

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](https://www.solidworks.com/) 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...

STag

STag is a stable fiducial marker system that provides stable pose estimation. STag is designed to be robust against jitter factors. As such it provides better pose stability than existing solutions. This is achieved by utilizing geometric features that can be localized more repeatably. The outer square border of the...

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

Task Prioritization Control for Advanced Manipulator Control

​ Task Prioritization Control is a concept and control method for robotic systems, mostly applicable to serial manipulators, to allow for execution of multiple simultaneous tasks, for which the tasks have a specific order of priority for the overall system success. In this article, we will discuss what Task Prioritization...

Thermal Cameras

## Types of Thermal Cameras Types of Thermal Cameras (classified on the basis of operation):

TMUX

TMUX is a useful tool to open multiple tabs in the terminal especially while using SSH. [This video](https://www.youtube.com/watch?v=BHhA_ZKjyxo) give a nice over view to use TMUX.

Traffic Modelling Datasets

Traffic modelling is a hot topic in the field of autonomous cars currently. Here you will find a list of open datasets which can be used as source for building a traffic model. The list will include data captured from a variety of sources as listed below: - UAV/Drones -...

Train Darknet on Custom Dataset

This serves as a tutorial for how to use YOLO and Darknet to train your system to detect classes of objects from a custom dataset. We go over installing darknet dependencies, accessing the darknet repository, configuring your dataset images and labels to work with darknet, editing config files to work...

Tracking vehicles using a static traffic camera

Tracking vehicles using static camera is a useful tool for various use cases pertaining to both macro/micro traffic flow. We present a system where we extract vehicle trajectories using a monocular camera mounted at an intersection.

Ubuntu Dual Boot and Troubleshooting Guide

This page serves as a tutorial and troubleshooting guide for dual booting Ubuntu alongside Windows for the uninitiated. This page assumes you have a PC or laptop with Windows 10 or 11 as the sole OS. Several difficulties can be encountered during setup if not aware of the process in...

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)

udev Rules

[udev](https://en.wikipedia.org/wiki/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 name of the...

Using ULN 2003A as a motor controller

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

DWM1001 UltraWideband Positioning System

This page will go into detail about to get started with UltraWideband positioning, particuarly with the [DWM1001-Dev module](https://www.qorvo.com/products/p/DWM1001-DEV).

Unitree Go1 Edu

This is an article that provides an overview of the Unitree Go1 Edu robot, including its features and capabilities. Unitree Robotics is a leading Chinese manufacturer that specializes in developing, producing, and selling high-performance quadruped robots. One of the company's primary advantages is that they offer quadruped platforms at a...

Upgrading the Ubuntu Kernel

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

Universal Robots UR5e Collaborative Robotic Arm

This page covers how to work with the Universal Robots' UR5e Collaborative Robotic Arm from it's e-Series line of cobots.

Using Notion for Project Management

Effective project management is crucial to the long-term success of any project, and there are various free tools that small teams (3-8 members) can use to effectively manage their project.

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: http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html...

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

[Webots](https://cyberbotics.com/) 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...

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 performance of the robot which makes it very important to have a...

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

YOLOv5 Training and Deployment on NVIDIA Jetson Platforms

Object detection with deep neural networks has been a crucial part of robot perception. Among object detection models, single-stage detectors, like YOLO, are typically more lightweight and suitable for mobile computing platforms. In the meantime, NVIDIA has developed the Jetson computing platforms for edge AI applications, supporting CUDA GPU acceleration....