리눅스

리눅스/ROS

[ROS] 로봇팔 시뮬레이션 제어 및 통신

1. 개발환경 OS : Ubuntu 20.04 ROS : Noetic OpenSource : OpenMANIPULATOR-X 2. 로봇팔 시뮬레이션 하기 ※주의※ 모든 개발환경이 구성되어 있어야 하며 자세한 사항은 다음 링크를 참고할것 https://emanual.robotis.com/docs/en/platform/openmanipulator_x/quick_start_guide/#install-ros-on-pc 1) 오픈매니퓰레이터 가제보 실행 roslaunch open_manipulator_gazebo open_manipulator_gazebo.launch - 가제보가 open되면 플레이버튼 누르기 2) 컨트롤러도 시뮬레이션으로 진행하기 위해 use_platform설정 false로 바꿔주기 roslau..

리눅스/ROS

[ROS] 기본 용어 및 컨셉

Node - 각 프로세스들을 Node의 단위로 관리 - 노드들끼리 데이터를 주고받기 위해서는 어떤 노드가 생겼고, id는 볓번이고 등의 정보가 공유되어야 함. - 이를 관리해주는 것이 ROS Master rosrun & roslaunch Node를 실행시키는 방식 1) roslaunch : launch파일을 통해 한번에 여러개의 Node를 동시에 실행 roslaunch 2) rosrun : 단 하나의 Node를 실행 rosrun launch file - .launch 파일은 xml형식으로 구성 1) line의 시작과 끝, 태그 or ... 2. tag 종류 : launch 파일임을 알려주는 tag : launch 파일에서 다른 launch파일을 가져올 수 있음 : 단일 node를 추가하고자 하는 경우에 ..

리눅스/ROS

[ROS] 초기 설정 및 에러 폭탄

올해부터 KASA(한국자동차안전학회)에서 주관하는 '국제 대학생 창작자동차 경진대회'에 참여하게 되어서 ERP42플렛폼을 이용한 자율주행 자동차를 제작해야 한다. 해당 플렛폼은 ROS(Robot Operating System)라는 프레임워크를 사용하게 되는데 이는 리눅스환경에서 돌아가기 때문에 우분투를 사용해야 한다. ROS를 설치하는 과정에서 상당히 많은 에러가 발생했으며 이를 대응하는 국내 자료가 많지 않아서 기록해 보도록 하자. 에러1. 우분투와 ROS버전 확인 우분투 버전에 따라서 설치가 가능한 ROS버전도 달라진다. 필자의 경우 기존에 우분투가 설치되어 있어서 아무 생각없이 ROS를 설치하려고 했지만 설치가 되지 않으며 알수없는 오류가 뜨게 되었다. 정리하면 다음과 같다. 우분투 18.04버전을..

리눅스

[리눅스] 정기적 실행(cron) & wsl에서 cron안될때 해결법

cron cron이란 리눅스 시스템을 다룰때 특정시간이 지나면 정기적으로 프로그램이 실행되도록 하는 명령어다. cron 프로그램 작성법은 다음과 같다. ~ crontab -e # 처음 실행하면 어떤 에디터로 편집할것인지 선택하는 화면이 나오며 편한 에디터를 선택하면 된다. 맨 아래에 프로그램을 작성하면 된다. 왼쪽부터 순서대로 (분/시간/일/월/명령프로그램)작성하면 된다. 내가 작성한 프로그램은 1분이 지날 때 마다 현재 시간을 date.log라는 파일에 작성하는 자동화 프로그램을 작성했다. 위와 같이 작성 후 ^x, 엔터를 누르면 프로그램이 저장되며 crontab -l 명령을 내리면 작성한 프로그램을 확인 할 수 있다. 이제 cron프로그램이 제대로 실행되는지 확인하기 위해 tail -f 명령어를 통해..

리눅스

[리눅스] 백그라운드, 데몬 프로세스

