'2017/02/03'에 해당되는 글 3건

Dev/etc.

Markdown 이란? (.md 확장자)






markdown 이란?

마크다운은 html 의 사촌 뻘 되는 언어로써, 일종의 문서 편집 도구라 할 수 있다. 마크다운 문법으로 작성된 파일은 md 확장자를 가진다. (.md) 


마크다운의 간단한 문법을 이용하면 Plain text 를 보기 좋게 꾸며줄 수 있다. 일반적으로 위키 편집, README 파일 등에서 사용된다.  백문이 불여일견이니, 예시를 보자.


 # markdown
 ---
from wikipidea, the free encyclopedia


 Markdown is a 
 [lightweight markup language](https://en.wikipedia.org/wiki/Lightweight_markup_language) with 
plain text formatting syntax  designed so that it can be converted to 
[HTML](https://en.wikipedia.org/wiki/HTML) and many other formats using a tool 
 by the same name. Markdown is often used to 
format [readme files](https://en.wikipedia.org/wiki/README), for writing 
 messages in online discussion forums, and to 
create [rich text](https://en.wikipedia.org/wiki/Formatted_text) using a 
 [plain text](https://en.wikipedia.org/wiki/Plain_text) 
[editor](https://en.wikipedia.org/wiki/Text_editor).

[markdown 으로 작성된 문서]




markdown



from wikipidea, the free encyclopedia

Markdown is a lightweight markup language with plain text formatting syntax designed so that it can be converted to HTML and many other formats using a tool by the same name. Markdown is often used to format readme files, for writing messages in online discussion forums, and to create rich text using a plain text editor.



[markdownd 에 의해 생성된 문서]





위의 첫 번째 코드가 아래의 문서로 변환된 것을 볼 수 있다. 보기에는 복잡해 보이나, 알고 보면 매우 간단한 문법이다.  

   이러한 마크다운 언어 등을 이용한 편집 환경과 반대되는 개념으로는 마이크로소프트의 Word, 아래아 한글로 대표되는 위지윅 이 있으니 참고하시길.



왜 마크다운을 사용하는가?


마크다운 언어를 이용하여 얻을 수 있는 가장 큰 장점은 바로 문서를 작성할 때 마우스에 손이 가지 않아 작업 능률이 현저히 빨라진다는 것이다.


 시간 내어 익혀 놓으면 문서 작업 효율을 매우 향상 시킬 수 있다. 아래에서 공부하기에 좋은 자료를 소개하겠다.



사실 마크다운 문법에도 자잘한 차이가 있는 여러 파생종이 있지만 하나를 골라 배워 놓으면 나머지도 적응하기 쉽다. 배워서 남 주나?


참고하면 좋은 문서




Github 마크다운 Syntax


티스토리에 마크다운 적용하기


Visual studio code 를 markdown 에디터로 사용해 보자!





참고문헌 영문 위키

'Dev > etc.' 카테고리의 다른 글

Visual studio code 를 markdown 에디터로 사용해 보자!  (0) 2017.02.05
Dev/Drone

아두파일럿 소스 분석(2) : 개요 


개요


아두파일럿에는 다음과 같은 하위 프로젝트들이 있다.

  • ArduPlane
  • ArduCopter
  • ArduRover
  • ArduSub(잠수함)


이 중에 드론(쿼드콥터)을 위한 프로젝트는 ArduCopter 인데, 가장 활발하게 참여가 이루어지는 프로젝트이기도 하다.  


먼저, 아두파일럿의 기본 구조를 살펴 보자.


[ardupilot 의 Layer 구조]





위 그림은 아두파일럿이 동작하는 드론의 구조를 고수준에서 간단하게 나타낸 다이어그램이다. 아두파일럿은 드론에서 OS 와 같은 역할을 한다. (어쩌면 드론의 OS 라고 생각해도 좋을지 모른다) 혹시 아래의 설명이 낮설고 이해가 가지 않는다면 OS 이론의 개요 부분을 읽고 오면 도움이 될 것이다.


그림 중간에 위치한 아두파일럿은 크게 Vehicle Specific Code, Shared Libraries, Hardware Abstraction Layer(HAL) 로 이루어져 있다.


그 중 가장 아래의 HAL 은 하드웨어를 추상화 하여 아두파일럿이 하드웨어에 독립적으로 동작하게 해 준다.(같은 아두파일럿 코드를 다양한 하드웨어 위에서 돌릴 수 있게 한다) 또한, 코드 내에서 HAL 객체를 통하여 하드웨어로의 접근을 제공해 준다.


Shared Libraries 는 아두파일럿 하위 프로젝트인 콥터, 플레인, 로버 등등이 공유하는 기능 혹은 Basic 한 기능들을 모아놓은 라이브러리를 제공해 준다. 예를 들면 GPS, Compass , accelometer, Math Library 등이다.


Vehicle specific code 가 바로 이 포스팅에서 분석할 부분으로, Vehicle 에 특화된 부분을 다룬다. 예를 들어 쿼드콥터의 비행 제어와 관련된 코드는 이 Layer 에 있다. 


MAVLink 는 일종의 통신 프로토콜로, 아두파일럿을 비롯한 Autopilot 시스템에서 정보, 커맨드를 주고 받는데 사용된다. Serial 통신, UDP, TCP, Telemetry 위에서 동작하는 Application Layer 의 프로토콜이다.  



가장 상위에는 Ground Station, DroneKit 등이 있는데 이 중 Ground Station 은 드론에게 미션 설정, 파라미터 설정, 드론 비행 로그 관리 외에도 잡다한 기능을 제공하는 프로그램이다.  대표적으로 APM Planner 2 가 있다. 


Dronekit 은 아두파일럿과 상호 협동할 컴퓨터 위에서 API를 제공하는 플랫폼인데, Android, Python, Cloud (Restful api), IOS(Comming soon) 가 있는데 현재 프로젝트가 잘 활성화 되어 있는 것 같지 않아 보이고 (Github 을 봤을 때) 이 중 필자의 경험으로는 Android 와 Python 은 쓸만 한 것 같다.



참고 : 

https://en.wikipedia.org/wiki/MAVLink


http://qgroundcontrol.org/mavlink/start


http://dronekit.io/



Dev/Drone

Ardupilot 코드 분석(1) : 사전 준비



이 포스팅을 수월하게 이해하기 위해서는 독자에게 요구되는 수준은 다음 질문에 대답할 수 있어야 한다

  • git 이 무엇인지 아는가?
  • Linux 환경의 경험이 있는가? 
  • C++ 코드를 읽을 수 있다.(이것만 가능해도 된다.)

사전 준비




가장 중요한 아두파일럿의 코드는 아래의 Github repo에서 구할 수 있다.


https://github.com/ArduPilot/ardupilot/



각자 익숙한 C++ 환경 (Eclipse, Vim & Ctags, Clion ... ) 에서 코드를 분석하기를 바란다.


장인은 도구를 탓하지 않지만, 굳이 Nodepad 로 소스를 분석하는 장인은 없을 것이다.


가능하면 Navigation 기능이 있는 환경에서 코드를 분석하도록 하자. 

. 코드 분석에는 Navigation 기능이 크게 도움이 되기 때문이다. (Find Usage, Go to Declaraton 등등) 학생 혜택 등으로 라이센스가 있다면 CLion 을 추천하지만, 상황의 여의치 않다면 Eclipse 등을 사용해도 무방하다.



CLion 


공식 Wiki Eclipse 환경세팅법



필자는 Ubuntu 14.04 환경에서 Clion 으로 에서 작업하였다. 아래는 Clion 에서의 간단한 코드 분석 환경(빌드는 X) 설정법이다.




Clion 에서 코드 네비게이션 기능 적용시키기





import Project from Source 를 클릭한다. 




본인의 아두파일럿 프로젝트가 있는 디렉터리를 선택하고 OK 를 누른다. 



ArduCopter 디렉터리와 Libraries 디렉터리를 위와 같이 Project Sources and Headers 로 지정해 주면 아래와 같이 Code Navigation 기능을 이용할 수 있게 된다. 







[ardupilot] 아두파일럿 소스 분석(2) : 개요


1
블로그 이미지

IT & Computer Science

빨간호랑이