Generowanie danych testowych dla jazdy samochodem

Generowanie danych testowych dla jazdy samochodem
PA
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:6
2

Cześć,
Dostałem taki problem w robocie:
Wygenerowanie danych testowych w których musi się zawierać:
Czas - pomiary są co 1s od startu samochodu,
Rpm - aktualne obroty silnika,
t.oleju - temperatura oleju, trzeba to jakoś uzależnić od czasu i prędkości aby rosła w miarę rzeczywisty sposób,
Prędkość - aktualna prędkość samochodu,
Bieg - aktualny bieg samochodu.
gps_x, gps_y - położenie, tutaj jest wymóg uzależnienia tego od prędkości aby co sekundę aktualizować swoją pozycję na podstawię wcześniejszej prędkości (50km/h*1s~14m).

Danych ma być 1000 ~ 15min jazdy samochodem

Wygenerowanie danych losowych nie było problemem, ale uzależnienie wszystkiego aby generując dane mógł wyjść rzeczywisty przejazd samochodem to już problem. Siedzę nad tym od tygodnia i brak pomysłów.

Do tej pory generowałem biegi losowo, a prędkość uzależniłem od biegu, generuję losowo liczbę z odpowiedniego przedziału dla danego biegu, a dla rpm ułożyłem wzór działający na podstawie biegu, prędkości oraz odpowiedniego przełożenia dla danego biegu. Sprawdzałem z kalkulatorami w necie i tutaj obroty wychodzą rzeczywiste do generowanych danych.

Będę wdzięczny za wskazówki

.andy
Dam lajka za mega ciekawy problem!
AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 23 godziny
  • Postów:3561
1

Ja bym nie losował v / RPM, a coś jak "manewr"

  • intensywne przyśpieszanie
  • lekkie przyśpieszanie
  • równa jazda
  • ...

I całkował do biegu+rpm i prędkości (całkował to łatwo mi się mówi, na miarę wrzuconego biegu dynamika się zmienia, przy intensywnym rozpędzaniu koniec jedynki się osiąga po np sekundzie)

Losowanie jakie proponujesz jest strasznie nierealistyczne


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 1x, ostatnio: AnyKtokolwiek
PA
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:6
0

@AnyKtokolwiek: Rozumiem to tak, że muszę z góry założyć dynamikę jazdy oraz dostosować to do generowania danych?

AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 23 godziny
  • Postów:3561
0
ProgramistaAmatorrr napisał(a):

@AnyKtokolwiek: Rozumiem to tak, że muszę z góry założyć dynamikę jazdy oraz dostosować to do generowania danych?

tzn zakładasz teoretyczną dynamikę na 1,2,3,4,5
Przyśpieszanie full używa 100%, lekkie używa 30,50% (ile poziomów byś przewidział)
hamowanie też ma kilka poziomów, od "wrzucę luz bo dojeżdzam do skrzyżowania z czerwonym" po hamowanie ratunkowe

A co kierowca robi, to losujesz ... może nawet pary (1,3) -> pierwszy poziom przyśpieszania, przez 3 sekundy, potem kierowca może zrobić coś następnego, np (5,10) -> spokojna jazda przez 10 sek

Jesli szalona dokładność nie jest ważna, bym założył ze moment obrotowy jest stały. Ze zmiennym momentem robi się matematyka wyższa.

Aha, jak bym to gryzł językiem programowania, a nie excelem. I wiem, ze umiałbym to zrobić, trcohe by zeszło


Bo C to najlepszy język, każdy uczeń ci to powie
.andy
hamowanie też ma kilka poziomów, od "wrzucę luz bo dojeżdzam do skrzyżowania z czerwonym tego się nie praktykuje, bo jest niebezpieczne - tracisz kontrolę mając na luzie. Druga kwestia, to że na luzie hamowanie samym hamulcem jest mniej wydajne niż jadąc na biegu i dodatkowo hamując silnikiem.
.andy
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 3 lata
  • Postów:1524
