Programming
This section focuses on programming techniques, tools, and libraries commonly used. It includes practical guides and examples for libraries like Boost, Eigen, and Python Construct, as well as programming concepts like multithreading, build systems, and preparing for technical interviews.
Key Subsections and Highlights
-
Boost C++ Libraries Highlights the widely-used Boost library in C++ for robotics. Discusses essential components like shared pointers, mutexes, and threading. Provides examples and resources for using Boost in robotics applications to minimize memory leaks and ensure thread safety.
-
Boost: Iterations in Maps and Vectors Explains how Boost simplifies working with maps and vectors in C++. Demonstrates an efficient approach to iterating through
std::map
using Boost’sFOREACH
and adaptors, with a practical example for managing robot IDs and poses. -
CMake and Other Build Systems Provides an in-depth guide to CMake, a tool that simplifies building projects in compiled languages like C++ and integrates seamlessly with external libraries. Covers folder structure, common functions, and best practices for managing large projects and external dependencies.
-
Eigen Geometry Library for C++ Details the use of Eigen for matrix and vector operations, transformations, and handling quaternions. Includes examples for creating rotation matrices, extracting translation vectors, and performing homogeneous transformations.
-
Git Covers Git as a distributed version control system. Explains GUI options, repository providers like GitHub, GitLab, and BitBucket, and includes learning resources from beginner to advanced levels. Offers tips on using Git effectively in robotics projects.
-
Multithreaded Programming as an Alternative to ROS Discusses the use of pthreads and Boost for multithreading as a lightweight alternative to ROS for single-system applications. Includes a practical example for parallelizing IMU data processing and resources for learning pthreads.
-
Programming Interviews A comprehensive guide for preparing for technical interviews in the robotics industry. Discusses algorithms, data structures, operating systems, and coding skills. Provides curated resources, LeetCode strategies, and system design tips for interview preparation.
-
Python Construct Library Explores the Python Construct library for building and parsing binary data. Highlights its utility for reliable serial communication in robotics systems. Includes examples of creating structured messages with CRC error-checking.
Resources
General Programming Resources
Technical Interview Preparation
Multithreading and Binary Parsing
Tutorials and Forums
- Learn Code the Hard Way: Without a doubt, the best, most comprehensive tutorials for Python and C in existence.
- CPlusPlus.com: Website providing syntax, examples, and forums for C and C++ code for almost all of the standard library that should be on all *nix systems.
- StackOverflow: Very popular and friendly programming community providing solutions to problems, and helpful tips for all programming languages.
- TopCoder C++ Standard Templace Tutorial: Highlights the power of the C++ Standard library
- LeetCode’s Algorithm Problem Sets: One the best places to practice for coding interviews.
Books
- General programming best practices - all of these books are quick reads, and will save you tons of time in the long run
- C++
- Effective C++, by Scott Meyers: A great second book on C++, going deeper into the language’s constructs and best practices. Also check out his other books