|
1 | | -## Overview |
2 | | -The **Robotics Knowledgebase** is the Wiki for Robot Builders. It exists to advance knowledge in the robotics discipline. We document and share application details left out of textbooks and academic papers. |
3 | | - |
4 | | -This Knowledgebase holds knowledge essential to building working robots. We believe robots should be built to solve specific problems. We take a systems-based approach to creating them. We include Project Management practices to ensure project completion. |
5 | | - |
6 | | -## Contribution Quickstart Guide |
7 | | -### New Entries |
8 | | -To submit an original article follow these steps: |
9 | | -1. Fork this repository. |
10 | | -2. Locate the appropriate directory for your submission in `/wiki`. |
11 | | -3. Copy `_templates/template.md` into the directory. |
12 | | -4. Write your article. We recommend the following options: |
13 | | - - Connect [Prose.io](http://prose.io/) to your Github account and write from your browser. |
14 | | - - Clone the repository to your device. We recommend using the [Atom editor](https://atom.io/) with the [Markdown-Writer](https://atom.io/packages/markdown-writer) and [Markdown-Image-Helper](https://atom.io/packages/markdown-image-helper) packages. |
15 | | -5. Rename `template.md` to the subject of your article. The new name should be lowercase, have hyphens for spaces, and end with `.md` (`this-is-an-example.md`) |
16 | | -6. Add a link to your article to `_data/navigation.yml` under the `wiki` heading. |
17 | | - - Do not modify the `main` or `docs` lists. |
18 | | -7. Submit a pull request to the Robotics Knowledgebase. |
19 | | - - If you're working from your device, don't forget to add, commit, and push your changes first. |
20 | | -8. Editors may request changes before they accept your pull request. Use their feedback to improve your entry and resubmit. |
21 | | - |
22 | | -### Improving Articles |
23 | | -If you spot a mistake (or think that you have an improvement to an article), [create an issue](https://github.com/RoboticsKnowledgebase/roboticsknowledgebase.github.io/issues) to discuss your recommended changes. |
24 | | - |
25 | | -### Keeping your Fork Updated |
26 | | -Syncing a fork is accomplished through git on your local device. You should already have Git installed and cloned your fork to your computer. |
27 | | -1. Navigate to the working directory of your local project. |
28 | | -2. Configure a remote that points to the upstream repository. On your Linux device, use: |
29 | | - - `git remote add upstream https://github.com/RoboticsKnowledgebase/roboticsknowledgebase.github.io`. |
30 | | - - This only needs to be done once. |
31 | | -3. Use `git remote -v` to verify that the upstream repository is listed. |
32 | | -4. Fetch the latest commits from the upstream repository. These will be stored in a local branch `upstream/master`: |
33 | | - - `git fetch upstream` |
34 | | -5. Check out your fork's local `master` branch: |
35 | | - - `git checkout master` |
36 | | -6. This brings your fork's master branch into sync with the upstream repository, **without losing your local changes**: |
37 | | - - `git merge upstream/master` |
38 | | - |
39 | | -### Clear Changes and Update your Fork |
40 | | -This method is used specifically to erase all changes to your fork and replace it with the most updated copy of the Wiki. |
41 | | -1. Follow steps 1-5 from **Keeping your Fork Updated** above. |
42 | | -2. Reset your local repository: |
43 | | - - `git reset --hard upstream/master ` |
44 | | -3. Force the new repository to overwrite your remote fork: |
45 | | - - `git push origin master --force` |
46 | | - |
47 | | -## Site Structure |
48 | | -### Supporting technology |
49 | | -The Robotics Knowledgebase makes use of the following: |
50 | | -- [Github Pages](https://help.github.com/categories/20/articles) |
51 | | -- [Jekyll](https://jekyllrb.com/) |
52 | | -- [Minimal Mistakes Theme](https://mmistakes.github.io/minimal-mistakes/) by [Michael Rose](https://mademistakes.com/) |
53 | | -- [MathJax](http://docs.mathjax.org/en/latest/) |
54 | | - |
55 | | -### Directories |
56 | | -The wiki itself is contained in the `/wiki` folder. The `/docs` folder exists to contain future documentation on contributing and supporting the wiki. The wiki contains the following categories: |
57 | | -- **Controls & Actuation** |
58 | | - - Topics related to the moving components including motors and controls. |
59 | | -- **Common Platforms** |
60 | | - - Covers common hardware and software frameworks used in robotics. ROS is included here. |
61 | | -- **Computing** |
62 | | - - Topics related to hardware brains for robotics including on-board computers and cluster computing. |
63 | | -- **Fabrication** |
64 | | - - Topics related to techniques and tools for fabricating a robot. |
65 | | -- **Interfacing** |
66 | | - - Covers means of interfacing with a robot outside of networking. |
67 | | -- **Networking** |
68 | | - - Topics related to communications infrastructure for robotics including programming and wireless technologies. |
69 | | -- **Programming** |
70 | | - - General programming topics including languages and practices. |
71 | | -- **Project Management** |
72 | | - - Topics related to project management practices. |
73 | | -- **Sensing** |
74 | | - - Covers topics related to sensors including computer vision and cameras. |
75 | | -- **State Estimation** |
76 | | - - Topics related to the position and orientation of a robot including navigation, localization, and mapping. |
77 | | -- **System Design and Development** |
78 | | - - Covers topics related to Systems Engineering. |
79 | | -- **Tools** |
80 | | - - Useful hardware and software for robotics not used directly in the robot itself. |
81 | | - |
82 | | -## Directory Structure |
83 | | -Individual subfolders should contain both an `/assets` folder (for supporting files including images) and an `index.md` file. |
84 | | -## Future Work |
85 | | -This Knowledgebase is an evolving project. There are numerous areas for improvement in both content and site features. |
86 | | - |
87 | | -### Needed topics |
88 | | -- Introduction to planning your robotics project |
89 | | -- Updated overview of single-board computers (`/wiki/computing/single-board-computers.md`) |
90 | | -- Mobility Overview (put in `/actuation`) |
91 | | -- Manipulation Overview (put in `/actuation`) |
92 | | -- State Estimation Overview |
93 | | -- System Engineering Overview |
94 | | -- Using GPUs for Computer Vision |
95 | | -- Using GPUs for Machine Learning |
96 | | -- V-model |
97 | | - |
98 | | -### Todo |
99 | | -- Logo for Robotics Knowledgebase |
100 | | -- Writing & style standards |
101 | | -- Link to Github |
102 | | -- Collapsed Navigation for sidebar |
103 | | -- Separate repositories for content and technical files |
104 | | -- Dynamic Navigation Generation |
105 | | -- ~~Default template~~ |
106 | | -- ~~Implement Math Support~~ |
| 1 | +# Robotics Knowledgebase 🤖 |
| 2 | + |
| 3 | +[](https://github.com/RoboticsKnowledgebase/roboticsknowledgebase.github.io/actions/workflows/jekyll-github-pages-deploy.yml) |
| 4 | +[](https://opensource.org/licenses/MIT) |
| 5 | + |
| 6 | +The **Robotics Knowledgebase** is an open-source wiki for robot builders, researchers, and hobbyists. It focuses on the practical application details often omitted from textbooks—the "tribal knowledge" required to build, program, and deploy working robotic systems. |
| 7 | + |
| 8 | +We take a **systems-based approach**, integrating engineering best practices with hands-on implementation guides for modern robotics frameworks. |
| 9 | + |
| 10 | +--- |
| 11 | + |
| 12 | +## 🚀 Quickstart for Contributors |
| 13 | + |
| 14 | +We welcome contributions from the community! Whether you're fixing a typo or adding a new deep-dive article, here's how to get started. |
| 15 | + |
| 16 | +### Adding New Articles |
| 17 | +1. **Fork** the repository and clone it locally. |
| 18 | +2. **Choose a category** in the `/wiki` directory (e.g., `sensing`, `actuation`, `programming`). |
| 19 | +3. **Template**: Copy `/_templates/template.md` to your chosen directory. |
| 20 | +4. **Name**: Rename it using `kebab-case.md` (e.g., `my-new-sensor-guide.md`). |
| 21 | +5. **Write**: Author your article using Markdown. |
| 22 | + - Use absolute paths for images: ``. |
| 23 | + - Use absolute paths for internal links: `[Other Page](/wiki/category/other-page/)`. |
| 24 | +6. **Navigation**: Add your entry to `/_data/navigation.yml` and the parent category's `index.md`. |
| 25 | +7. **Build & Test**: See 'Local Development' below on instructions to build and deploylocally. Open all modified pages and verify your changes visually. |
| 26 | +7. **PR**: Submit a Pull Request. Our editors will review and provide feedback. Follow through with changes until merge. |
| 27 | + |
| 28 | +--- |
| 29 | + |
| 30 | +## 🛠 Local Development |
| 31 | + |
| 32 | +To build and preview the site locally, we recommend using a Ruby virtual environment for dependency isolation. |
| 33 | + |
| 34 | +### Prerequisites |
| 35 | +- **Ruby version manager**: We recommend [rbenv](https://github.com/rbenv/rbenv) to manage Ruby versions. |
| 36 | + - **macOS**: `brew install rbenv` |
| 37 | + - **Linux**: See the [rbenv installer](https://github.com/rbenv/rbenv-installer) or use your package manager. |
| 38 | + |
| 39 | +### Setup and Build |
| 40 | +1. **Install Ruby**: |
| 41 | + From root of the project, run: |
| 42 | + ```bash |
| 43 | + rbenv install $(cat .ruby-version) |
| 44 | + ``` |
| 45 | +2. **Install Bundler**: |
| 46 | + ```bash |
| 47 | + gem install bundler |
| 48 | + ``` |
| 49 | +3. **Configure local path**: |
| 50 | + ```bash |
| 51 | + bundle config set --local path 'vendor/bundle' |
| 52 | + ``` |
| 53 | +4. **Install dependencies**: |
| 54 | + ```bash |
| 55 | + bundle install |
| 56 | + ``` |
| 57 | +5. **Local Preview**: |
| 58 | + ```bash |
| 59 | + bundle exec jekyll serve |
| 60 | + ``` |
| 61 | + The site will be available at `http://localhost:4000`. |
| 62 | + |
| 63 | +--- |
| 64 | + |
| 65 | +## 📂 Project Structure |
| 66 | + |
| 67 | +### Supporting Technology |
| 68 | +- **Engine**: [Jekyll](https://jekyllrb.com/) (Static Site Generator) |
| 69 | +- **Theme**: [Minimal Mistakes](https://mmistakes.github.io/minimal-mistakes/) |
| 70 | +- **Hosting**: [GitHub Pages](https://pages.github.com/) |
| 71 | +- **Math**: [MathJax](https://www.mathjax.org/) (LaTeX rendering) |
| 72 | + |
| 73 | +### Key Directories |
| 74 | +- `/wiki/`: The core content, organized by robotic subsystem. |
| 75 | +- `/_data/`: Navigation and UI configuration. |
| 76 | +- `/assets/images/`: Central store for all diagrams and photos. |
| 77 | +- `/_templates/`: Base templates for new wiki entries. |
| 78 | + |
| 79 | +--- |
| 80 | + |
| 81 | +## 🗺 Wiki Categories |
| 82 | + |
| 83 | +- **[Controls & Actuation](/wiki/actuation/)**: Motors, PID, and motion control. |
| 84 | +- **[Common Platforms](/wiki/common-platforms/)**: ROS, UAVs, and mobile bases. |
| 85 | +- **[Computing](/wiki/computing/)**: SBCs, GPUs, and embedded controllers. |
| 86 | +- **[Fabrication](/wiki/fabrication/)**: 3D printing, machining, and prototyping. |
| 87 | +- **[Interfacing](/wiki/interfacing/)**: Microcontrollers and low-level protocols. |
| 88 | +- **[Networking](/wiki/networking/)**: Communications and distributed systems. |
| 89 | +- **[Programming](/wiki/programming/)**: Languages, libraries (Eigen, Boost), and practices. |
| 90 | +- **[Project Management](/wiki/project-management/)**: Workflows for robotics teams. |
| 91 | +- **[Sensing](/wiki/sensing/)**: Computer vision, LiDAR, and IMUs. |
| 92 | +- **[State Estimation](/wiki/state-estimation/)**: SLAM, localization, and navigation. |
| 93 | +- **[System Design](/wiki/system-design-development/)**: Systems engineering for robotics. |
| 94 | +- **[Tools](/wiki/tools/)**: External software, editors, and utilities. |
| 95 | + |
| 96 | +--- |
| 97 | + |
| 98 | +## 🤝 Community & Support |
| 99 | +If you find a bug or have a suggestion, please [open an issue](https://github.com/RoboticsKnowledgebase/roboticsknowledgebase.github.io/issues) or join the discussion in our Pull Requests. |
| 100 | + |
| 101 | +--- |
| 102 | +*Maintained by the Robotics Knowledgebase Team. Built for the community, by the community.* |
0 commit comments