1

t.oleju - temperatura oleju, trzeba to jakoś uzależnić od czasu i prędkości aby rosła w miarę rzeczywisty sposób,

Nie tylko od tego. Liczy się też temperatura na zewnątrz. W zimie dłużej trwa osiągnięcie docelowej temperatury pracy niż w lecie.

Prędkość - aktualna prędkość samochodu,
Bieg - aktualny bieg samochodu.

Obroty są uzależnione od prędkości oraz biegu. Im wyższa prędkość i mniejszy bieg, tym większe obroty.

gps_x, gps_y - położenie, tutaj jest wymóg uzależnienia tego od prędkości aby co sekundę aktualizować swoją pozycję na podstawię wcześniejszej prędkości (50km/h*1s~14m).

Ale musisz bazować na rzeczywistych drogach, czy może to być prosta przez np. pola? :D Bo jak trzeba bazować na rzeczywistych drogach, to zaczyna się to robić trochę skomplikowane.


Software is like sex: it's better when it's free.
- Linus Torvalds
edytowany 3x, ostatnio: .andy
XY
  • Rejestracja:ponad 6 lat
  • Ostatnio:21 dni
  • Postów:257
0

Takie bardziej symulacyjne gry wyścigowe mają często funkcję telemetrii, czyli możliwość dobrania się do takich danych. Jedynie może temperatura oleju może być rzadziej dostępna, ale do tego można sobie wymyślić własny prosty model generujący ją w miarę wiarygodnie z innych danych.

AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 23 godziny
  • Postów:3561
0
xy napisał(a):

.. Jedynie może temperatura oleju może być rzadziej dostępna, ale do tego można sobie wymyślić własny prosty model generujący ją w miarę wiarygodnie z innych danych.

W samochodzie który nie jedzie w wyścigu to proste zagadnienie, wzrost w 2-5 minut i stały poziom

@ProgramistaAmatorrr
W jakim kontekście to tkwi?
Wyścig, ciężarówka w górach, osobówka w normalnej eksploatacji, gra?
Jaki poziom dokładności / realizmu? Ma nie razić wielkimi wtopami, czy bardzo bliski realiom?

@.andy
O ile kolega nie ma podstawowych intuicji mechanicznych i fizycznych, to w ogóle porażka. Ale miejmy nadzieję, że ma.


Bo C to najlepszy język, każdy uczeń ci to powie
edytowany 1x, ostatnio: AnyKtokolwiek
.andy
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 3 lata
  • Postów:1524
0

A może by do problemu podejść od d**y strony?

Czyli najpierw wyznaczyć współrzędne bazując na rzeczywistej drodze z ograniczeniami itp.

Mając to i zaczynając od prędkości bazowej czyli 0km/h, dodając przyśpieszenie jesteś w stanie obliczać resztę parametrów.

--- EDYTKA ---

Dostałem taki problem w robocie:
Wygenerowanie danych testowych w których musi się zawierać:

Ja tak jeszcze wrócę do samego problemu. Od strony analizy. Co wygenerowanie tych danych testowych ma rozwiązać? W sensie co dalej z nimi będzie robione? Będzie porównanie z rzeczywistymi robione w celu weryfikacji czy coś? Sztuka dla sztuki?


Software is like sex: it's better when it's free.
- Linus Torvalds
edytowany 1x, ostatnio: .andy
AK
Wszystko jest możliwe, ale to (przynajmniej dla mnie) matematycznie było strasznie ambitne, albo bym poległ
PA
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:6
0

@.andy: Tutaj realizm ma być tylko pozorny, w sensie można założyć odpowiedni model i go wygenerować. Załóżmy, że jest to lato do generowania t.oleju
Nie muszę bazować na realnych drogach, położenie może się zmieniać dowolnie, ale musi być uzależnione od prędkości poprzedniego wiersza