우리가 pc로 작업을 할때 한가지 작업만 하지 않고 인터넷 검색도 하면서 코딩도 하고 유튜브화면도 띄우듯 멀티태스킹을 한다. 리눅스에서 겉보기엔 한 화면만 나오기 때문에 한가지 작업밖에 못할 것 같지만 사실 멀티태스킹이 가능하다. 현재 작업하는 일은 '포그라운드', 이외의 작업은 '백그라운드'라고 한다. 우선 nano편집기로 프로그램을 작업한다고 가정을 하고 ^z를 누르면 home화면으로 빠져나온다. 얼핏보면 작업이 끝나서 홈화면으로 나온 것 같지만 사실 백그라운드로 프로그램이 대기하는것을 jobs명령어를 통해 할 수 있다. ~ nano ^z ~ jobs 보통 작업을 할 때 하나의 작업만 하지 않기 때문에 여러 작업을 띄워보자. 위 화면은 3개의 작업을 멀티태스킹으로 해 놓은 화면이다. 과연 이게 정말 ..

리눅스

[리눅스] 디렉토리 구조 & 파일찾기

리눅스 시스템은 디렉토리가 모든 작업을 한다고 해도 과언이 아닐 정도로 중요한 개념이다. 우리가 처음 리눅스를 시작할때 home디렉토리에서 시작하며 ~로 표시하고 나름 안전한 영역(?)에서 작업을 하는 것이다. 최상위 단은 root디렉토리 라고 부르며 / 로 시작한다. root디렉토리에 있는 다른 디렉토리는 시스템을 진행할 때 매우 중요한 자료가 저장되어 있기 때문에 함부로 건들면 안된다. 간단히 bin(Essential User Binaries)이라는 디렉토리를 확인해보자. 해당 디렉토리에는 우리가 흔히 사용하는mv, rm, ls와 같은 프로그램 명령어들이 저장되어 있는것을 알 수 있다. 이렇게 root디렉토리에는 각각의 역할을 하는 중요한 디렉토리별로 시스템이 나뉜것을 알 수 있으며 각각의 역할은 다..

리눅스

[리눅스] 쉘 스크립트 맛보기

쉘(Shell)이란 리눅스에서 명령어를 작성하고 프로그램을 실행시킬때는 항상 '쉘'의 도움을 받는다. 쉘이란 사용자와 리눅스 커널간의 매개체, 연결다리 라고 생각하면 된다. 사용자가 직접 커널이나 하드웨어 조작을 할 수 없기 때문에 이를 편리하고 사용자친화적(?)이게 화면을 통해 소통을 하는 방식이다. 리눅스에서 여러개의 쉘이 있지만 기본적으로 사용하는 쉘은 bash이다. 현재 사용하고 있는 쉘을 확인하기 위해서 다음과 같이 작성하면 된다. echo $0 현재 내가 사용하고 있는 쉘은 zsh(제트쉘, 지쉘)이며 터미널 화면을 이쁘게 꾸미고 싶어서 변경 했다. 보기좋은 터미널이 개발하는데 즐거움(?)을 주기 때문이다.....(눈물) 이제 쉘의 개념을 알았으니 쉘 스크립트에 대해서 알아보자. 쉘 스크립트 우..

리눅스

[리눅스] I/O Redirection

원 안에 있는 과정이 프로세스 즉 프로그램이 진행하는 과정이라고 생각하면 쉽다. 예를들어 ls, pwd, mkdir와 같은 명령어가 실행되면 프로세서라고 한다. 이 프로세서는 입력과 출력이 있다. 예를들어 ls -al이라는 명령어를 작성하면 ls는 프로세스, -al은 input이며 구체적으로는 Command-line Argument라고 한다. 위의 명령어를 작성하고 엔터를 누르면 출력 결과가 나타나는데 이것이 standard output이다. 이 프로그램 출력 결과가 곧바로 모니터에 출력되는데 이 결과를 모니터가 아니라 다른 파일로 저장하는 작업을 redireaction이라고 한다. redireaction하는 방법은 다음과 같다. Output ls -l > result.txt > (파일이름) 을 진행함으..

리눅스

[리눅스] 패키지 매니저(apt, wget, git)

