Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
560385a
Setting up GitHub Classroom Feedback
github-classroom[bot] Oct 9, 2023
4fe4460
Jakub/add project charter (#2)
jkaszowski Oct 18, 2023
9d03464
Repository setup (#3)
jkaszowski Oct 18, 2023
44e0f34
Add project schedule (#4)
jkaszowski Oct 24, 2023
4e43276
Information about camera and RPI
Pastucha Nov 15, 2023
6647234
back to
Pastucha Nov 15, 2023
19e860c
first commit
Pastucha Nov 15, 2023
e546fe3
Add desktop client (#5)
Pastucha Dec 18, 2023
7d8f0cd
Add STM32 project (#6)
jkaszowski Dec 18, 2023
796e8fb
rc.local
Pastucha Dec 18, 2023
c0f3358
rc.local
Pastucha Dec 18, 2023
46df6b9
Update client.py
Pastucha Dec 20, 2023
5f62ce5
fix speed logic
jkaszowski Dec 20, 2023
2492a1f
remove yolo detection
jkaszowski Dec 20, 2023
7f25b19
Add technical drawings (#8)
jkaszowski Jan 11, 2024
9cb956e
Add report template (#9)
jkaszowski Jan 14, 2024
d58b54b
Mikolaj/soft (#7)
Pastucha Jan 14, 2024
df4c712
Add motors control (#10)
jkaszowski Jan 15, 2024
c32121c
Minor client.py fixes (#11)
jkaszowski Jan 15, 2024
a8cc464
Add handling of servo commands (#12)
jkaszowski Jan 15, 2024
482a0ef
Update client.py
Pastucha Jan 16, 2024
f58c9e7
Add Computer Vision part (#13)
jkaszowski Jan 17, 2024
07cd9ea
Add Software and Low Level Software parts of the report (#16)
jkaszowski Jan 21, 2024
58b2cdc
Fix stream.sh (#17)
jkaszowski Jan 22, 2024
0f88c66
Add computer vision and mechanical part (#18)
jkaszowski Jan 23, 2024
ddcbd32
Update
Pastucha Jan 23, 2024
21207f9
Submitted for grading
jkaszowski Jan 24, 2024
ef87ca8
try to fix opencv (#15)
Pastucha Jan 24, 2024
b39bdf7
Add system overview section (#20)
jkaszowski Jan 29, 2024
132321d
Add missing newest PDF file (#21)
jkaszowski Jan 31, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 39 additions & 56 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,72 +1,55 @@
# A fancy titled project - Project documentation
# ECLIPSE - Project documentation

__:bangbang: Important :bangbang:__ This file is the documentation of your project. It should contain all requirements, crucial information and steps to reproduce your work. It may be used to evaluate your work at the final presentation, so make it understandable, easy to use and up-to-date.
![](images/eclipse_logo.png)

__:bangbang: Remark :bangbang:__ Remember to make your code clean and well documented
## Project structure

[Markdown basic syntax](https://www.markdownguide.org/basic-syntax/)
```
.
├── images
├── src
│ ├── computer-vision
│ ├── hardware
│ ├── rpi
│ ├── desktop
│ └── stm32
├── project_plan
│ ├── project_charter.md
│ └── project_tasks_n_schedule.md
└── report
└── report.md

### Do's
```

1. keep your repository clean
2. document your code
3. upload just the source code
4. upload compressed images
5. instead of movies upload gifs
6. repository should be as lightweight as possible
## Git usage

### Don'ts
First install git and oben `git bash` in a directory where you want to clone the repo. Then clone the repo with:

1. don't upload binary and temporary files
2. don't upload unnecesary copies of your files
3. don't upload heavy files
4. don't upload configuration files of your ide
```bash
git clone https://github.com/kcir-roberto/projects-jj-eclipse.git
```

In order to avoid conflicts, everybody should use their own branch. Please do not commit to master. To check on which branch you are, run

```
git branch --show-current
```

## Useful examples of markdown syntax
If it shows `main`, don't create any commits. Instead, switch to your branch using:

### Code
```bash
git checkout <your branch>
```

Code blocks are intended by four space or one tab. So this is a block code:
Or, if you don't have a branch yet, create one with:

if (linkPortCore * 23) {
clip.cc(guid, importPrinter.webmail_password_domain.usb_printer_gif(
spool_rpc, seoTextThunderbolt), frame_cell_ole);
tracerouteSystem += -5;
} else {
queueDisk(ppp);
gammaDesktopDns = mailDiskMemory;
dragBalanceWired = quicktime_word_macro(illegal_hibernate_srgb, 962835 +
5);
}

```bash
git branch <your branch>
```

### Tables
Please, as a name of your branch select `your name/topic`. This way its visible who is the owner and what is the purpose of the branch.
Once you are on your branch, use `git add`, `git commit` and `git push` to manage your stuff.

Tables in markdown can be made with use of hyphens (---) and pipes (|). Namely
### Links:

| header1 | header2 |
| ------- | ------- |
| elem1 | elem2 |
| elem3 | elem4 |

generates following table

| header1 | header2 |
| ------- | ------- |
| elem1 | elem2 |
| elem3 | elem4 |

### Images
Images can be included to the markdown page with use of the following syntax

![alternative text](path/to/the/image.png)

For example:

![cyrobek](images/CyRobek.png "load image to markdown file")

### Other useful elements of markdown syntax

___The basics of markdown syntax you will find here: [markdown basic syntax](https://www.markdownguide.org/basic-syntax/)___.
The basics of markdown syntax you will find here: [markdown basic syntax](https://www.markdownguide.org/basic-syntax/).
Binary file removed images/CyRobek.png
Binary file not shown.
Binary file added images/eclipse_logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added mechanics/Completed_Chasis_Drawing_v1.pdf
Binary file not shown.
70 changes: 52 additions & 18 deletions project_plan/project_charter.md
Original file line number Diff line number Diff line change
@@ -1,36 +1,70 @@
# A fancy titled project - Project Charter
# ECLIPSE - Project Charter

## Project description
The acronym ECLIPSE stands for rEmotely ControLled InsPection SystEm.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Eget nunc scelerisque viverra mauris in aliquam sem. Nunc sed id semper risus in hendrerit gravida rutrum. Ultrices eros in cursus turpis massa. At risus viverra adipiscing at in. Posuere urna nec tincidunt praesent semper feugiat nibh. Nascetur ridiculus mus mauris vitae ultricies. Volutpat odio facilisis mauris sit amet massa vitae tortor condimentum. Fermentum odio eu feugiat pretium nibh ipsum consequat nisl. Luctus venenatis lectus magna fringilla. Feugiat in fermentum posuere urna. Nisl rhoncus mattis rhoncus urna neque viverra justo. Ultricies integer quis auctor elit sed vulputate.
## Project objectives

## Reasons for undertaking the project
The purpose of this project is to create a small, remotely controlled device with a gripping unit. The design should allow to work in harsh environment and places not accessible by human.

Arcu non sodales neque sodales. Accumsan in nisl nisi scelerisque eu ultrices vitae auctor. Pellentesque adipiscing commodo elit at imperdiet. Morbi blandit cursus risus at ultrices mi tempus imperdiet nulla. Neque gravida in fermentum et sollicitudin ac orci. Nisl nunc mi ipsum faucibus vitae aliquet nec. Tempor id eu nisl nunc mi ipsum. Tristique senectus et netus et malesuada. In hac habitasse platea dictumst quisque sagittis. Ultricies tristique nulla aliquet enim tortor at auctor. Diam quis enim lobortis scelerisque fermentum dui faucibus in ornare. Sagittis aliquam malesuada bibendum arcu vitae elementum. Dignissim convallis aenean et tortor. Eget mi proin sed libero. Id aliquet risus feugiat in ante metus.
## Success criteria

## Objectives of the project
- The robot should be able to go through a rectangular hole 50 cm wide and 50 cm tall.
- The robot should have a gripping unit that enables picking up and moving payload modelled as a paper cube 2x2x2cm.
- The robot does not stop on obstacles shorter than 5mm.
- The robot should be able to drive for 5 minutes continuously or stand 30 minutes in idle.

Id consectetur purus ut faucibus pulvinar elementum. Eu ultrices vitae auctor eu augue ut lectus. Mi bibendum neque egestas congue quisque egestas diam in arcu. Elit eget gravida cum sociis natoque penatibus et magnis. Est lorem ipsum dolor sit amet consectetur adipiscing. Malesuada fames ac turpis egestas maecenas pharetra. Etiam non quam lacus suspendisse faucibus interdum. Amet volutpat consequat mauris nunc. Fringilla urna porttitor rhoncus dolor purus. Libero nunc consequat interdum varius sit amet mattis vulputate. Risus viverra adipiscing at in tellus integer. Amet est placerat in egestas erat imperdiet. Accumsan sit amet nulla facilisi morbi tempus iaculis urna id. Phasellus egestas tellus rutrum tellus. Pharetra magna ac placerat vestibulum lectus. Parturient montes nascetur ridiculus mus. Consectetur adipiscing elit duis tristique sollicitudin nibh sit amet.
## Optional success criteria

## Constraints of the project
- The robot recognizes following objects: scissors, teddy bear, cup, fork, knife, spoon, bowl, bottle, mobile phone.
- The robot should withstand spraying it with water from distance of 20cm using water sprayer creating mist.

Vitae turpis massa sed elementum tempus egestas sed. Volutpat commodo sed egestas egestas. Non pulvinar neque laoreet suspendisse. In arcu cursus euismod quis viverra nibh cras. Enim neque volutpat ac tincidunt. Odio facilisis mauris sit amet massa. A erat nam at lectus. Nascetur ridiculus mus mauris vitae ultricies. At in tellus integer feugiat scelerisque. Cursus euismod quis viverra nibh. Curabitur gravida arcu ac tortor dignissim convallis. Dolor morbi non arcu risus. Aliquam etiam erat velit scelerisque. Pellentesque dignissim enim sit amet venenatis urna. Porttitor lacus luctus accumsan tortor posuere ac ut consequat. Eros in cursus turpis massa tincidunt dui ut. Neque viverra justo nec ultrices dui sapien eget mi.
## Main stakeholders and responsibilities

## Directions concerning the solution
- Jakub Kaszowski: Project leader, low level programming
- Paweł Rak: Mechanical and visual design
- Suheyla Keskin: Hardware development
- Mikołaj Pastucha: Remote control, video streaming
- Ryan Oliver Roberts: Computer vision

Dui id ornare arcu odio ut sem. Congue eu consequat ac felis donec et. Neque egestas congue quisque egestas. In dictum non consectetur a erat nam at. Rutrum quisque non tellus orci. Odio tempor orci dapibus ultrices in iaculis nunc sed. Varius vel pharetra vel turpis nunc eget. Porttitor rhoncus dolor purus non enim praesent elementum. Senectus et netus et malesuada. Arcu non odio euismod lacinia at quis risus sed vulputate.
## Risks identified early on

## Main stakeholders and responsibilities
The biggest risks in coresponding parts of the project:

- Student no. 1: responsible for the implementation of the algorithm solving problem
- Student no. 2: responsible for the design of the PCB and hardware
- Student no. 3: responsible for acquisition and handling sensor data
- Hardware: mistakes on PCB, availability of components.
- Software: C++, drivers unable to handle project requirements.
- Mechanical too weak motors/servos, electronics heating up.
- Computer vision: insufficient lighting, not enough computational power.

All of the section have common risks:

## Risks identified early on
- Under estimated effort of tasks

## Risk mitigation

| Risk | Solution |
| ----------------------------------------------------------------- | --------------------------------------- |
| Errors in hardware design | Using breakout modules and unversal PCB |
| Lack of necessary components | Buying components before making PCB |
| Groundbreaking problems with suspension | Drop the objective |
| Problems with remote control with game controller using bluetooth | Connect it to PC using cable |
| Not enough computational power for computer vision | Offload computations to PC |
| Drivers unable to handle project requirements | Modify objectives |
| Insufficient lighting | Embed LED strip in front of camera |

## Projct milestones

Volutpat ac tincidunt vitae semper. Lorem mollis aliquam ut porttitor leo a diam. Euismod lacinia at quis risus sed vulputate odio ut enim. Fringilla ut morbi tincidunt augue interdum velit euismod. Phasellus vestibulum lorem sed risus ultricies tristique nulla aliquet enim. Massa sed elementum tempus egestas sed sed risus. Euismod elementum nisi quis eleifend quam adipiscing vitae proin sagittis. Sem nulla pharetra diam sit. Volutpat maecenas volutpat blandit aliquam etiam. Blandit turpis cursus in hac habitasse platea. Nisi scelerisque eu ultrices vitae auctor eu augue ut. Accumsan sit amet nulla facilisi.
1. The design of hardware is completed, software proof of concept is working (video streaming), design of chasis is completed.
2. The hardware is soldered and tested, software is partially completed (video streaming), mechanical elements are 3d printed and ready for assembly.

## Target project benefits
## Available resources

Turpis in eu mi bibendum neque. Neque viverra justo nec ultrices dui sapien. Risus sed vulputate odio ut enim blandit volutpat maecenas volutpat. Laoreet suspendisse interdum consectetur libero id faucibus nisl tincidunt. Sagittis purus sit amet volutpat consequat mauris nunc congue nisi. Mauris pharetra et ultrices neque ornare aenean euismod. Scelerisque mauris pellentesque pulvinar pellentesque. In hac habitasse platea dictumst quisque sagittis. Scelerisque varius morbi enim nunc faucibus a pellentesque sit. Scelerisque viverra mauris in aliquam sem. Tellus molestie nunc non blandit massa. Viverra accumsan in nisl nisi.
| Resource | Source |
| ---------------------------------------- | -------------------------------------- |
| Mechanical chasis, suspension and wheels | 3D printer or off-the-shelf components |
| 1 standard CSI camera | Lab resources or electronic shop |
| LED strip | Electronic shop |
| PCB | jlcpcb |
| STM32F1 | Already owned |
| Raspberry Pi 4 | Lab resources or already owned |
| Xbox One game controller | Already owned |
102 changes: 75 additions & 27 deletions project_plan/project_tasks_n_schedules.md
Original file line number Diff line number Diff line change
@@ -1,45 +1,93 @@
# A fancy titled project - Project Schedule
# ECLIPSE - Project Schedule

## Tasks
- Task 1:
- Task 2:
- Task 3:
- Task ...:
- Task 10:
- Task 11:

### Low Level Software

- Task 1: Project template for STM32 is setup
- Task 2: Driver for uart
- Task 3: Driver for servomechanism
- Task 4: Commands implementation
- Task 5: Bug fixing

### Hardware
- Task 6: Determination of components and ordering
- Task 7: List of needed features of custom design PCB
- Task 8: Having list and schematic of elements of require power, selection of rechargeable battery and calculation of power consumption of each element due to time
- Task 9: Custom PCB and ordering
- Task 10: Powering mechanical and electronic elements and testing (before the PCB receive)
- Task 11: Check point and risk control of hardware elements, decision of backup plans
- Task 12: Soldering the elements on PCB and mechanical structure of the car
- Task 13: Problem solving and improving (time for adjustments) and in case of failing on any kind of the parts decisions of the backup plans

### Software

- Task 14: Consideration of the languages to be used
- Task 15: Selecting libraries
- Task 16: Creating the application in QT
- Creating the GUI
- Backend - creating a client on the PC to communicate over TCP/IP
- Installing the server on the RPI
- Decision on commands to be used for communication
- Downloading the on-board camera stream in near real time
- Task 17: Communication delay tests
- Task 18: Deployment of the application

### Computer Vision

- Task 19: Selection of model and dataset to be used
- Task 20: Testing Image Capture
- Task 21: first round of image captures for training
- Task 22: second round of image capture for training
- Task 23: camera calibration for precise tracking
- Task 24: First test of running script on RPI
- Task 25: error correction

## Milestones
- Milestone no. 1: SMART description of the milestone
- Milestone no. 2: SMART description of the milestone
- Milestone no. ...: SMART description of the milestone
- Milestone no. N: [Final presentation]: SMART description of the milestone
- Milestone no. 1: The design of hardware is completed, software proof of concept is working (video streaming), design of chasis is completed.
- Milestone no. 2: The hardware is soldered and tested, software is partially completed (video streaming), mechanical elements are 3d printed and ready for assembly.
- Milestone no. 3: Final presentation, project submission

## Gantt chart

```mermaid
gantt
dateFormat YYYY-MM-DD
title A fancy titled project - Gantt Chart
title ECLIPSE - Gantt Chart

section Tasks
section Low Level Software
Task 1 :a1, 2023-10-01, 2023-10-15
Task 2 :a2, 2023-10-01, 2023-10-31
Task 3 :a3, 2023-11-01, 2023-11-19
Task 4 :a4, 2023-11-19, 2023-12-01
Task 5 :a5, 2023-12-02, 2023-12-10
Task 6 :a6, 2023-12-10, 2024-01-01
Task 7 :a7, 2024-01-02, 2024-01-16
Task 8 :a8, 2024-01-17, 2024-01-31
Task 9 :a9, 2024-02-01, 2024-02-15
Task 10 :a10, 2024-02-16, 2024-03-01
Task 11 :a11, 2024-03-02, 2024-03-16
Task 6 :a6, 2023-12-10, 2023-12-20
section Hardware
Task 7 :a7, 2023-10-10, 2023-10-26
Task 8 :a8, 2023-10-10, 2023-10-26
Task 9 :a9, 2023-10-26, 2023-11-05
Task 10 :a10, 2023-11-05, 2023-11-23
Task 11 :a11, 2023-11-23, 2023-11-30
Task 12 :a12, 2023-11-23, 2023-12-09
Task 13 :a11, 2023-12-09, 2023-12-16
section Software
Task 14 :a11, 2023-10-10, 2023-10-26
Task 15 :a11, 2023-10-10, 2023-10-26
Task 16 :a11, 2023-10-26, 2023-11-30
Task 17 :a11, 2023-11-30, 2023-12-09
Task 18 :a11, 2023-11-30, 2023-12-09
section Computer Vision
Task 19 :a11, 2023-10-05, 2023-10-10
Task 20 :a11, 2023-10-10, 2023-10-15
Task 21 :a11, 2023-10-15, 2023-10-20
Task 22 :a11, 2023-10-20, 2023-10-30
Task 23 :a11, 2023-10-30, 2023-11-05
Task 24 :a11, 2023-11-05, 2023-11-08
Task 25 :a11, 2023-11-08, 2023-11-11
Task 26 :a11, 2023-11-11, 2023-11-15

section Milestones
Milestone 1 :m1, after a2, 2023-10-31
Milestone 2 :m2, after a4, 2023-12-01
Milestone ... :m3, after a7, 2024-01-16
Milestone N :m4, after a11, 2024-03-16
```


More about how to make a gantt chart in mermaid, you will find here: [Mermaid Gantt](https://mermaid.js.org/syntax/gantt.html)
Milestone 1 :m1, after a9, 2023-11-05
Milestone 2 :m2, after a12, 2023-12-09
Milestone 3 :m2, 2024-01-17, 2024-01-17
```
24 changes: 24 additions & 0 deletions report/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
SHELL = /bin/sh

FILE0 = document
TEX = $(FILE0).tex
XDV = $(FILE0).xdv
PDF = $(FILE0).pdf

all:
make tex

tex:
xelatex -no-pdf $(TEX)
# xdvipdfmx.exe $(XDV)
xelatex -synctex=1 -interaction=nonstopmode $(TEX)
make clean

pw:
zathura document.pdf &

help:
echo "USAGE: make [all/tex/pw/clean]"

clean:
rm -f *.aux *.dvi *.idx *.ilg *.ind *.log *.nav *.out *.snm *.xdv *.toc *~
Binary file added report/document.pdf
Binary file not shown.
Loading