To będą tak zwane dane prawidłowe, później będę je modyfikować o nowe dane tzw. niepoprawne i na ich podstawie będę określać stan silnika. Tam gdzie będą zachodzić jakieś anomalie będę mógł prognozować potencjalne uszkodzenia, wady. Coś z pokroju big-data, machine_learning oraz BI bo na końcu będą z tego generowane raporty.

PA
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:6
0

@AnyKtokolwiek:
To jest w kontekście zwykłej eksploatacji samochodu.
Realizm nie musi być przesadny. Chodzi raczej żeby całość stanowiło logiczną całość, ale jeśli temperatura będzie się zmieniać w stałych okresach czasu załóżmy, że nie uwzględniamy pogody oraz innych czynników zewnętrznych to nie ma problemu

PA
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:6
0

@xy:
Kojarzysz może jakie tytuły mają takie możliwości? Z ciekawości to sprawdzę nawet jeśli mi się to nie przyda, ale może jakaś inspiracja zawsze wpadnie dzięki takiemu modelowi

XY
  • Rejestracja:ponad 6 lat
  • Ostatnio:21 dni
  • Postów:257
0

Dla większości tytułów, które mają fora tam coś się zapewne da uzyskać i znaleźć narzędzia do tego: https://www.racedepartment.com/forums/#sim-racing-games.359
Przykładowo: Assetto Corsa, rFactor, Automobilista, Live for Speed

M3
  • Rejestracja:około 6 lat
  • Ostatnio:około 3 lata
  • Postów:195
0

Ja bym właściwie cały problem sprowadził do jednego - przyśpieszenia. Ewentualnie jeszcze warunki brzegowe (czy samochód stał na początku czy jechał).

Mając przyśpieszenie (dodatnie lub ujemne) możesz policzyć prędkość i położenie.
Mając prędkość, ustalasz bieg.
Mając bieg i prędkość - masz obroty.

Najtrudniej chyba z olejem, zależy jak to ma być dokładne.

Pochodną przyśpieszenia jest temperatura oleju, silnik najmocniej pracuje przy wysokim przyśpieszeniu, mniej przy zerowym, a prawie w ogóle przy ujemnym. Zakładasz temperaturę docelową proporcjonalną do obrotów i zakładasz, że temperatura będzie dążyć do tego punktu liniowo w czasie.

No i trzeba jakoś symulować rozkład przyśpieszeń. Ale tu rozstrzał może być ogromny (czy samochód jedzie w mieście, czy na autostradzie...).

YourFrog2
  • Rejestracja:prawie 4 lata
  • Ostatnio:około 2 lata
  • Postów:100
2

Edit:
Dopiero zauważyłem że to dział baz danych :D No ale data fixtures i tak lepiej jakimś kodem generować, a nie w SQL ;p

Podszedł bym do tego trochę inaczej podzieliłbym sobie problem na działy np:

  • Samochód (różne rodzaje) każde auto ma inny vmax, inne przyśpieszenie, spalanie, areodynamike, inaczej spowalnia go / przyśpiesza droga etc.
  • Kierowca (różnie zachowujący się podczas jazdy, jeden wolniej zmienia biegi, drugi szybciej, tolerancja stosowania się do przepisów itp.)
  • Pogoda (wiatr, deszcz, słońce) każda wpływa inaczej na końcowe wyniki (temperature oleju na początku, opony, przyczepność itp.)
  • Jakość pomiaru GPS (satelita, po masztach) to by wprowadzało "realne" zakłócenia w gps'ie
  • Trasa (zwykły graf otwarty) gdzie każde powiązanie pomiędzy punktami ma swój dystans, maksymalną prędkość, opóźnienie wynikające ze świateł, rodzaj nawierzchni itp.

