Getting up to Speed (Graduate Students) - WPI-Atlas-Lab/AtlasLab GitHub Wiki
Welcome
Welcome to Team WPI-CMU. The DARPA Robotics Challenge is an exciting opportunity to test your robotics skills and engineering endeavors. We welcome committed hardworking students to share their experience with us. In this article, I have tried to capture the basic knowledge that is needed for committed students to quickly start contributing to Team WPI-CMU. The suggestions and tutorials are intended to make the learning curve faster but if you find yourself familiar with the topics, I would advise reviewing it before skipping it.
Algorithm Development:
Team WPI-CMU uses a Boston Dynamics Inc. Atlas robot. Our team does very little hardware development; we leave the exciting problems associated with that to the Boston Dynamics folks. On the other hand, we have the arduous task of giving intelligence to this hardware through our algorithms.
Basics:
We use Ubuntu 12.04, hence basic familiarity with Ubuntu will definitely come in handy. C++ is the preferred programming language but Matlab, Python, C, and any other interesting language can be used if you have an easy way to integrate with the ROS ecosystem.
Core:
The development of the core capabilities of the robot have been divided into four fronts at WPI - Perception, Manipulation, Mobility, Interfaces. Based on your interest, you will find yourself familiar with one of the packages listed here.
-
ROS - It is highly recommended that you complete the basic and the intermediate tutorials here for ROS Hydro (http://wiki.ros.org/ROS/Tutorials). The following tutorial is a must:
-
OpenCV - A core package for perception development. Going through the tutorials presented here will get you started. I highly recommend going through the following material if you are interested in using it:
- OpenCV Mat constructor.
- Scanning image
- Basic Mask Operations
-
PCL - if OpenCV is the tool for 2D image processing PCL is the tool for 3D sensor(eg: Kinect, Lidar) processing. If you wish to use it please make sure you have gone through the following tutorials:
- PCL data structure
- KdTree
-
Eigen - Matrix library, that makes use of SSE optimization. Please go through the documentation. Please give attention to the alignment requirements that are listed in it.
-
Qt - GUI frontend
-
DRCSim - Simulator for the Darpa Robotics Challenge
Bonus:
Some of these are topics you are going to get familiar with when you work in the group. It is advantageous if you are familiar with what these tools are and basic use of them.
- CMake
- Git
- Matlab
- CUDA
- Boost
- SNOPT
- Moveit
Knowledge Background
So far, I have tried to list and discuss the tools that one might need to implement the algorithms that we need. In here, I try to list the knowledge space that conceives the algorithms. This will give a very good idea into how we think, and help you decide in how you can share your knowledge. It is hard to summaries the approach at WPI as it is varied and welcome to new ideas.
Key concepts
- Operational Space Control
- Visual SLAM
- Optimization
- Reactive Planning
- Octomap
- Concurrent Programming
- Distributed Systems
- Degraded Communication Network (eg Delay Tolerant Network)
- Interface design (eg GUI)
Reading Material
If you find yourself excited about this opportunity, and find yourself having all the tools that you might need, it is time to go through some of the algorithms that we have implemented. You dont have to be familiar with all. This is just to get you started.
- Optimization Based Full Body Control for the Atlas Robot
- 3D Walking Based on Online Optimization
- Darpa Robotics Challenge Rules
- Tight Coupling between Manipulation and Perception using SLAM
- Complete Approach Paper - Please visit the lab
##Additional Reading Background
Test Task
A computer with the simulator with the tools required will be available at the lab. As a simple test, we would like you to set up Atlas in DRCsim. Use the 'roslaunch drcsim_gazebo drc_practice_task_6.launch'.
Use scripts/cpp code to
- turn the robot through walking (teleop)
- walk towards the drill (teleop)
- point at the drill (using a pre-scripted set of joint commands)