반응형

ROS작업을 진행하다 무엇인가 설정을 잘못 건드려 roslaunch + tab을 했는데

패키지 이름들이 출력되지 않고 해당 디렉토리의 파일들만 출력되는 경우가 발생했다.

 

또한 roscd roslaunch 를 입력하여도

 

"command 'roscd' not found, ...."의 내용만 출력되는 문제가 발생하였다.

 

분명 패키지를 다운받았는데 해당 패키지의 내용들이 실행되지 않을 때가 있다.

이걸로 꽤나 시간을 많이 썼는데 생각보다 간단한 실수였다..

 

패키지만 다운받아놓고 source를 진행하지 않아 발생한 문제였다.

 

보통 source를 진행할때

$ source ~/.bashrc  로 진행하게 된다.

하지만 패키지를 받을 때

$ sudo apt-get install ros-melodic-..  와 같은 명령어를 통해 받은 것이 아니라

workspace를 생성하고 저장소의 URL을 통해 설치한 것 이라면 해당 workspace를 source 해주어야 한다.

 

아주 기본적인 내용이지만 자주 놓치게 되는 것 같다.

 

해당 패키지를 적용시키려면 반드시 source 해주자.

 

 

 

* 참고로 source 는 스크립트 파일을 수정한 후에 수정된 값을 적용시키기 위한 명령어이다.

보통 bashrc파일은 사용자가 로그인할때 읽어지는 파일이라 OS에서 로그아웃 혹은 재부팅을 하여야 적용되는데

source과정을 통해 수정된 내용이 바로 적용될 수 있도록 해준다.

반응형

'ROS > ROS 기초' 카테고리의 다른 글

Ubuntu 18.04 ROS 설치하기(ROS Melodic)  (1) 2020.12.22
turtlesim 을 이용한 거북이 움직이기  (0) 2019.09.16
ROS로 카메라 사용하기(영상 확인)  (0) 2019.09.16
ROS 용어 정리  (0) 2019.09.16
반응형

1. 패키지와 키 업데이트

 

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update

 

 

 

2. ROS Melodic 설치

 

sudo apt install ros-melodic-desktop-full

 

 

 

3. rosdep 설치 및 초기화

 

sudo apt-get install python-pip
sudo pip install -U rosdep
sudo rosdep init

*** 아래 부분은 sudo가 붙지 않는다. (나중에 권한 문제가 생길 수 있다.)

rosdep update

 

 

 

4. 환경설정

 

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

 

 

 

5.  패키지 작성을 위한 툴 설치

 

sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

 

 

 

6. 작업공간 세팅 및 초기화

 

mkdir -p catkin_ws/src
cd catkin_ws/
catkin_make

 

 

 

 

이제 roscore을 입력하여 실행시켜보자.

반응형
반응형

$ roscore

 

위의 코드를 입력하여 roscore 실행

 

$ rosrun turtlesim turtlesim_node

 

그리고 다른 창을 열어(ctrl+t)

 

$ rosrun turtlesim turtle_teleop_key

 

 

그리고 연결상태를 확인하기 위하여

 

$rqt

 

를 진행하여 주고 위의 [플러그인] 메뉴에서 [ROS Graph] 를 선택하여 준다.

그럼 아래와 같이 나오는 것을 확인할 수 있다.

반응형
반응형

우선 본인 pc에 카메라가 연결되어 있는지 확인한다.

그리고  일반 카메라는 UVC를 지원하므로 ROS의 uvc_camera 패키지를 이용한다.

아래의 코드를 이용하여 uvc_camera 패키지를 설치하여주자.

 

$ sudo apt-get install ros-kinetic-uvc-camera

 

 

그 후 roscore을 실행시켜주고 새로운 창을 띄워준다.

 

$ rosrun uvc_camera uvc_camera_node

 

$rqt

 

그 다음 'rqt' 명령어로 rqt를 구동한 후 메뉴에서 [플러그인] -> [이미지뷰] 를 선택한다.

그리고 왼쪽 위의 메시지 선택란을 /image_raw 로 선택한다.

 

위의 플러그인 선택과정을 진행하는 방법 외에도

 

$ rqt_image_view

 

를 이용할 수 있다.

반응형
반응형

Node

최소 단위의 실행 가능한 프로세서를 가리키는 용어이다.

한가지의 일을 하나의 노드라고 볼 수 있고 하나의 실행 가능한 프로그램이라고

생각할 수 있을 것 이다.

ROS에서는 최소한의 실행단위로 프로그램을 나누어 작업하게 되는데 각 노드는

메시지 통신으로 데이터를 주고 받게 된다.

 

Package

하나 이상의 노드들의 실행을 위한 정보 등을 묶어 놓은 것이다.

하나의 노드는 실질적으로 사용하기 힘들다

실행 가능한 여러개의 노드들을 묶어놓은 것으로 볼 수 있다.

 

Message

메시지를 통해 노드간의 데이터를 주고 받게 된다.

각각의 노드가 작성되어 있는데 노드1과 노드2를 연동시키기 위해 메시지통신을 사용한다.

Message는 integer, floating point, boolean 와 같은 변수 형태이다.

 

Topic

단방향, 연속성을 가진 통신용어이다.

일방적인 데이터를 계속 보낼 때 사용되며 예를들어 센서를 사용할때

센서의 데이터값을 일방적으로 계속 보내야하므로 그럴 때 사용된다.

 

Publisher

통신을 할 때 메시지를 보내는 부분을 Publisher 이라 한다.

 

Subscriber

통신을 할 때 메시지를 받는 부분을 Subscriber 이라 한다.

 

(통신은 기본적으로 1:1통신 뿐 아니라 1:N, N:1, N:N 통신 모두 가능하다)

 

 

Service

위의 Topic과는 다르게 양방향 통신이 필요할 때 사용된다.

 

Service client 는 메시지를 요청하는 부분,

Service server 은 그에 대응하여 실행, 즉 process를 실행하는 부분이다.

 

 

Master

각 실행되는 노드들을 관리하는 부분이다.

노드가 실행되게 되면 노드의 정보를 받는데

노드의 이름, Topic의 이름, 어떤 형태의 메시지를 보낼 것인지, IP정보와 포트번호 등의

정보를 받아 다른노드와의 통신을 돕는다.

 

Rosrun

rosrun을 이용하여 하나의 노드를 실행시키게 되는데

$rosrun turtlesim turtlesim_node 에서

turtlesim 은 package의 이름, turtlesim_node는 노드의 이름이다.

반응형

+ Recent posts