vault backup: 2025-02-03 07:04:13
This commit is contained in:
BIN
99 Work/.syncthing.Learnings von Skill Check Cross Ing.md.tmp
Normal file
BIN
99 Work/.syncthing.Learnings von Skill Check Cross Ing.md.tmp
Normal file
Binary file not shown.
@@ -1,3 +0,0 @@
|
||||
.obsidian/
|
||||
.obsidian
|
||||
.DS_Store
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,20 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-10-13
|
||||
---
|
||||
## Tasks
|
||||
- [ ] Do review of jerrys code
|
||||
- [ ] get the demo to work. why is offboard mode not working
|
||||
- [ ] do a quick dummy project to learn how to implement tests in ros (and cmake)
|
||||
- [ ] then implement tests for the trajectory generator library (negative values if smaller than 10m)
|
||||
|
||||
## Quick Notes
|
||||
- #todo/p yuka protein article to obisdian
|
||||
- #todo/p make a list of tags in my main obsidian vault that I can use to organize things
|
||||
|
||||
## Learnings
|
||||
|
||||
- ich habe keine Ahnung über Drohnenindustrie. Kenne keine Firmen und nur wenig über gesetz. Keine Kürzel etc.
|
||||
- sabi war wieder hier, spannende lektüre über USA und Sowjetunion. er überlegt sich sehr viel bezüglich volkswirtschaft. Währungsunion: DE profitiert, da falls sie zurück zur Deutschen Mark gehen ist DM stärker als euro. Italien oder Griechenland nicht, sie könnten sich nichts mehr kaufen (sie selbst produzieren auch nichts.)
|
||||
- ewiges Gespräch über was wir machen sollten mit Firma.
|
||||
@@ -1,24 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-10-16
|
||||
---
|
||||
## Tasks
|
||||
- [ ] Find a way to properly implement the PX4-Commander
|
||||
|
||||
## Quick Notes
|
||||
### PX4-Commander
|
||||
The idea of this module is that there is one instance running that handles all commands that are being sent to the px4 flight controller. Because as soon as the px4-offboard mode is being used we need to stream commands at a minimum of 2 Hz, else PX4 will fallback to another flightmode and thus we loose control.
|
||||
If we now want to implement different behaviors that can be combined together, such as a hooklanding, delivery procedure, keep position, loiter, etc. we need a way of sending those commands continuosly without interruption.
|
||||
There are different approaches on how we could implement this:
|
||||
1. one central node (px4-commander) that runs its main loop and has multiple action servers, where each action server implements one behavior. The central node then manages those actions and makes sure that only one can be executed at the time (I think of it as if we hand a baton from one action server to the next as in a relay race). If no action is actively running the central node immediately runs a fallback (keep position) to keep the drone in px4-offboard mode.
|
||||
2. Look at how NAV2 implements this and see if we can copy it. The NAV2 library is implemented well and we should get inspired by it.
|
||||
|
||||
|
||||
#### Thoughts
|
||||
#osd-thoughts
|
||||
Ich kann mich nicht spezialisieren. Nach den heutigen Recherchen sehe ich wie kompliziert ROS2 sein kann (und auch wie effizient). Jedoch kratze ich nur immer an der Oberfläche für eine schnelle Implementierung und kann unsere Software nicht gründlich und langfrisitg implementieren.
|
||||
|
||||
Ich bin gestresst. Heute habe ich fast alle meine Nägel inkl. Haut abgeknabert. Ich war wie in einer Paralyse und konnte mich nicht dazu bringen irgendetwas zu machen. Ich fühlte mich komplett überwältigt und eingefroren. Ich weiss eigentlich was ich machen sollte, kann mich aber nicht dazu bringen es auszuführen.
|
||||
## Learnings
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-10-17
|
||||
---
|
||||
## Tasks
|
||||
- [x] Continue with nav3
|
||||
|
||||
## Quick Notes
|
||||
|
||||
|
||||
## Learnings
|
||||
|
||||
#cpp you need to compile before you run the codes --> do this with a macro not to forget it every time
|
||||
@@ -1,65 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-10-19
|
||||
---
|
||||
## Tasks
|
||||
- [ ] Write node that generates Odometry message and topic for the odometry_utils smoother.
|
||||
- [ ] implement tasks in vscode to run tests efficiently
|
||||
- [ ] Maybe implement a devcontainer? --> how would you do that with credentials?
|
||||
- [ ] write obsidian articles about pointers: inspiration here: https://iamsorush.com/posts/weak-pointer-cpp/
|
||||
|
||||
|
||||
- [ ] prepare swashplate testing
|
||||
- [ ] prepare drone for tomorrow
|
||||
- [ ] call with jerry
|
||||
- [ ]
|
||||
|
||||
Tomorrow:
|
||||
finish nav3_bt_navigator:
|
||||
make sure that the behaviortrees that are added contain only BT-nodes that exist
|
||||
make sure that the default plugin-list only contains BT-nodes that exist
|
||||
write instructions on how to add a new plugin/bt-node: [[How to add a Behavior Tree Node]] --> it needs to be added to the default list in bt_navigator/bt_navigator.cpp as well.
|
||||
|
||||
## Quick Notes
|
||||
|
||||
|
||||
### Talk with Jerry
|
||||
TODOS
|
||||
- [ ] ask about proximity cost again
|
||||
#### 3D map is in C#
|
||||
**PathfinderDepthValues**
|
||||
Calculates length of the fruxels (initFixedValues)
|
||||
Fruxelsystem:
|
||||
64 Onion layers (index i), first 15 layers are linear, then the length is increased exponentially with a compound factor.
|
||||
![[Pasted image 20231019124320.png]]
|
||||
Node means Fruxel.
|
||||
GetNodePosition: get position of the node/fruxel center relative to the drone center
|
||||
ProximityCost: [Document](https://onesecinc.atlassian.net/wiki/spaces/MC1/pages/201195521/3D+foundation+model) that defines it (90+sqrt) --> implemented in CalculateProximityCost
|
||||
GetDistanceForIndex: distance from center to the start
|
||||
|
||||
**FruxelNode**
|
||||
understand x y and z
|
||||
![[Pasted image 20231019125901.png]]
|
||||
x is 360°, y is 180°
|
||||
|
||||
**FruxelGrid**
|
||||
This is the 3D-map
|
||||
GetNode function: takes care of wrapping fruxel indices
|
||||
3DMapHierarchy is not important for me.
|
||||
|
||||
#### Pathfinder is in C++
|
||||
It is designed as a library --> inigo did use it as well.
|
||||
Grid.cpp --> fruxelgrid
|
||||
GridNode.cpp --> FruxelNode
|
||||
|
||||
PathFinderController: entry point
|
||||
|
||||
## Learnings
|
||||
|
||||
|
||||
## Todo Longterm
|
||||
- [ ] write down manufacturing steps and products.
|
||||
- [ ] propeller manufacturing / prototyping
|
||||
- [ ] carbon fiber parts
|
||||
- [ ]
|
||||
@@ -1,14 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-10-23
|
||||
---
|
||||
## Tasks
|
||||
- [ ] implement fruxel grid
|
||||
|
||||
## Quick Notes
|
||||
|
||||
|
||||
## Learnings
|
||||
Did I learn something today? Hmm. Not sure.
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-10-25
|
||||
---
|
||||
## Tasks
|
||||
- [x] #todo/p Steuerleitfaden 23: 5k von mum
|
||||
- [ ] #todo/p Steuer begleitdokumente via Obsidian machen. Dann kann ich von überall darauf zugreifen.
|
||||
- [ ] #todo/p little snitch app on mac --> what network connections are allowed and which ones arent
|
||||
- [ ] #todo/p use git/gihub to sync and backup
|
||||
- [ ] #todo/p use nas to backup
|
||||
- [ ] #todo/p [home-assistant](https://youtu.be/imH01FvTssc?t=201) on NAS
|
||||
- [ ] #todo/p monica crm on NAS
|
||||
- [ ] #todo/p web site change detection on NAS
|
||||
|
||||
## Quick Notes
|
||||
|
||||
|
||||
## Learnings
|
||||
### Wrapping
|
||||
#learning/bite
|
||||
2D Wrapping of Latitude and Longitude is more complicated than the simple modulus operation as with angles.
|
||||
This [gist](https://gist.github.com/missinglink/d0a085188a8eab2ca66db385bb7c023a) helped me understand what is happening.
|
||||
#learning/cpp
|
||||
- how to compare two files in VSCode ;; right click first: *select for Compare*, 2nd file right click: *Compare with Selected*
|
||||
<!--SR:!2024-03-11,55,310-->
|
||||
|
||||
|
||||
### Visibility
|
||||
#learning/bite
|
||||
If you want to make something visible on any background you can use a harsh contrast change (just like a chess board). On a dark background the white parts will stand out, whereas on a bright background the dark parts will stand out. So you will always be able to see the shape of the object. The same works with neural networks. This was used with our landing hooks
|
||||
|
||||
### Lex Fridman Podcast
|
||||
[Jared Kushner with Lex Fridman](https://lexfridman.com/jared-kushner-transcript)
|
||||
#quote
|
||||
> You learn the most about who you want to be and how the world works from your lowest moments. And at those lowest moments, it made me better and it taught me how to be a better friend to people who are in tough situations.
|
||||
|
||||
\- Jared Kushner, 2023
|
||||
|
||||
|
||||
#quote
|
||||
>And I just went into battle mode and I put my armor on and I just ran into it. And for the next two years, every day was painful. I was dealing with banks, the company still had subpoenas, I was still in law school. I’d tell my father I wanted to drop out of law school and business school, but he said, “Please don’t.”
|
||||
>...
|
||||
>And it was just a very, very challenging time. But like I said to you before is that you learn the most about life and you learn the most about humanity and yourself when you’re in your most challenging periods.
|
||||
|
||||
\- Jared Kushner, 2023
|
||||
|
||||
Ich kann nachvollziehen wieso sie das sagen. An deinen tiefsten Punkten bist du verletzlich und denkst viel mehr darüber nach was alles nicht gut läuft. Du merkst vielleicht wie sich andere Leute entgegen deinen Erwartungen verhalten.
|
||||
___
|
||||
|
||||
#quote
|
||||
>And what happened was is he was walking around the pool and I just started walking with him and he said to me, “Jared, in life sometimes, we get so powerful that we believe that we’re the dealer.” He says, “But we’re not the dealer. God’s the dealer. And we have to come down to earth to understand,” like you said. So what I took from that was that my father, with all of his success, had started to believe that maybe certain rules didn’t apply to him. And I think that that’s where he made a mistake. And I think he had a lot of regret that he made the mistake. And my father is a very humble person. He’s a very moral person.
|
||||
|
||||
\- Jared Kushner, 2023
|
||||
|
||||
Das ist eine Weise aussage und ich glaube sie trifft auf F zu. Aber ich glaube nicht, das F so reflektiert ist. Wie kann ich mich selber immer wieder daran erinnern, dass mir das nicht passiert?
|
||||
@@ -1,73 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-10-26
|
||||
---
|
||||
## Tasks
|
||||
- [ ] #todo/b finish file format implementation (v0.2, unit tests)
|
||||
- [ ] #todo/b Add automated unit tests in the gitlab
|
||||
- [ ] #todo/b use the fileformat in the 3d map implementation
|
||||
- [ ] #todo/p start exam_generator project. Is this a software that can actually make profit?
|
||||
- [ ] #todo/p mario games auf tutti
|
||||
- [x] Add v0.2 samples to testing #todo/b ⏫ 📅 2023-10-27 ✅ 2023-10-27
|
||||
- [x] Implement the gitlab CI for the unit tests of the fileformat project #todo/b 🔽 📅 2023-10-27 ✅ 2023-10-27
|
||||
|
||||
## Quick Notes
|
||||
|
||||
|
||||
## Learnings
|
||||
#learning/investing
|
||||
- Compound interest is key to building wealth. The average yearly return of the S&P 500 over the last 30 years was 9.9% (or 7.2% inflation-adjusted).
|
||||
|
||||
#learning/cpp
|
||||
* how long is `"hi"` as a char array? ;; Length 3. In addition all char arrays in C and C++ contain the null terminator indicating the end of this string: `"h", "i", "\0"`
|
||||
<!--SR:!2023-12-10,14,290-->
|
||||
|
||||
[[GTest Framework|GoogleTest]] is actually a great method to test your code during development. I should always start with google test instead of a dummy main function that executes stuff and immediately shows if its working or not.
|
||||
It is also surprisingly easy to get started with the google test library in C++. You just need to define the following [[CMake|CMakeLists.txt]] in your `test` subfolder:
|
||||
```cmake
|
||||
# 1. integrate GTest
|
||||
include(FetchContent)
|
||||
|
||||
FetchContent_Declare(
|
||||
googletest
|
||||
GIT_REPOSITORY https://github.com/google/googletest.git
|
||||
GIT_TAG release-1.11.0
|
||||
)
|
||||
|
||||
FetchContent_MakeAvailable(googletest)
|
||||
add_library(GTest::GTest INTERFACE IMPORTED)
|
||||
target_link_libraries(GTest::GTest INTERFACE gtest_main)
|
||||
|
||||
# 2. add test executable
|
||||
set(test_exe_name ${library_name}_test)
|
||||
add_executable(${test_exe_name} test_onesec3d_cpp.cpp)
|
||||
|
||||
target_link_libraries(${test_exe_name}
|
||||
PRIVATE
|
||||
${library_name}
|
||||
GTest::gtest
|
||||
GTest::gtest_main
|
||||
)
|
||||
|
||||
add_test(onesec3d_tests ${test_exe_name})
|
||||
set_tests_properties(onesec3d_tests PROPERTIES
|
||||
ENVIRONMENT
|
||||
DATADIR=${CMAKE_CURRENT_SOURCE_DIR}/sample_3d_files/
|
||||
)
|
||||
```
|
||||
Once this is done you can implement your test in the specified executable test file. For example:
|
||||
```cpp
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
TEST(test_onesec3d, test_read_rewrite_equal_hash)
|
||||
{
|
||||
// ... do your testing stuff
|
||||
// execute tests
|
||||
ASSERT_EQ(1, 1);
|
||||
}
|
||||
|
||||
```
|
||||
The `DATADIR` environment variable in `set_test_properties` is a smart way to pass the test folder of the build to the test file in order to use assets such as files etc in your tests.
|
||||
|
||||
#learning/cpp this seems a good learning resource for cpp: https://matgomes.com/integrate-google-test-into-cmake/
|
||||
@@ -1,25 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-10-30
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
___
|
||||
### New Tasks
|
||||
- [x] Do BMS review #todo/b ⏫ 📅 2023-10-30 ✅ 2024-01-04
|
||||
## Quick Notes
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-10-31
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
#learning/investing
|
||||
what is an **equal weight index** ;; it weighs each company of an index by an equal weight instead of their market cap
|
||||
<!--SR:!2024-03-26,55,310-->
|
||||
what are the characteristics of an equal weight index compared to a index by market cap? ;; usually higher returns, more volatility. Needs rebalancing
|
||||
<!--SR:!2024-02-04,4,230-->
|
||||
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-11-03
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
___
|
||||
### New Tasks
|
||||
- [ ] Solve mail problem Alkademiker #todo/p
|
||||
- [ ] learn how to use shared pointers #todo/b 📅 2023-11-07
|
||||
- [ ] finish lat/lon wrapping and test it (use ipad images) #todo/b 📅 2023-11-07
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-11-10
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
___
|
||||
### New Tasks
|
||||
- [ ] Learnings von VWRL CHF oder EUR in Artikel schreiben #todo/p
|
||||
## Quick Notes
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
### Investing
|
||||
Es kommt nicht darauf an wo ich den ETF kaufe (ob SWX in CHF oder EAM in EUR) der darunterliegende ETF-kurs ensptricht immer dem Wechselkurs. Unterschiedlich hingegen ist die Liquidität (an welchem Exchange wird mehr gehandelt) und die Gebühren von meinem Broker. Die Gebühren muss ich mir genauer anschauen: Wie viel sind Kauf-/ Verkaufsgebühren in SWX in CHF wenn ich einmal 100k verkaufen möchte? Und wie hoch wären die FX-trade Gebühren?
|
||||
|
||||
- https://forum.mustachianpost.com/t/vwrl-to-buy-in-chf-or-eur/3621/20
|
||||
- https://www.nzz.ch/finanzen/bitte-keine-us-aktien-vom-erbonkel-ld.739044
|
||||
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-11-14
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
#learning/dev-process
|
||||
1. Bevor ich versuche intelligent zu sein und eine automatisierte Test-suite zu schreiben, sollte ich ganz einfache Hypothesen überprüfen. Ich habe heute Koordinaten transformationen gemacht wo ich ein nicht genau definiertes System von Jerry bekommen habe (JSON file mit punkten). Ich habe stunden damit verbracht mein Code anzupassen weil die automatischen Unit Tests nicht funktioniert haben, aber dabei war Jerrys information falsch. Es wäre sehr einfach gewesen das rauszufinden wenn ich mir nur kurz ein paar Punkte genauer angeschaut hätte und +-X, +- Y und +- Z definiert hätte.
|
||||
2. [[C++]]: #learning/cpp
|
||||
1. iterator objects are pointers to a element of a container. In order to get the index of an object we can take the iterator and substract the adress of the first element of the container: `it - container.begin()`
|
||||
2. there are ways to find elements of containers using the standard library: `std::upper_bound`, `std::lower_bound`
|
||||
```c++
|
||||
auto it = std::upper_bound(radial_distance_map_.begin(), radial_distance_map_.end(), radius);
|
||||
|
||||
if (it == radial_distance_map_.end()) { return false; } // couldn't find the radius
|
||||
|
||||
mz = it - radial_distance_map_.begin() - 1; // take element just before the iterator to get the
|
||||
```
|
||||
3. I have learned a lot about [Spherical Coordinate systems](https://en.wikipedia.org/wiki/Spherical_coordinate_system) today and how the surface of the globe is not equally separated into surface patches. This can be seen when designing a [[Fruxel Grid]] where the longitude is split up into 128 sections and the latitude is split up into 64 sections (which is basically the equi-rectangular projection). The regions close to the poles are very distorted, since the slices become infinitesimally small. The same phenomena manifests itself in [*km per degree* latitude](https://en.wikipedia.org/wiki/Decimal_degrees#Precision) on the globe. Close to the equator every degree corresponds to 111 km, but in Europe (roughly 45°N ) one degree spans only over 78.7 km.
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-11-16
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
___
|
||||
### New Tasks
|
||||
- [ ] Make docker based build system: athackster inspired. I want a docker container that uses px4 and ROS2 with Gazebo to run integration tests in simulation. Potentially also for CI purposes. Setup zsh, #todo/b
|
||||
|
||||
#### PDB Review
|
||||
- [x] Set myself up for review:
|
||||
- [x] prepare docs on pc,
|
||||
- [x] prepare issues,
|
||||
- [x] create kiri-diffs
|
||||
- [x] pull latest changes
|
||||
- [ ] Get an overview of all requirements of the PDB v3
|
||||
- [x] cross all sections that have not changed since the last reviewed version v2 (quickly verify in and outputs only)
|
||||
- [ ] Do detailed planning
|
||||
- [ ] Verify boost converter
|
||||
- [ ] look at calculation sheet by vidit
|
||||
- [ ] verify schematics with datasheet
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
### Electronics
|
||||
#learning/elec
|
||||
(Dis)Advantages of high frequency buck converters ;; handle dynamic load better, handle transients better, use much less real estate. Are less efficient and thus hotter. See [here](https://www.ti.com/lit/an/slvaed3/slvaed3.pdf?ts=1700128438476).
|
||||
<!--SR:!2024-02-02,2,230-->
|
||||
Important Mosfet characteristics ;; RDS(on): efficiency of mosfet, VGS(th): the gate-source threshold voltage defines the minimum voltage needed to turn the mosfet on
|
||||
<!--SR:!2024-02-10,10,270-->
|
||||
Mosfet Types ;; N-Channel, P-Channel | depletion mode vs enhancement mode.
|
||||
<!--SR:!2024-02-11,11,270-->
|
||||
|
||||
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-11-20
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
#learning/computer_science
|
||||
command line tool to analyze storage in terminal ;; `ncdu`
|
||||
<!--SR:!2024-01-20,4,250-->
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-11-21
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
|
||||
# PDB Review Schematic No.2
|
||||
## Jumper to turn on and off Drone
|
||||
|
||||
|
||||
# Daily Recap
|
||||
- small review of changes with vidit
|
||||
- helped Jerry with 3dmap
|
||||
- implemented the first part of the simulation: visualizing a calculated path and making sure the path calculation works
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
1. run same as yesterday but with [[ROS2]] debugging: https://gist.github.com/JADC362/a4425c2d05cdaadaaa71b697b674425f
|
||||
2. Implement lifecycle manager: I want to get to a proper entrypoint
|
||||
3. implement nav3_bringup for our drone
|
||||
4. implement a nav3_controller (simple controller just uses the px4 go to location command just as in QGC.)
|
||||
5. test the controller with a quadcopter in gazebo simulation
|
||||
6. Use a action from the command line to launch the entire nav3 stack to navigate to the goal in the with the NavigateToPose action.
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-11-30
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
|
||||
# Daily Recap
|
||||
- fixed computer issue: no space left in my root partition --> I had to boot from a live usb drive and use gparted to change the partitions.
|
||||
-
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-12-04
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
|
||||
## Jerry - Project Manager
|
||||
> Hey, do you think there is a chance we could get a project manager? I think we could use one! I worked with few great IT project managers, and they really add a lot of value to the team - also they were using great tools and know how to maximize utility of them, like jira etc. I am asking because I think we could avoid many issues in our entire team cooperation, or misunderstandings if there was one good project manager
|
||||
|
||||
- no discipline: documenting, making tests (software).
|
||||
- everyone should be self-disciplined, commits, branching, etc.
|
||||
- IT-product manager
|
||||
- Past experience:
|
||||
- Example:
|
||||
- Floris says Jerry implement 3d map matrix
|
||||
- IT project manager is between Floris and Jerry (jerry can be present and give comments etc.) IT project manager understands the lifecycle (software and hardware). Takes goal and divides it into several tickets based on the scope of the project. Also creates subtasks (e.g document of subclasses,). Assigns Jerry to the subtasks.
|
||||
- Sees gitlab branches (and if its correct) sees commits, assigns someone for review
|
||||
- He is like a glue: he doesn't code. Understands how IT projects work. His work is to stare at jira all day and see if stuff is delayed / missed, etc.
|
||||
- 3 good examples by Jerry
|
||||
- Hamburg Germany BigPoint (gaming web): lead developer: port from flash to unity
|
||||
- 2 project managers (40 people)
|
||||
- standups: only things that were important were discussed (not everyone)
|
||||
- practical example (Jira)
|
||||
- manag: were filter between bosses and employees --> worked with less pressure
|
||||
- basically a scrum master.
|
||||
- Jerry is afraid to ask --> floris is just putting things down to slack (and its never really clear what exactly, etc.)
|
||||
- [x] Talk to dannick about Jerrys proposal #todo/b ⏫ 📅 2023-12-06 ✅ 2023-12-07
|
||||
___
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
Learnings Startup #learning/startup
|
||||
- If I ever have my own company I want to have an open culture, where people can come up with ideas and critique without having to fear anything
|
||||
- Have an organised workflow: one source of truth: everyone knows where to look up things. Define interdependencies between people (e.g. coordinate systems) in a common place where everyone knows where to find it.
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-12-05
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
___
|
||||
### New Tasks
|
||||
- [x] get NAV3 demo working with px4_offboard node and action commands from terminal #todo/b ⏫ 📅 2023-12-05 ✅ 2023-12-07
|
||||
- [x] Write hooklanding controller, that sends position commands instead of velocity commands #todo/b 📅 2023-12-08 ✅ 2023-12-12
|
||||
## Quick Notes
|
||||
|
||||
- Ich schulde Dimitri ein Mittagessen #fin/schuldner
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
@@ -1,25 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-12-12
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2023-12-18
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
### Open Tasks
|
||||
```tasks
|
||||
due before today
|
||||
no scheduled date
|
||||
is not recurring
|
||||
not done
|
||||
sort by priority
|
||||
```
|
||||
|
||||
```
|
||||
```
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
- lange Diskussion mit [[Dannick]] und [[Sabi]]
|
||||
- western people do not have purpose: materialism (mercedes in my pocket is my goal in life, vs I wanna be a father at 23)
|
||||
- lost of trust in institutions (goverment, science as a whole): counter argument from my side: money and capitalism corrupts as well and is wrong incentive. Companies own the world, and the world belongs to the people living on it --> there is a a duty not to destroy it or damage it, which is not followed with pure money incentives.
|
||||
- Dannick lost trust in goverment, because goverment is really bad at directing money to where it has an impact.
|
||||
- maybe there is a way to have the state direct the money to companies (and thus let companies handle the money) by having bounties on open problems that need solving?
|
||||
- Am Abend gleich noch einmal
|
||||
- Musk der fast alle entlässt bei Twitter
|
||||
- Hedge Fund manager der Firma kauft in NYC und dann alle entlässt im Headquarters
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2024-01-04
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
### Open Tasks
|
||||
```tasks
|
||||
due before today
|
||||
no scheduled date
|
||||
is not recurring
|
||||
not done
|
||||
sort by priority
|
||||
```
|
||||
|
||||
```
|
||||
```
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
What are the next steps:
|
||||
-
|
||||
|
||||
# Daily Recap
|
||||
- Made a backup image of the current cm4 (haven't done that in a long time)
|
||||
- Added tape to the hook
|
||||
- printed new hooks
|
||||
- cut holes into the drone wing
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2024-01-05
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
### Open Tasks
|
||||
```tasks
|
||||
due before today
|
||||
no scheduled date
|
||||
is not recurring
|
||||
not done
|
||||
sort by priority
|
||||
```
|
||||
|
||||
```
|
||||
```
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
Planning
|
||||
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2024-01-09
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
### Open Tasks
|
||||
```tasks
|
||||
due before today
|
||||
no scheduled date
|
||||
is not recurring
|
||||
not done
|
||||
sort by priority
|
||||
```
|
||||
|
||||
```
|
||||
```
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,51 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2024-01-24
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
### Open Tasks
|
||||
```tasks
|
||||
due before today
|
||||
no scheduled date
|
||||
is not recurring
|
||||
not done
|
||||
sort by priority
|
||||
```
|
||||
|
||||
```
|
||||
```
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
- [[Floris]] has suggested the book [Rapid Development by McConnell](https://libgen.is/book/index.php?md5=B54C7E454A266942DDC28AF853D629F2) to be a very good book on how to organize software development.
|
||||
- Fragen an [[Vinnie]]:
|
||||
- Wieso kann ich port 5006 deny in ufw aber mit 37.1200.177.0:5006 immer noch darauf zugreifen?
|
||||
- wieso funktioniert testlogs.onesec.com aber foxglove.onesec.com nicht?
|
||||
- kann ich eine user database haben die zugriff auf verschiedene webapps hat mit demselben login?
|
||||
- Wie kann ich zugriff über bare IP redirecten zu testlogs.onesec.com (authentifizierungs problem.) Ich habe versucht eine 4XX response zu geben mit listen 5006, aber das ging nicht weil 0.0.0.0:5006 doppelt belegt wurde (wgen proxy_pass?)
|
||||
```
|
||||
Jan 24 14:20:01 v2202204173997187481 nginx[6365]: nginx: [emerg] bind() to 0.0.0.0:5006 failed (98: Address already in use)
|
||||
Jan 24 14:20:01 v2202204173997187481 nginx[6365]: nginx: [emerg] bind() to [::]:5006 failed (98: Address already in use)
|
||||
Jan 24 14:20:01 v2202204173997187481 nginx[6365]: nginx: [emerg] still could not bind()
|
||||
|
||||
```
|
||||
|
||||
- Sealife might be an [alternative](https://www.zerotier.com/blog/zerotier-makes-running-private-cloud-storage-more-accessible-and-easier-to/) to Synology Drive
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
Today I've learned about [[Computer Networking]] in computer science by watching [this video](https://www.youtube.com/watch?v=bKFMS5C4CG0&ab_channel=NetworkChuck). It shows how to use [[Docker#Networks]] to isolate or combine different containers that talk to each other and the internet. NetworkChuck uses a [UniFi Router](https://ui.com/cloud-gateways/dream-router).
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,91 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2024-01-25
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
### Open Tasks
|
||||
```tasks
|
||||
due before today
|
||||
no scheduled date
|
||||
is not recurring
|
||||
not done
|
||||
sort by priority
|
||||
```
|
||||
|
||||
```
|
||||
```
|
||||
___
|
||||
### New Tasks
|
||||
- [ ] Research home-lab, FOSS (free and open source software) [apps](https://www.google.com/search?q=best+foss+apps+self+host&sca_esv=601356795&ei=XiyyZcejIOPZ7_UPweyCyAM&ved=0ahUKEwjHypWsn_iDAxXj7LsIHUG2ADkQ4dUDCBA&uact=5&oq=best+foss+apps+self+host&gs_lp=Egxnd3Mtd2l6LXNlcnAiGGJlc3QgZm9zcyBhcHBzIHNlbGYgaG9zdDIHECEYChigATIFECEYnwUyBRAhGJ8FMgUQIRifBUj5JFCoBFj8I3AEeAGQAQGYAdkBoAGVDaoBBjEuMTIuMbgBA8gBAPgBAcICChAAGEcY1gQYsAPCAgUQABiABMICBhAAGBYYHsICChAAGBYYHhgPGArCAggQABgWGB4YD8ICCxAAGIAEGIoFGIYDwgIFECEYoAHCAgQQIRgV4gMEGAAgQYgGAZAGCA&sclient=gws-wiz-serp). or [this list](https://perfectmediaserver.com/04-day-two/top10apps/) #todo/p
|
||||
## Quick Notes
|
||||
[[Floris]] gave an update on the new hires
|
||||
Bayraktar military drones that are used in Ukraine. A lot of applicants have worked there.
|
||||
### New Hires
|
||||
- senior c++ engineer: autopilot architect. We design a comprehensive software architecture, that is designed to accomplish the final version of the delivery drone. Pathplanning, foundation model,
|
||||
- control systems engineer: math and physics role, not software engineer. Design a control system, test it in the simulator. They can focus in their specialty. Goal is to do a control system (global controller) that can do the entire flight envelope. This is using wind-tunnel testing, and other system identification steps to create an accurate model.
|
||||
- embedded linux engineer: vidit can help with embedded software as well. Embedded linux engineer: experienced. Increase the performance of cm4 image pipeline.
|
||||
- Project Manager: create schedule and follow it.
|
||||
|
||||
We have a lot of certainty: hardware is settled, foundation model, autopilot architecture --> 6 Months plan where classes and everything is defined.
|
||||
Floris is excited about it, because we stop hacking and start developing a market worthy product.
|
||||
|
||||
[[Vidit]] asks where we're going.
|
||||
- building new drone ([[Dannick]])
|
||||
- Create videos of
|
||||
- use videos for business development to launch a pilot project
|
||||
- get permits for drone operations: area that isn't close to an airport and is not a big city. Some countries are better (Switzerland, Norway, Estonia, Ireland, Australia).
|
||||
- First operation: select area (probably around current swiss office) with large number of villages and towns to create a large service area with the drone. A lot of speed and range with Amprius areas --> connects a lot of restaurants --> creates huge market.
|
||||
- We had conversations with founder of food delivery company in (eat.ch). Talked to grocery delivery company in eastern europe, looking for partnership to launch delivery service.
|
||||
- Markets in Switzerland, Australia, etc. are quite large. Scale-up is possible to 20 million deliveries a year. Then we can certify drone with higher level certificates --> you can extend market to bigger cities.
|
||||
- Value proposition is obvious: companies spend $10 per delivery and we can do it for $5, we can do it faster and further away --> open new markets.
|
||||
- Pointless to commercialize the product before accomplishing the basic features (hooklanding, etc).
|
||||
- videos are going to be made with the smaller drone.
|
||||
|
||||
Most important thing this year: Finish the drone.
|
||||
We don't necessarily need the approval of a big company to launch the service.
|
||||
|
||||
|
||||
Foundation model is used for:
|
||||
- path planning
|
||||
- choose delivery surface
|
||||
- Drone is sitting in hook, waiting for the package --> detect package to know that human is approaching with a payload box --> open payload bay
|
||||
- many more features can be developed with the 3d map from the foundation model
|
||||
|
||||
Remote pilot is removed from the loop --> autonomous system directly.
|
||||
|
||||
|
||||
Amprius cells:
|
||||
- ladezyklen sind sehr reduziert. --> battery pack nur 1x pro Jahr ersetzen
|
||||
|
||||
### LED Project
|
||||
- mic for my computer (mad-mapper) for sound reactive lights
|
||||
- buy SN74AHCT125 level shifters and MAX4466 microphones and switch for martin
|
||||
- buy simple leds incl. batteries for all members für maske
|
||||
- Make small led project with WLED für meine Maske
|
||||
- ethernet boards kaufen für esp32
|
||||
- crossover kabel kaufen
|
||||
-
|
||||
|
||||
Heute abend
|
||||
- wled testen mit setup im keller und madmapper
|
||||
- sachen bestellen (siehe oben)
|
||||
- https://www.youtube.com/watch?v=Zzi5UIGnY2A&ab_channel=ChrisMaher
|
||||
- Weiter nähen --> mit alena
|
||||
- see comments in this [vid](https://www.youtube.com/watch?v=_wZEJPShvmI&ab_channel=MakersMashup) for esp32 wled
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
- LED mapping with Artnet, Teensy and MadMapper: Video by [Aidan Lincoln](https://www.youtube.com/watch?v=kbYYC8zcTxE&ab_channel=AidanLincoln)
|
||||
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date:
|
||||
"{ date }":
|
||||
pomodoro: "1"
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
### Open Tasks
|
||||
```tasks
|
||||
due before today
|
||||
no scheduled date
|
||||
is not recurring
|
||||
not done
|
||||
sort by priority
|
||||
```
|
||||
|
||||
```
|
||||
```
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date: 2024-01-30
|
||||
pomodoro: "5"
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
### Open Tasks
|
||||
```tasks
|
||||
due before today
|
||||
no scheduled date
|
||||
is not recurring
|
||||
not done
|
||||
sort by priority
|
||||
```
|
||||
|
||||
```
|
||||
```
|
||||
___
|
||||
### New Tasks
|
||||
- [ ] Read [this article](https://obsidian.rocks/super-powers-for-obsidian-nine-of-the-best-obsidian-plugins/) and start using the plugins that fit to my workflow #todo/p
|
||||
- [ ] read [this article]([https://obsidian.rocks/maps-of-content-effortless-organization-for-notes/](https://obsidian.rocks/maps-of-content-effortless-organization-for-notes/)) about MOCs. Do I want to use this?
|
||||
## Quick Notes
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date:
|
||||
"{ date }":
|
||||
pomodoro: "7"
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
### Open Tasks
|
||||
```tasks
|
||||
due before today
|
||||
no scheduled date
|
||||
is not recurring
|
||||
not done
|
||||
sort by priority
|
||||
```
|
||||
|
||||
```
|
||||
```
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date:
|
||||
"{ date }":
|
||||
pomodoro:
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
### Open Tasks
|
||||
```tasks
|
||||
due before today
|
||||
no scheduled date
|
||||
is not recurring
|
||||
not done
|
||||
sort by priority
|
||||
```
|
||||
|
||||
```
|
||||
```
|
||||
___
|
||||
### New Tasks
|
||||
- [ ] Write a [script](https://github.com/tcgoetz/GarminDB) to download my garmin data daily and add it to my daily note. Then add it to my dashboard. #todo/p
|
||||
- [ ] Maybe use [derive](https://github.com/erik/derive) to generate a heatmap of all my gps tracks. #todo/p
|
||||
## Quick Notes
|
||||
- Cool [techblog](https://kognise.dev/#projects) #readinglist/diy
|
||||
- interesting job: [software engineer Robotics, Neuralink](https://neuralink.com/careers/apply/?gh_jid=5315682003&gh_src=c356a2533us).
|
||||
### Job Description Neuralink Software Engineer Robotics
|
||||
[Youtube Description](https://www.youtube.com/watch?v=-gQn-evdsAo&ab_channel=Neuralink).
|
||||
![[Apply _ Neuralink.pdf]]
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,49 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date:
|
||||
"{ date }":
|
||||
pomodoro:
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
### Open Tasks
|
||||
```tasks
|
||||
due before today
|
||||
no scheduled date
|
||||
is not recurring
|
||||
not done
|
||||
sort by priority
|
||||
```
|
||||
|
||||
```
|
||||
```
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
Muzaffer Job Interview
|
||||
Positive things:
|
||||
- Using Linux standard classes to implement new drivers
|
||||
- pipeline with tcp cameras, gstreamer and opencv
|
||||
- knows how to use valgrind, gdb: big plus!
|
||||
- general knowledge of robotic systems: has worked on different aspects of it
|
||||
|
||||
questions:
|
||||
- how well of a C++ programmer is he?
|
||||
- good use of pointers, shared pointers, etc?
|
||||
- good use of OOP?
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date:
|
||||
"{ date }":
|
||||
pomodoro:
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
### Open Tasks
|
||||
```tasks
|
||||
due before today
|
||||
no scheduled date
|
||||
is not recurring
|
||||
not done
|
||||
sort by priority
|
||||
```
|
||||
|
||||
```
|
||||
```
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
### Physio Update
|
||||
Hallo Stephanie
|
||||
Danke für die Behandlung von gestern. Heute morgen habe ich die Übungen gemacht und bin nachher mit dem Fahrrad ins Büro gefahren. Beim Bergauffahren hat es plötzlich angefangen mir im Nacken zu schmerzen (vorher hatte ich gar keine Schmerzen). Und wenn ich nun die Schmerztests mache die wir zusammen gemacht haben habe ich folgende Resultate:
|
||||
- nach rechts drehen: kein problem
|
||||
- nach links drehen: ziemliche Schmerzen, blockiert nach etwa der Hälfte
|
||||
- nach oben kippen: leichte schmerzen
|
||||
- nach unten kippen: ziemliche Schmerzen auf der linken Seite. Auch blockiert, wegen den Schmerzen
|
||||
- nach rechts kippen: okay, leichtes ziehen links
|
||||
- nach links kippen: schmerzen links, weniger als wenn nach links drehen.
|
||||
|
||||
Ich werde beobachten wie es sich verhaltet.
|
||||
Liebe Grüsse
|
||||
Claudio
|
||||
|
||||
### Robotics Companies
|
||||
- [Dexory](https://www.dexory.com/) A warehouse scanning robot, based in the UK.
|
||||
|
||||
### NAS
|
||||
I want to connect to the same NAS using multiple users (TimeMachineUser for backup and User for media). Just like described in this [post](https://community.synology.com/enu/forum/17/post/85880).
|
||||
- https://www.reddit.com/r/synology/comments/11ogqr3/multiple_mac_finder_mount_points_over_smb/
|
||||
-
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,43 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date:
|
||||
"{ date }":
|
||||
pomodoro:
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
### Open Tasks
|
||||
```tasks
|
||||
due before today
|
||||
no scheduled date
|
||||
is not recurring
|
||||
not done
|
||||
sort by priority
|
||||
```
|
||||
|
||||
```
|
||||
```
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
Try photo prism and photosync
|
||||
https://www.youtube.com/watch?v=t7ymSBIOJmc&ab_channel=WunderTech
|
||||
|
||||
https://www.reddit.com/r/photoprism/comments/14hccav/photoprism_vs_synology_pbotos/
|
||||
|
||||
https://github.com/meichthys/foss_photo_libraries
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date:
|
||||
"{ date }":
|
||||
pomodoro:
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
### Open Tasks
|
||||
```tasks
|
||||
due before today
|
||||
no scheduled date
|
||||
is not recurring
|
||||
not done
|
||||
sort by priority
|
||||
```
|
||||
|
||||
```
|
||||
```
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
---
|
||||
tags:
|
||||
- daily
|
||||
date:
|
||||
"{ date }":
|
||||
pomodoro:
|
||||
---
|
||||
## Tasks
|
||||
|
||||
```tasks
|
||||
due today
|
||||
```
|
||||
|
||||
### Open Tasks
|
||||
```tasks
|
||||
due before today
|
||||
no scheduled date
|
||||
is not recurring
|
||||
not done
|
||||
sort by priority
|
||||
```
|
||||
|
||||
```
|
||||
```
|
||||
___
|
||||
### New Tasks
|
||||
- [ ]
|
||||
## Quick Notes
|
||||
|
||||
# Daily Recap
|
||||
## Learnings
|
||||
I have just revisited the wind-tunnel data analysis project and realized something: we did that completely wrong. Someone should have double checked the data-analysis
|
||||
## Planning of Tomorrow
|
||||
### New Tasks for tomorrow
|
||||
1. change due dates of unfinished tasks today
|
||||
2. add new tasks:
|
||||
- [ ]
|
||||
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
```tracker
|
||||
searchType: frontmatter
|
||||
searchTarget: pomodoro
|
||||
folder: 00 Daily
|
||||
startDate: 2024-01-25
|
||||
#endDate: 2024-12-30
|
||||
line:
|
||||
title: "Pomodoro"
|
||||
yAxisLabel: '# Pomodoros'
|
||||
lineColor: "steelblue"
|
||||
```
|
||||
|
||||
|
||||
|
||||
```dataviewjs
|
||||
dv.span("** Pomodoro Sessions **") /* optional ⏹️💤⚡⚠🧩↑↓⏳📔💾📁📝🔄📝🔀⌨️🕸️📅🔍✨ */
|
||||
const calendarData = {
|
||||
year: 2024, // (optional) defaults to current year
|
||||
colors: { // (optional) defaults to green
|
||||
blue: ["#8cb9ff", "#69a3ff", "#428bff", "#1872ff", "#0058e2"], // first entry is considered default if supplied
|
||||
green: ["#c6e48b", "#7bc96f", "#49af5d", "#2e8840", "#196127"],
|
||||
red: ["#ff9e82", "#ff7b55", "#ff4d1a", "#e73400", "#bd2a00"],
|
||||
orange: ["#ffa244", "#fd7f00", "#dd6f00", "#bf6000", "#9b4e00"],
|
||||
pink: ["#ff96cb", "#ff70b8", "#ff3a9d", "#ee0077", "#c30062"],
|
||||
orangeToRed: ["#ffdf04", "#ffbe04", "#ff9a03", "#ff6d02", "#ff2c01"]
|
||||
},
|
||||
showCurrentDayBorder: true, // (optional) defaults to true
|
||||
defaultEntryIntensity: 4, // (optional) defaults to 4
|
||||
intensityScaleStart: 10, // (optional) defaults to lowest value passed to entries.intensity
|
||||
intensityScaleEnd: 100, // (optional) defaults to highest value passed to entries.intensity
|
||||
entries: [], // (required) populated in the DataviewJS loop below
|
||||
}
|
||||
|
||||
//DataviewJS loop
|
||||
for (let page of dv.pages('"00 Daily"').where(p => p.pomodoro)) {
|
||||
//dv.span("<br>" + page.file.name) // uncomment for troubleshooting
|
||||
calendarData.entries.push({
|
||||
date: page.file.name, // (required) Format YYYY-MM-DD
|
||||
intensity: page.pomodoro, // (required) the data you want to track, will map color intensities automatically
|
||||
content: "🏋️", // (optional) Add text to the date cell
|
||||
color: "red", // (optional) Reference from *calendarData.colors*. If no color is supplied; colors[0] is used
|
||||
})
|
||||
}
|
||||
|
||||
renderHeatmapCalendar(this.container, calendarData)
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1,13 +0,0 @@
|
||||
A loom video instruction can be found [here](https://www.loom.com/share/f6460a1200fe499eb3aae941c8bd8ca8?sid=49451325-5d3a-4953-8e24-7007af44a99e).
|
||||
# Preparation
|
||||
1. Decide which image you want to flash to the cm4. All images can be found on the [google drive](https://drive.google.com/drive/folders/1SCE0VCfHIKdJlZBVMUI5AOd8uqdrAA_7) and usually you can find an overview on the [CM4 Images Overview sheet](https://docs.google.com/spreadsheets/d/1hWfCUwhnYKjQz526QUwpVui-eFWYgPfyoRJ40pwvJD8/edit#gid=0). For this example I chose the image `cm16_240104.img.xz`.
|
||||
2. Decide which physical cm4 board you want to flash the image to. A list of all cm4's that we own can be found in the [CM4 overview sheet](https://docs.google.com/spreadsheets/d/18PtsqKYUrfK0cAAFBfwtgTSo0JnJ0n5Dc3oIjpWry6I/edit#gid=0). For this example we chose the cm4 with ID 14.
|
||||
1. Be aware that there are two versions of cm4s. The lite version requires a SD-card whereas the EMMC version does not. The flashing instructions are different for the two.
|
||||
2. The cm4s also come with different RAM and EMMC storage. You can visually inspect the part numbers if you are unsure. E.g. [RAM](https://semiconductor.samsung.com/dram/lpddr/lpddr4/k4f6e304hb-mgcj/), or [EMMC](https://semiconductor.samsung.com/estorage/emmc/emmc-5-1/klmbg2jetd-b041/).
|
||||
|
||||
# Flashing
|
||||
If you have the EMMC version follow the instructions here: https://onesecinc.atlassian.net/wiki/spaces/MC1/pages/35029029/Flash+CM4+EMMC+with+a+new+Image
|
||||
|
||||
If you flash a Lite version, plug the SD-card into your development computer and then follow the instructions starting from point 5.
|
||||
# UID
|
||||
# Testing
|
||||
Binary file not shown.
@@ -1,6 +0,0 @@
|
||||
|
||||
# Unchanged from V2
|
||||
- temp and humidity sensor
|
||||
- 3V3 LDO:
|
||||
- only consumers changed, but is remaining below limit.
|
||||
- led drivers changed only very little
|
||||
Binary file not shown.
@@ -1,8 +0,0 @@
|
||||
[This article](https://opensource.com/article/18/6/embedded-linux-build-tools) summarizes different build tools to get the embedded application working. Currently, we use the last of the four options described: a stripped down desktop distribution.
|
||||
Also [this video](https://www.youtube.com/watch?v=9vsu67uMcko&ab_channel=DigiKey) by DigiKey series goes into those tools in more detail, mostly yocto.
|
||||
|
||||
# Yocto
|
||||
# Buildroot
|
||||
# OpenWRT / LEDE
|
||||
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
- [ ] Is SIM-card inserted and correctly oriented?
|
||||
- [ ] Are Antennas connected securely (GNSS, LTE, LTE Diversity)
|
||||
- [ ]
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,5 +0,0 @@
|
||||
The Webapp is hosted on our [[OneSec Server#PX4 - Flight Review|VPS server]]. The credentials are:
|
||||
- user: claudio
|
||||
- pw: CesOne8143_
|
||||
# Add a New Log
|
||||
![[Pasted image 20240320120530.png]]
|
||||
@@ -1,64 +0,0 @@
|
||||
We host the server at [netcup - Germany](https://www.netcup.eu/), a company that offers VPS. The IP address of our server is 37.120.177.0.
|
||||
|
||||
# Organisation
|
||||
## Access
|
||||
The following is the access data to access the server through ssh (part of my `~/.ssh/config` file):
|
||||
```bash
|
||||
Host netcup
|
||||
HostName v2202204173997187481.hotsrv.de
|
||||
User root
|
||||
IdentityFile ~/.ssh/netcup_osd_claudio
|
||||
```
|
||||
## Setup
|
||||
Vinnie, Dannick's Friend, helped me with the setup. I leave the bash history and the zsh history files here as a reference.
|
||||
![[bash_history_netcup]]
|
||||
|
||||
![[zsh_history_netcup]]
|
||||
|
||||
I have installed `zsh` and `oh-my-zsh` to make the interaction easier
|
||||
|
||||
in the cli-history files above you can see how the project got updated, but basically update the project files on a local machine, test everything, push it to gitlab. Then access the server, pull the changes, checkout to the correct version and restart the docker container:
|
||||
```zsh
|
||||
docker compose -f docker-compose.dev.yml down docker compose -f docker-compose.dev.yml up -d --build --force-recreate
|
||||
```
|
||||
## Structure
|
||||
The main folder is called osd_apps, which hosts the web-apps that we're running.
|
||||
We use [[nginx]] as a reverse proxy to serve the different web-apps and [[Docker]] to run the apps in an appropriate container.
|
||||
|
||||
We also use certbot (installed through snap) to keep the certifiates up to date.
|
||||
|
||||
The [[OneSec - FlightReview|flight review app]] is hosted at the website [testlogs.onesec.com](testlogs.onesec.com). The authentication is done through a nginx configuration. The credentials can be found on the specified article.
|
||||
|
||||
### 6tunnel
|
||||
[6Tunnel](https://github.com/wojtekka/6tunnel) is used to create a translation service for Dannicks NAS. Basically the server (which has a static IPV4 address) forwards requests to a IPV6-address (Dannicks NAS). See history files above for the commands. And make sure that the firewall (`ufw`) allows the correct ports (32400 in Dannicks case).
|
||||
|
||||
### Nginx
|
||||
Nginx is used as a reverse proxy server, that checks incoming traffic and routes it to the correct interface on the server. We can configure it, such that any traffic coming from a certain URI (e.g. testlogs.onesec.com) is rerouted to the localhost:5006. And on this interface we are running a docker container, which hosts the web-app. This means that any traffic coming from testlogs.onesec.com is directed towards the web-app and any other traffic (from the IP for instance) is routed to `/var/www/http` and a static content is served (default nginx stuff). If another app is added we can have an additional port for that as explained in [this article](https://www.digitalocean.com/community/questions/how-to-host-multiple-docker-containers-on-a-single-droplet-with-nginx-reverse-proxy).
|
||||
|
||||
### Certbot
|
||||
Certbot is a tool that manages certificates for our webserver. It has a really good integration with nginx. Some more info can be found [here](https://sirfitz.medium.com/setting-up-an-nginx-instance-with-certbot-and-configuring-it-for-wildcard-subdomains-on-ubuntu-96e413281a99). Especially the cron-job for the autorenewal is handy. But cerbot also has a automated way of handling this, as can be seen in the [instruction set by digital ocean](https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-20-04). Compared to the instructions on the blog article, on our server we've used the following command:
|
||||
```bash
|
||||
sudo certbot --nginx -d testlogs.onesec.com
|
||||
```
|
||||
|
||||
|
||||
### Docker
|
||||
[[Docker]] is used to isolate multiple web-apps that are running. A few important things are listed here:
|
||||
- use the `-d` or `--detach` option to let it run in the background even if the terminal is disconnected. This ensures that the webapp is running when the setup process is finished.
|
||||
# WebApps
|
||||
## PX4 - Flight Review
|
||||
A [customized version](https://gitlab.com/onesecdelivery/flight_review_osd) of the official PX4 [flight review](https://github.com/PX4/flight_review) app is hosted there.
|
||||
|
||||
|
||||
# How to add a new WebApp?
|
||||
1. Go to namecheap.com, login and [add a new A-record.](https://www.namecheap.com/support/knowledgebase/article.aspx/319/2237/how-can-i-set-up-an-a-address-record-for-my-domain/)![[Pasted image 20240123183014.png]]Here you can see that for the subdomain foxglove and testlogs we have an A-Record [^1] to forward to our VPS server (37.120.177.0). Once this is done all traffic gets forwarded to our VPS server where we need to handle it.
|
||||
2. Access the servers command line through SSH (see instructions above).
|
||||
3.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# Footnotes
|
||||
[^1]: An A record **maps a domain name to the IP address (Version 4) of the computer hosting the domain**. An A record uses a domain name to find the IP address of a computer connected to the internet. The A in A record stands for Address.
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,19 +0,0 @@
|
||||
Nav3 is our custom implementation of a navigation library. It is heavily inspired by [[ROS2 - NAV2 Library|NAV2]] which is a standard [[ROS2]] library.
|
||||
|
||||
By heavily inspired I mean it is basically copied, and modified.
|
||||
|
||||
# Differences
|
||||
## Costmap_3d
|
||||
The `nav3_costmap_3d` package is completely rewritten. The only similarity to the original `nav2_costmap_2d` package is that we're using the same API to remain compatible with the rest of the `nav2` library.
|
||||
|
||||
Our own costmap_3d implementation uses a fruxel grid instead of voxels.
|
||||
|
||||
## Planners
|
||||
Several planner plugins are missing for now.
|
||||
|
||||
## Controllers
|
||||
Several controller plugins are missing for now.
|
||||
|
||||
|
||||
## Nav3_util
|
||||
- Added `calculate_linear_speed(Twist)` which is a central util function to calculate speed
|
||||
@@ -1,12 +0,0 @@
|
||||
The purpose of using [[Docker]] this is to have a containerized build of the autopilot. This means that any employee can easily get started with development by cloning the vscode-docker-dev repo and open the repo in a containerized mode. This drastically reduces onboarding time and also ensures that everyone is working on the exact same system.
|
||||
|
||||
There are a few inspirations to how I want to set this up:
|
||||
1. Keep in mind that the final code needs to run on the raspberry pi cm4 module, without a docker container because we need hardware access.
|
||||
2. The containerization can be built in several layers:
|
||||
1. ros2 production (no simulation tools, this is the closest we get to the rasperry pi --> exports a shell script to install on the rasperry pi.)
|
||||
2. simulation stack: includes px4-osd that runs the current px4-code and the px4 simulation running in gazebo as well as ros2 to do development
|
||||
3. testing stack: same as previous stack but includes integration tests: missions to accomplish and writes automated reports if the flights were successful or not (could also upload to a log website)
|
||||
|
||||
This is going to be really helpful in the future, because with every commit merge to the main branch, unit-tests, functional tests and integration tests need to pass before a merge can happen.
|
||||
|
||||
PX4 already does [extensive testing](https://github.com/PX4/PX4-Autopilot/tree/main/test) within a gazebo simulation. It also includes more elaborated [integration tests](https://github.com/PX4/PX4-Autopilot/tree/main/integrationtests/python_src/px4_it).
|
||||
@@ -1,5 +0,0 @@
|
||||
## How to run
|
||||
1. We need a transform between map and odom: `os2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 1 map odom`
|
||||
2. We need the px4 simulation running: `source ~/ros2_ws/install/setup.zsh && cd ~/px4-osd && make px4_sitl_default gazebo_osd_mono_copter`
|
||||
3. We need the RTPS bridge running: `/home/claudio/ros2_ws/install/px4_ros_com/bin/micrortps_agent -t UDP`
|
||||
4.
|
||||
@@ -1,23 +0,0 @@
|
||||
|
||||
# PX4_MSGS
|
||||
The [PX4_msgs](https://github.com/PX4/px4_msgs) package is required, because it translates [[Custom uORB Message|uORB]] messages into the ROS2 ecosystem and vice versa. The project contains a `msg` folder, which contains the msg definitions. Usually, those message definitions are autogenerated by [a script](https://github.com/PX4/PX4-Autopilot/blob/v1.13.3/msg/tools/uorb_to_ros_msgs.py) provided by the PX4-Autopilot project.
|
||||
A build error that has popped up several times is that the messsage definition comments contain `*/` which is misinterpreted by the compiler
|
||||
Error message:
|
||||
``` bash
|
||||
/home/pi/ros2_ws/build/px4_msgs/rosidl_generator_c/px4_msgs/msg/detail/gimbal_v1_command__struct.h:356:3: error: expected identifier or ‘(’ before ‘/’ token
|
||||
356 | */
|
||||
| ^
|
||||
/home/pi/ros2_ws/build/px4_msgs/rosidl_generator_c/px4_msgs/msg/detail/gimbal_v1_command__struct.h:365:3: error: expected identifier or ‘(’ before ‘/’ token
|
||||
365 | */
|
||||
```
|
||||
In order to solve this error, just delete the relevant parts of the comment.
|
||||
|
||||
|
||||
# px4_ros_com
|
||||
In order to successfully build the `px4_ros_com` package you need to define the following env-variable: `export FASTRTPSGEN_DIR="/usr/local/bin/"`.
|
||||
Without it it will not work and throw the following error:
|
||||
```bash
|
||||
c++: error: /home/pi/ros2_ws/build/px4_ros_com/src/micrortps_agent/microRTPS_agent.cpp: No such file or directory
|
||||
c++: fatal error: no input files
|
||||
```
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,23 +0,0 @@
|
||||
The nuttshell is the main shell used in the px4-environment. It can be used to [interactively work with a px4 flight controller](https://docs.px4.io/main/en/debug/consoles.html) to develop and debug. It can be accessed through [QGroundControl](https://docs.px4.io/main/en/debug/mavlink_shell.html#qgroundcontrol-mavlink-console) or [through USB](https://docs.px4.io/main/en/debug/mavlink_shell.html#mavlink-shell-py).
|
||||
|
||||
# Commands
|
||||
An overview of all commands can be found in the [px4-documentation](https://docs.px4.io/main/en/modules/modules_main.html). Interactively you can also send the command `help` to list all available commands.
|
||||
## listener
|
||||
`listener uorb_topic_name`
|
||||
The listener commands allows to debug the uorb message system. It was important to debug the drivers of the magnetic sensors or to debug a working bridge.
|
||||
|
||||
## uORB top
|
||||
`uorb top`
|
||||
|
||||
## micrortps_client
|
||||
`micrortps_client`
|
||||
|
||||
|
||||
# Custom Commands
|
||||
## osd_payload_control
|
||||
## indi control
|
||||
- [ ] Make sure this title is correct #todo/b
|
||||
## asr012
|
||||
|
||||
## a5047p
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
In order to successfully build PX4 for different boards you need to configure them first by running the `boardconfig` option with the command.
|
||||
@@ -1,24 +0,0 @@
|
||||
The first quick and dirty implementation was done on the companion computer using a ROS2 Node (see [[Direct Actuator Control from ROS2]]). But this will use too much bandwidth on the datalink between the flight controller and the companion computer.
|
||||
|
||||
# PX4 Implementation
|
||||
We want to be able to open and close the payload bay even if the drone is not armed. Therefore, we need to make use of the pre-arm state that exists in order to check the functionality of non-dangerous [[Actuators |actuators]] (e.g. control surfaces. not motors/propellers). The arm, disarm and pre-arm configuration is explained on the [PX4 user guide](https://docs.px4.io/main/en/advanced_config/prearm_arm_disarm.html).
|
||||
We want the following parameters:
|
||||
|
||||
| Parameter | Description | Value |
|
||||
| ---- | ---- | ---- |
|
||||
| COM_PREARM_MODE | ALWAYS | 2 |
|
||||
| CBRK_IO_SAFETY | No Safety Switch | 22027 |
|
||||
This puts the drone into the pre-arm state upon boot and allows to move the control surfaces immediately, without engaging the propellers.
|
||||
|
||||
## PWM Calibration
|
||||
The payload servos should be calibrated like any other servo motor. We need to configure the following parameters (assuming the servo is MAIN_5):
|
||||
|
||||
| Parameter | Description | Value |
|
||||
| ---- | ---- | ---- |
|
||||
| PWM\_MAIN\_DIS5 | PWM value in disarm state | e.g. 1500 |
|
||||
| PWM\_MAIN\_FAIL5 | PWM Value in failsafe state | e.g 1500 |
|
||||
| PWM\_MAIN\_MAX5 | Maximum PWM value commanded | e.g. 1958 |
|
||||
| PWM\_MAIN\_MIN5 | Minimum PWM value commanded | e.g. 867 |
|
||||
The values are usually experimentally measured using a simple PWM controller (aka. servo tester).
|
||||
|
||||
## Payload Controller Module
|
||||
@@ -1,24 +0,0 @@
|
||||
|
||||
# FastDDS Bridge
|
||||
This is the newest type of bridge and it allows to integrate ROS2 and PX4 much closer together.
|
||||
The [newest development](https://www.youtube.com/watch?v=3zRCIsq_MCE&ab_channel=PX4Autopilot-OpenSourceFlightControl.) allows to easily define new flight modes that run on the companion computer instead of PX4. PX4 remains aware of this.
|
||||
|
||||
# MicroRTPS Bridge
|
||||
## Troubleshooting
|
||||
### Baudrate Mismatch
|
||||
If the baudrate is not the same on both ends, no error is thrown, but the communication does not work.
|
||||
In the screenshot below you can see the status when the baudrate had a mismatch (red rectangle), there were no received messages. Once the baudrate was correct the messages could be received (green rectangle)
|
||||
![[Pasted image 20240311104419.png]]
|
||||
The baudrates are changed like follows:
|
||||
- on the PX4 you can change the parameter `SER_TEL_2_BAUD` if TELEM2 is used as the micrortps bridge. Or if you start the bridge with a nuttshell command you can use the argument `b`, e.g.: `micrortps_client start -t UART -d dev/ttyS2 -b 921600`
|
||||
- on the companion computer side with the argument `-b`, when launching the micrortps agent: `./install/px4_ros_com/bin/micrortps_agent -b 921600 -d /dev/ttyAMA1 -g`
|
||||
|
||||
### ROS2 Topic Echo does not receive PX4-Data
|
||||
If the bridge is setup correctly echoing the attitude message on the companion computer should show the messages. For it to work, the correct ROS2 environment has to be sourced and both ends of the bridge (agent on the companion computer, client on the px4-system) have to be running.
|
||||
Run the following command: `ros2 topic echo /fmu/vehicle_attitude/out`.
|
||||
Messages should start to appear.
|
||||
If not check the following things:
|
||||
- Is the cable connected?
|
||||
- Have RX and TX cables been confused?
|
||||
- Does the baudrate match on both ends? (see [[ROS2 Interface for PX4#Baudrate Mismatch]])
|
||||
-
|
||||
@@ -1,10 +0,0 @@
|
||||
The virtual swashplate algorithm is implemented in 2 modules within PX4.
|
||||
|
||||
# Parameters
|
||||
It's important to have oneshot (or possibly dshot) as a protocol, because normal pwm signals are is too slow to do the actuation at our rpm.
|
||||
In the flight controllers the PWM pins are grouped into timer groups, which use the same timer in the background and thus need to share the same protocol. For the [[Control Zero - Setup|Control Zero]] those groups are 1234, 56 and 78. We have chosen 7&8 as our virtual swashplate outputs.
|
||||
|
||||
| Parameter | Description | Value |
|
||||
| ---- | ---- | ---- |
|
||||
| PWM_MAIN_OUT | The pwm channels used as ESC outputs | 78 |
|
||||
| PWM_MAIN_RATE | The pwm rate at which the signal is being generated. 0 Hz means that the [[PWM#Oneshot\|OneShot125]] protocol is used. | 0 Hz |
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,136 +0,0 @@
|
||||
---
|
||||
aliases:
|
||||
- CMakeLists.txt
|
||||
---
|
||||
CMake is a great tool to build c++ projects across different platforms and manages all dependencies as well as how to install the project on different platforms. A great guide to modern CMake can be found [here](https://cliutils.gitlab.io/modern-cmake/). And a good example project [here](https://gitlab.com/CLIUtils/modern-cmake/-/tree/master/examples/extended-project).
|
||||
|
||||
It also integrates well with the [[GTest Framework|GoogleTest]] framework, which allows to define the tests in a separate folder. They are built together with the project and executed using `ctest`.
|
||||
# CMake
|
||||
## Nomenclature
|
||||
| Definition | Meaning |
|
||||
| ---------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Target | Executables, libraries or custom commands that can be installed. |
|
||||
| Library | A collection of code that is compiled into `lib<name>.a` or `<name>.lib` and can be used in other projects by linking to it. |
|
||||
| Executable | Is a binary file that executes a certain program. On Windows usually it is `<name>.exe`. |
|
||||
## How does it work?
|
||||
On a high level, we want to understand what CMake does.
|
||||
|
||||
## Default Setup for Simple Projects
|
||||
In most projects so far, we define the project, look for the needed dependencies, define our executable or library, link the dependencies and finally install it to the system.
|
||||
For such a simple project the file tree looks like this:
|
||||
```sh
|
||||
├── CMakeLists.txt
|
||||
├── include
|
||||
│ └── some.h
|
||||
└── src
|
||||
├── some.cpp
|
||||
└── things.h
|
||||
```
|
||||
|
||||
For this a typical CMakeLists.txt file would look something like the following:
|
||||
- [ ] Add all the important commands here for cmake to have a small snippet to use in the future #todo/b
|
||||
```cmake
|
||||
project("SomeLibrary" VERSION 0.1.0)
|
||||
|
||||
add_library(${PROJECT_NAME} src/some.cpp)
|
||||
|
||||
```
|
||||
|
||||
# CMake Targets
|
||||
## Library
|
||||
A library is a code that can be imported and used in other code and thus usually the header files that define the public classes are shared in a raw format, whereas the implementation might just be compiled into a `.so` file (or similar). Typically these files are installed into `install_path/include/library_name/...` and `install_path/lib/library_name.so`, respectively (`.so` stands for shared object). For system installs (usually invoked with `sudo make install`) the `install_path` is `/usr/local/` (if not changed manually in the cmake configuration).
|
||||
|
||||
A good tutorial and overview of what is needed in cmake can be found [here](https://iamsorush.com/posts/cpp-cmake-config/) or in [this very good description](https://cliutils.gitlab.io/modern-cmake/chapters/install/installing.html). As a general overview we need to do the following things:
|
||||
1. add library target and all dependencies
|
||||
2. make the target including specifying where it will be installed (`DESTINATION` keyword)
|
||||
3. export the target to a `library_nameTargets.cmake` file (defines all cmake related stuff that I do not care about)
|
||||
4. In order to actually install the library to be found by cmake we need to have 3 files:
|
||||
1. `library_nameConfig.cmake`: we define it ourselves and import the next file
|
||||
2. `library_nameTargets.cmake`: this is automatically written by step 3
|
||||
3. `library_nameConfigVersion.cmake`: contains information about the version of the library
|
||||
To do this with CMake we need to do the following in the main `CMakeLists.txt` file:
|
||||
```cmake
|
||||
# 1. Add library target and dependencies
|
||||
add_library(library_name SHARED) # call to create a library target
|
||||
target_include_directories(library_name PRIVATE "${PROJECT_SOURCE_DIR}") # tell the target where to find important include files
|
||||
add_subdirectory("subdirectory_name") # add subdirectories if needed - with their own CMakeLists.txt files
|
||||
|
||||
# 2. Make Install target
|
||||
# Finally we need to install the library
|
||||
# this defines the library_nameTargets variable (because of EXPORT. Nothing is actually installed)
|
||||
install(TARGETS library_name
|
||||
EXPORT library_nameTargets # this file is written here and later included
|
||||
FILE_SET HEADERS
|
||||
LIBRARY DESTINATION lib
|
||||
ARCHIVE DESTINATION lib
|
||||
RUNTIME DESTINATION bin
|
||||
INCLUDES DESTINATION include)
|
||||
|
||||
|
||||
# 3. Export the install target
|
||||
# Now we define where the file will be installed, as well as defining a CMAKE namespace. This is saved to the
|
||||
install(EXPORT library_nameTargets
|
||||
FILE library_nameTargets.cmake
|
||||
NAMESPACE libName::
|
||||
DESTINATION lib/cmake/library_name)
|
||||
# if your project has no dependencies you can replace library_nameTargets.cmake with library_nameConfig.cmake and skip the last step (no. 5), because the needed file has already been written here.
|
||||
|
||||
|
||||
# 4. write the actual .cmake files
|
||||
include(CMakePackageConfigHelpers) # load helper to create config file
|
||||
|
||||
# creates file library_nameConfigVersion.cmake which is needed when you try to find a package in another project with find_package()
|
||||
write_basic_package_version_file(
|
||||
"library_nameConfigVersion.cmake"
|
||||
VERSION ${library_name_VERSION}
|
||||
COMPATIBILITY AnyNewerVersion)
|
||||
|
||||
# 5. write the library_nameConfig.cmake file which is needed.
|
||||
# finally the install file library_nameConfig.cmake is actually copied over to library_nameConfig.cmake which is needed to find the library with find_package() in other projects
|
||||
install(FILES "library_nameConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/library_nameConfigVersion.cmake"
|
||||
DESTINATION lib/cmake/geo)
|
||||
```
|
||||
The file `library_nameConfig.cmake` contains the following:
|
||||
```cmake
|
||||
include(CMAKEFindDependencyMacro)
|
||||
# find_dependency(xxx 2.0) # if any dependencies are needed
|
||||
# this includes the Targets.cmake file thatis created in step 3 in the cmake file above.
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/library_nameTargets.cmake)
|
||||
```
|
||||
|
||||
## Executable
|
||||
|
||||
# Uninstall Target
|
||||
The default sequence to install a cmake project is the following:
|
||||
```bash
|
||||
mkdir build && cd build
|
||||
cmake ..
|
||||
cmake --build .
|
||||
sudo make install
|
||||
```
|
||||
The last command will execute the installation which basically copies important files (as specified in the CMakeLists.txt) into a system directory (usually `/usr/local/`). When this happens a file called `install_manifest.txt` is created in the build folder which lists all installed files. In order to undo the installation you can run the [following command:](https://stackoverflow.com/a/44649542/7705525)
|
||||
```bash
|
||||
xargs rm < install_manifest.txt
|
||||
```
|
||||
|
||||
If you want to get fancier you can also create a [uninstall target](https://gitlab.kitware.com/cmake/community/-/wikis/FAQ#can-i-do-make-uninstall-with-cmake), which basically iterates through the `install_manifest.txt` file and removes any file and folder (if empty) listed in the file.
|
||||
|
||||
# How is CMake used in ROS2 and Colcon
|
||||
ROS2 makes extensive use of `CMake` in its buildsystem. It is all hidden behind the `colcon` command, but the projects all contain `CMakeLists.txt`-files that define how a ROS2 package is compiled. A good example to look at source code is the [[ROS2 - NAV2 Library|NAV2]]-Library.
|
||||
- [ ] #todo/b add cmake specifics and how ament, and colcon uses it. Also how testing is done.
|
||||
- [ ] [Ament_cmake user documentation](https://docs.ros.org/en/rolling/How-To-Guides/Ament-CMake-Documentation.html) #todo/b
|
||||
- [ ]
|
||||
|
||||
# Flashcards
|
||||
#learning/cpp
|
||||
how to run unit tests (gtest) of a cmake project ;; `ctest` after having built the project
|
||||
<!--SR:!2023-12-10,14,290-->
|
||||
how to define a executable in a cmake project ;; `add_executable(name sourcefile1 sourcefile2 ...)`
|
||||
<!--SR:!2024-03-15,59,310-->
|
||||
how to define a library in a cmake project ;; `add_library(name sourcefile1 sourcefile2 ...)`
|
||||
<!--SR:!2023-12-09,13,290-->
|
||||
|
||||
# Resources
|
||||
- https://decovar.dev/blog/2021/03/08/cmake-cpp-library/
|
||||
- https://raymii.org/s/tutorials/Cpp_project_setup_with_cmake_and_unit_tests.html
|
||||
- https://iamsorush.com/posts/cpp-cmake-config/
|
||||
@@ -1,29 +0,0 @@
|
||||
A good article: https://cplusplus.com/doc/tutorial/files/
|
||||
|
||||
# Key Takeaways
|
||||
* There are two modes: binary and text. Text mode formats (e.g. ASCII) the bytes being written (and vice versa when being read), whereas in binary mode this does not happen
|
||||
* There are three libraries: `fstream`, `ofstream`, `ifstream`. f: file, o: output, i: input
|
||||
* There are position pointers that keep track of where in the file we're writing to or reading from: they are called **put** and **get** position pointers respectively
|
||||
* In order to **read the pointers** use: `tellg()` and `tellp()` for get and put, respectively.
|
||||
* In order to **change the pointers** use: `seekg(position)` and `seekp(position)` for get and put, respectively. The arguments can also be `seekg(offset, direction)`
|
||||
* There are helper flags for the offset: `ios::beg` for beginning of file, `ios::cur` for current location in the file, `ios::end` for the end of the file
|
||||
|
||||
Example:
|
||||
```c++
|
||||
// obtaining file size
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
using namespace std;
|
||||
|
||||
int main () {
|
||||
streampos begin,end;
|
||||
ifstream myfile ("example.bin", ios::binary);
|
||||
begin = myfile.tellg();
|
||||
myfile.seekg (0, ios::end);
|
||||
end = myfile.tellg();
|
||||
myfile.close();
|
||||
cout << "size is: " << (end-begin) << " bytes.\n";
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user