-
Notifications
You must be signed in to change notification settings - Fork 0
Software Reading List
Tianshu Huang edited this page Oct 13, 2018
·
13 revisions
- Python 3, for vision and control
- A few (many actually) Python tips - watch this for some tips on how to be more 'pythonic'
- Take a look at
threadingandmultiprocessing
- C++ / Arduino
- May also be used to implement computations used in vision or decision making algorithms, and called as Python modules
- Rust?
- OpenCV (See below)
- Numpy (with emphasis on linear algebra)
- Possible web server run using flask or django; this server would be used for controlling multiple robots or providing a debug output.
OpenCV will be used to identify obstacles, cubes, the mothership, etc.
-
Relevant algorithms:
-
SIFT: Scale Invariant Feature Transform
- a feature detector specializing in edges
- old-ish (2004) but still quite effective
- good tutorial here
-
SURF: Speeded Up Robust Features
- feature detector specializing in regions of colors (a blob detector)
- faster than SIFT, and better in many circumstances
- tutorial here
-
NOTE: in order to use SIFT / SURF, you will need to build OpenCV with the opencv_contrib package; also in the tutorial, instead of creating a SIFT/SURF detector with
cv2.SIFT()orcv2.SURF, these detectors have been moved toxfeatures2d:
sift = cv2.xfeatures2d.SIFT_create() # Returns SIFT object surf = cv2.xfeatures2d.SURF_create() # Returns SURF object
-
Hough line transform / circle transform
- Detect lines and circles in an image
- Tutorial for lines
- Tutorial for circles
-
QR Code scanning with ZBar (an external library)
- Tutorial
- If we use QR codes as identification, version 1 QR codes or Micro QR codes will be used
-
- HSV and RGB color space (NOTE: the default color space for OpenCV is
BGRwhich is literallyRGBbackwards, because reasons) - Dynamic threshholding and K-means
- PID controller
- Markov chains and the (more useful for robotics) Markov decision process
- Monte Carlo Tree Search
- SLAM (Simultaneous Localization and Mapping)
- Combinatorial Filters
- Application of Kalman Filters to SLAM / Extended Kalman Filters for SLAM
- Range-only SLAM with indistinguishable landmarks
- Bearing-only SLAM with indistinguishable landmarks