Wychodzi mi (tobie może wyjść więcej) 5 czynników które co każde np 200 ms mają wpływ na to jak zachowuje się pojazd w danym momencie (np kierowca dodaje gazu, ale auto ma inne przyśpieszenie, pogoda deszczowa odejmuje mu 5 km z vmax'a itp.)

Po zbudowaniu obiektu doświadczalnego (łączy by wszystkie 5 czynników ze sobą) przepuściłbym go przez pętle która co każdy obieg prosiła by "obiekt" o zaaktualizowanie swojego stanu i podanie aktualnych wyników.

Linki które mogą Ci się przydać:
https://refactoring.guru/pl/design-patterns/builder -- Do stworzenia obiektu
https://refactoring.guru/pl/design-patterns/decorator -- Do dodania pogody dla np oleju
https://refactoring.guru/pl/design-patterns/mediator -- Żeby jakiś porządek zrobić sobie w kodzie
https://refactoring.guru/pl/design-patterns/state -- Inne zachowanie w zależności od biegu (vmax, przyśpieszenie, spalanie etc.)

edytowany 2x, ostatnio: YourFrog2
AK
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 23 godziny
  • Postów:3561
0
m31 napisał(a):

Ja bym właściwie cały problem sprowadził do jednego - przyśpieszenia. Ewentualnie jeszcze warunki brzegowe (czy samochód stał na początku czy jechał).

Mając przyśpieszenie (dodatnie lub ujemne) możesz policzyć prędkość i położenie.
> Mając prędkość, ustalasz bieg.
Mając bieg i prędkość - masz obroty.

Z tym biegiem to nie bardzo.
O wiele większe znaczenie ma realizowany plan jazdy. Przy 50 km/h można mieć 2,3,4,5, zależy jaki cel realziujesz (a w niektórych jedynkę, przynajmniej w szybkich motocyklach)


Bo C to najlepszy język, każdy uczeń ci to powie
.andy
  • Rejestracja:ponad 16 lat
  • Ostatnio:około 3 lata
  • Postów:1524
0

Opis uwagę trzeba brać jeszcze wykres momentu obrotowego.
Np. w silnikach śmierdziuszkach wysoki moment ma się z tego co wiem praktycznie od razu, natomiast w benzynowych dopiero przy X obrotach.


Software is like sex: it's better when it's free.
- Linus Torvalds
AK
Poruszałem już ten temat, że można nie uwzględniać (takie uproszczenie modelowania) lub uwzgledniać
AK
Benzyna wtryskowa moze być bardziej wyrównana od dawnej gażnikowej
K8
  • Rejestracja:ponad 10 lat
  • Ostatnio:2 miesiące
  • Lokalizacja:Małopolska
  • Postów:643
0

ja bym to zrobil na klawiszach strzalkach i wszystka generacje uzaleznil od tego jaka strzalka jest przytrzymana i jak dlugo

Potat0x
  • Rejestracja:ponad 8 lat
  • Ostatnio:13 dni
  • Postów:370
4

A może wystarczy pozbierać trochę danych przez ELM327? W Google Play są aplikacje, które to potrafią. https://www.carscanner.info/records/
Problem będzie z temperaturą oleju - w zwykłych samochodach może nie być takiego czujnika.

piotrpo
Praktycznie każdy samochód ma taki czujnik. Nie pokazuje się tych danych kierowcy.
Potat0x
Czujnik temperatury płynu chłodniczego to tak, ale oleju? :)
piotrpo
  • Rejestracja:ponad 7 lat
  • Ostatnio:dzień
  • Postów:3277
1

Zależy jaką jakość tych danych chcesz uzyskać. Jeżeli wysoką, to "generowanie danych" NIE MA sensu. Trzeba by je pobrać z rzeczywistego użytkowania, wtedy replikować i lekko zmieniać. Jak nie ma takiej potrzeby, to możesz sobie stworzyć model samochodu z przyśpieszaniem i hamowaniem, napisać kilka schematów zachowania (przyśpieszanie, utrzymanie prędkości i zwalnianie) i składać je w losowej kolejności. To jak szczegółowy ma być model samochodu to już znowu kwestia wymagań. Można dołożyć różne krzywe wzrostu temperatury, preferencje "kierowców" w sprawie dynamiki jazdy i przedziału obrotów silnika i pewnie
Kiedyś spotkałem się z przypadkiem ML wytresowanego na wygenerowanych danych i efekt był dość żałosny.

