1. 패키지 및 작업 폴더 생성cd ~/${workspack_name}/src # cd ~/ros_ws/src catkin_create_pkg ${package_name} rospy std_msgs # catkin_create_pkg custom_message rospy std_msgs cd ../ && catkin_make rospack find ${package_name} # rospack find custom_message cd src/${package_name} # cd src/custom_message mkdir msg mkdir launch 2. 메시지 형식 정의cd msg로 폴더를 이동한 뒤, vi person.msg 파일을 만들고 아래의 내용을 작성한다.string first_name st..
1. ROS 1. 개념 로봇 소프트웨어를 개발하는데 필요한 소프트웨어의 집합체 각종 센서와 모터를 프로그래머가 편하게 사용할 수 있도록 지원 표준화된 통신 프로토콜을 따르는 이기종간의 메시지 교환이 가능 통신은 토픽의 발행 및 구독 기반의 메시지 교환 형식으로 진행 2. 용어 마스터 노드 사이의 통신을 총괄 관리(ROS Core) 노드(node) 실행 가능한 최소 단위의 프로세스으로서 토픽을 주고 받는 통신 주체 토픽(topic) 노드간에 통신할 수 있는 채널 (일방적이거나 지속적, 1:1과 N:N 통신 가능) 메시지(message) 통신되는 실제 데이터 발행자 토픽을 만들어 보내는 노드 구독자 토픽을 받는 노드 패키지(package) 하나 이상의 노드와 노드실행을 위한 정보 등을 묶어놓은 것 2. RO..
1. 시스템 명령어 활성화하기 WSL에서 su 혹은 sudo 명령어를 사용하기 위해서는 wsl.conf 설정이 필요하다. 사전에 설정이 되어있다면 다음 단계로 넘어간다. WSL에서 /etc/wsl.conf 파일을 만든 후, 다음의 내용을 추가한다. [boot] systemd=true 참고 : https://learn.microsoft.com/ko-kr/windows/wsl/wsl-config 파일 생성 후 WSL를 재부팅한다. Powershell 혹은 CMD에서 wsl --shutdown을 실행한다. 2. CUDA 설치 (11.6 버전) CUDA 설치 페이지에 접속한다. Linux > x86_64 > WSL-Ubuntu > 2.0 > deb(local) 순서대로 선택한다. 아래 페이지에 적혀있는 바와 같..
선택 정렬 (Selection Sort)최소값을 선택하여 정렬하는 알고리즘def selection_sort(a): n = len(a) for i in range(0, n - 1): min_idx = i for j in range(i + 1, n): if a[j] = 0 and a[j] > key: a[j + 1] = a[j] j -= 1 a[j + 1] = key 버블 정렬 (B..
VIM? 리눅스 운영체제에서 텍스트를 편집할 때 사용하는 도구로, 마우스 없이 키보드만으로 작업할 수 있도록 개발되어 있다. 초심자에게는 매우 어렵지만, 숙련자에게는 생산성 높은 도구로 평가받는다. 4가지 모드와 키마다 설정된 명령의 기능이 다양해서, vim을 사용하기 위해서는 별도로 공부해야 한다. 모드 Normal Mode 각종 명령어를 사용할 수 있는 모드이다. 어떤 모드라도 ESC 키를 입력하면 명령모드로 전환된다. Command Mode 여러 가지 환경 설정을 변경하거나, 파일 저장 및 종료, 검색 등을 할때 사용한다. Normal 모드에서는 :, /, ?키를 누르면 전환된다. Insert Mode 텍스트를 편집할 수 있는 모드이다. Normal 모드에서 i, I, a, A, o, O를 누르면 ..
tmux? terminal multilexer의 약자로, 터미널에서 여러 개의 작업을 수행할 수 있는 도구이다. tmux의 장점으로는 터미널의 세션이 유지된다는 점과 여러개로 창을 분할하여 사용할 수 있다는 점이다. 설치방법 mac에서는 brew install tmux 명령을 통해서 설치할 수 있다. ubuntu에서는 apt-get install tmux 명령을 통해서 설치할 수 있다. 명령어 정리 세션을 확인하려면 다음의 명령어를 실행하면 된다. tmux ls tmux list-session tmux list-sessions 새로운 세션을 여는 명령어는 다음과 같다. # 1) 자동적으로 이름 설정 tmux # 2) 특정한 세션으로 활성화 tmux new-session -t ${세션이름} tmux new..
Reproducible Result? 코랩에서 tensorflow를 활용한 CNN 모델 학습을 진행하다가, 동일한 레이어 및 설정을 해도 결과마다 loss 및 accuracy가 다르게 나오는 경우를 보았다. 구글링을 해보니, random seed 및 gpu 연산에 따라서 결과가 다르게 나오는 것이 원인이었다. 레이어나 설정에 따라 loss 및 accuracy가 어떻게 변화되는지 확인하고 싶었고, 이에 따라 재현가능한 결과가 나오도록 설정하고 싶었다. 이에 따라 몇가지 설정을 적용해서, 동일한 레이어 및 설정에서 동일한 결과가 도출되는 것을 확인하였다. 필요한 설정 tensorflow의 utils에서 set_random_seed 메서드를 호출하여 시드값을 설정한다. tensorflow의 config에서 e..
PythonAnywhere? https://www.pythonanywhere.com/ flash, django 등 python 웹앱을 호스팅할 수 있는 서비스 무료계정의 경우에 2개의 console, 1개의 web 프로젝트가 사용이 가능하다 회원 가입 간단한 이메일 인증만으로 가입이 가능하다 Web 프로젝트 생성 Web > Add a new web app 선택 Next > Flask > Python 3.10 > app 이름 설정 파일 업로드 Files > mysite 폴더 하위에 웹앱에 맞게 폴더 및 파일 업로드 무료 계정의 경우에는 512MB 제한이 있음 Bash console를 통해서 Git 저장소를 clone해서 파일을 다운받을 수도 있음 Consoles Consoles > Bash을 클릭해서, 필..