728x90

전체 글 494

ROS day2

8자 거북이 자신만의 msseage data structure 를 쓰는방법 1 . xycar_ws/src 에서 catkin_create_pkg 를 통해서 msg_send를 만들어줍니다. 필요한 라이브러리들도 만들떄 추가해서 만들어줍니다. 2. mkdir msg 를 한후 안에다가 자신이 원하는 데이터 구조를 만들어줍니다. 3. package.xml 과 CMakeList.txt 를 ROS/Tutorials/CreatingMsgAndSrv - ROS Wiki 이곳을 참조하여 수정한다. 4. cm 으로 build를 해주고 추후에 python 에서 import 하여 써주면된다. 궁금하다 궁금해~ 1. 누락없이 모두 잘 도착하는가? 2. 데이터 크기에 따른 전송속도는 어떻게 되는가? 3. 도착하는 데이터를 미처 처..

ROS day1

Robot OS (ROS Kinetic Kame (long-term april2021) 로봇 SW를 만들기 위한 코드의 재사용이 용이한 환경제공이 목표 다양한 OS 환경에서 통일된 방법으로 상호작용을 구현하는 것이 가능하다. 표준화된 통신 프로토콜을 따르는 이기종간의 메세지 교환이 가능하다 ROS에서 통신은 마스터 == 서로 다른노드들 사이의 통신을 총괄관리 ROS Core 노드 == 실행가능한 최소의 단위 , ROS에서 발생하는 통신(송/수신) 의 주체 토픽 == ROS 노드들이 관심을 가지고 있는 이야깃거리 , 그안에 실제 들어있는것들은 메시지 라고 부름 발행자 == 특정 토픽에 메세지를 담아 외부로 송신하는 노드 구독자 == 특정 토픽에 담겨진 메세지를 수신하는 노드 패키지 == 하나 이상의 노드와..

리눅스 day9

memory page == 메모리를 규격화된 크기로 잘럿 사용한다. 인덱싱이 편하도록 segment == 프롤세스가 실제로 사용하는 메모리다. memory lock == one way to ensure that a process stays in main memory and is exempt from paging. 시간이 중요한 어플리케이션에게 유용하다. dirty page == modified page 가 디스크에 wirte back 되기전 상태이다. mmap == ram 의 페이지와 disk의 페이지를 매핑시켜서 빠르게 처리하는 기법이다. is used for mapping between a process address space and either files or devices. When a file..

리눅스 day8

Built in command built in command를 사용하면 fork의 부담이 거의 없다. e.g) expr보다 let이나 ((...)) 를 사용하는게 좋다. time == cpu 시간 측정 (time은 built-in 과 external cmd 둘다 있다.) xargs == stdin으로부터 argv를 받아서 명령어 생성 sort == ls -l | sort -M -k 6 -k 7n -k 5nr == 6번쨰 기준으로 만약 같으면 7번째 column 같으면 5번쨰 column reverse기준 split == 처리할 데이터(Line 단위) 가 큰 경우 이를 자르는 용도로 주로 사용된다. 큰 파일을 작은 파일로 쪼갤 수 있다. paste == merge lines of files -s == pa..

리눅스 day7

Debugging signal event : trap trap (command | function) (SIGSPEC ...) command ,function = 시그널이 캐치되면 작동될 명령 or 함수 SIGSPEC = 트랩을 설치할 시그널 or 조건 (...;) = sub shell 임으로 {...;} 그룹으로 묶어야 한다. 효율성을 위해서 예시중에 SIGTTIN ,SIGTTOU에 관해서 주의 하며 코드를 쓰라는 것이있는데 A process cannot read from the user’s terminal while it is running as a background job. When any process in a background job tries to read from the terminal, ..

리눅스 day7(REGEX)

\ 두개의 sh file을 chmod +x 해주고 ./daemon.sh > >(./proclog.sh INFO) 2> >(./proclog.sh ERR) & 를 실행 해주면 stdout 을 /dev/fd/60(임시 file descriptor) 에 연결해주고 stderr 를 /dev/fd/61(임시) 에 연결해주고 백그라운드 job으로 돌린다. mkfifo /tmp/myfifo_m1 이런식으로 파이프를 생성 해줄수 있다. expr command는 sub-shell을 생성해서 실행되기에 fork가 엄청일어난다 쓰지 않는게 좋다. let 이나 ((expression)) 처럼 내장된 함수를 서야 한다. {s1,s2,s3,s4}_job == s1job,s2job,s3job,s4job 처럼 된다. {1..100}..

리눅스 day6(bash)

Shell에서 실행되는 Unix 명렁어는 sub-shell이 생성되어 실행된다. 외부 명렁어 실행은 기본적으로 sub shell을 생성하므로 , process 생성의 overhead가 존재한다. bash(Parent process) =>(fork) => bash:sub-shell(child process) => (exec) => ls-al(child process) 마지막 child process가 exitcode($? ,return code) 를 Parent process에게 리턴한다 zombie process 는 이미 안의 코드는 끝나서 os가 메모리를 회수해 갔지만 meta data만 남아있는 상태이다. 이 경우에는 parent process 에 문제가 있는 것이다. rm --force 옵션은 강제..

리눅스 day5 (file sytem)

fdisk /dev/sd[a...z] == old version 이긴 하지만 유용하다 여러 설정을 진행해도 w키를 입력하기 전까지는 저장이 안됨으로 연습할떄는 ^C 나 q로 종료를 하자 안에들어가게되면 p를 통해 현재 파티션들을 볼 수 가 있고 m을 통해서 나머지 명령들도 볼 수 있다. File System 리눅스에서 지원하는 FS는 여러개가 있다. ext4 == 저성능의 I/O효율이 높음 (IOT) , xfs == 그래픽을 많이 다룰때 씀 lsblk : 현재 추가된 장치들의 정보를 볼 수 가 있다 mkfs -t ext4 /dev/sdb2 == 저 위치를 포맷한다 타입은 ext4로 fsck -y -t ext4 /dev/sdb2 == 일반적으로 offline에서 fs를 체크 해야한다. fstab == fi..

728x90