그동안 리눅스를 제대로 배우지 않고 라즈베리파이나 여러 작업을 할 때 아무 생각없이 sudo apt-get update와 같은 명령어를 사용한 적이 있다. 다들 그냥 그렇게 하길래 나도 의심의 여지없이 똑같이 따라했지만 리눅스 강의를 통해 apt-get명령어가 패키지 매니저라는 역할을 하는것을 알게 되었다. 패키지 매니저 처음 패키지 매니저라는 용어를 들으면 생소할 것이다. 쉽게 말하면 일종의 '프로그램'이라고 생각하면 된다. 흔히 사용하는 ls, pwd와 같은 명령어도 전부 패키지 이며 이는 리눅스에 기본적으로 깔려있지만 apt-get을 통해서 인터넷에서 정보를 가져올 수도 있다. apt를 통해 다운을 받을 수 있는데 이것을 패키지 매니저라고 하며 마치 앱스토에서 어플을 다운받는 것이라고 생각하면 편하..

리눅스

[리눅스] 에디터 편집하기(nano)

리눅스에서 파일을 생성할때 편집기를 이용해서 파일을 생성한다. 그중 대표적으로 nano와 vi 편집기가 있지만 nano가 더 쉽고 중고급자는 vi편집기를 사용한다고 한다. 아직 리눅스 초보이기 때문에 nano편집기 사용방법을 알아보자. nano 기본 창에서 nano를 입력한다. 위의 명령어 입력 후 엔터를 치면 다음과같은 편집화면이 나타난다. 해당 창에서 텍스트나 코드를 입력하고 (ctrl + o) 키를 누른 다음 파일 제목을 입력하라는 창이 나온다. 파일 제목을 입력 한 후 엔터를 누르면 성공적으로 우리가 작성한 코드를 갖는 파일이 생성된다. 그런다음 ctrl + x 를 통해 에디터 화면을 빠져나온후 ls를 통해 현재 디렉토리 목록을 보면 우리가 생성한 파일이 생성됨을 확인 할 수 있다. 지금까지 기본..

리눅스

[리눅스] 에서 C언어 다루기(코드작성, 컴파일, 디버깅)

많은사람들이 질문을 할 수 있을것이다. 비주얼스튜디오, vscode와 같이 다루기 쉬운 툴이 있는데 뭐하러 불편하게 리눅스에서 C언어를 공부하나?? 맞는말이다. 비주얼스튜디오는 C언어를 배우기 위해 잘 만들어진 소프트웨어 툴이다. 그러나 실제로 전자공학에서는 C언어로 MCU를 다루기 때문에 문제가 된다. 우리가 사용는 PC대부분은 64비트 프로세서라서 넉넉한 메모리공간을 갖고 있지만 PC이외의 임베디드 제품(냉장고, 로봇청소기, 프린터 등)은 전부 8비트, 16비트와 같이 매우 협소한 공간을 갖는다. 심지어 OS가 내장되지 않은 제품은 더욱 고려할 사항이 많아진다. 이번 포스팅에서는 리눅스에서 C언어 코드를 작성, 컴파일, 디버깅하는 과정을 다뤄보자. C 코드작성 1. C언어코드를 담을 디렉토리를 생성하..

리눅스

[리눅스] 기본 명령어

리눅에서는 일반 윈도우와달리 파일을 가리키는 용어가 명확히 구분되어있다. 윈도우에서는 내pc를 폴더, 파일 등 어떻게 불러도 상관없지만 리눅스에서는 이를 디렉토리라고 부르며 .txt같은 문서를 파일이라고 한다. 따라서 우리는 명령어를 통해 디렉토리라는 방을 들어가고 나가게 된다. 이제부터 본격적으로 리눅스 명령어를 알아보자. 디렉토리 확인, 이동, 만들기 1. pwd : 현재 작업위치 기본 터미널창에서 pwd라고 치게되면 현재 내 디렉토리의 위치를 알려준다. 위의 뜻은 현재 내 위치는 home안에 pi라는 방(디렉토리)에 있다 2. 1) ls : 현재 디렉토리에 있는 모든 디렉토리 및 파일을 보여줘라 2) ls -a : 현재 디렉토리에 있는 모든 디렉토리 및 파일과 숨겨진파일까지 모두 보여줘라 3) ls..

시그널보내
'리눅스' 카테고리의 글 목록