PA
  • Rejestracja:ponad 3 lata
  • Ostatnio:ponad 3 lata
  • Postów:6
0

@Potat0x: Korzystałeś może kiedyś z takich urządzeń? Bo szukam jakie dane to wypluwa i nie widzę żadnych sensownych logów tylko pokazuje zegary itp w czasie rzeczywistym. Możliwe, że nie dokopałem się jeszcze do wszystkich funkcji.

Może ktoś się orientuje gdzie można znaleźć takie dane z tych aplikacji i urządzeń? Czy takie coś jest możliwe do znalezienia? Ktoś to udostępnia czy jedyna opcja to samemu przeprowadzenie całej operacji?

Potat0x
  • Rejestracja:ponad 8 lat
  • Ostatnio:13 dni
  • Postów:370
2

Mam na telefonie Car Scanner. Jutro podrzucę przykładowy CSV z prędkością i obrotami.
Żeby skorzystać z aplikacji potrzebujesz czegoś takiego https://allegro.pl/kategoria/diagnostyka-i-pomiary-testery-i-interfejsy-diagnostyczne-28413?string=ELM327 - podłączasz to do samochodu i łączysz się telefonem (na którym jest zainstalowana aplikacja) przez Bluetooth.

Może ktoś się orientuje gdzie można znaleźć takie dane z tych aplikacji i urządzeń?

Niczego takiego nie znam.

Edit:
W załączniku wrzuciłem dane z ok. 10 minut jazdy, podgląd:

Kopiuj
"73295.633374";"Obroty silnika";"2464";"rpm"
"73295.824374";"Chwilowe zużycie paliwa (l/100 km)";"0";"L/100km"
"73295.824374";"Pokonany dystans";"0.398526087027778";"km"
"73295.824374";"Pokonany dystans (całkowity)";"0.398526087027778";"km"
"73295.824374";"Prędkość samochodu";"51";"km/h"
"73295.824374";"Przyśpieszenie pojazdu";"0.102820430686421";"g"
"73295.824374";"Średnia prędkość";"11.4165770943257";"km/h"
"73296.017374";"Obroty silnika";"2485";"rpm"
"73296.218374";"Chwilowe zużycie paliwa (l/100 km)";"0";"L/100km"
"73296.218374";"Pokonany dystans";"0.404099694277778";"km"
"73296.218374";"Pokonany dystans (całkowity)";"0.404099694277778";"km"
"73296.218374";"Prędkość samochodu";"51";"km/h"
"73296.218374";"Przyśpieszenie pojazdu";"0.0677925606009736";"g"
"73296.218374";"Średnia prędkość";"11.540114612552";"km/h"
"73296.418374";"Obroty silnika";"2520";"rpm"
"73296.617374";"Chwilowe zużycie paliwa (l/100 km)";"0";"L/100km"
"73296.617374";"Pokonany dystans";"0.409867428833333";"km"
"73296.617374";"Pokonany dystans (całkowity)";"0.409867428833333";"km"
"73296.617374";"Prędkość samochodu";"52";"km/h"
"73296.617374";"Przyśpieszenie pojazdu";"0.0678932202488712";"g"
"73296.617374";"Średnia prędkość";"11.6678691659035";"km/h"

nie ma np. temperatury płynu chłodniczego, mimo że aplikacja potrafi ją odczytać. Trochę chaos jest w tym pliku.

carscanner.csv

edytowany 2x, ostatnio: Potat0x
Potat0x
@ProgramistaAmatorrr: dodałem plik z odczytami :)
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)