1. Ubuntu 18.04 LTS Desktop

 

 

설치 과정 중 오류가 저장용량의 문제인 것 같아 하드디스크 40GB, 메모리 8GB로 설정하였다.

 

 

2. ROS Melodic

 

 

Ubuntu 18.04에 맞는 ROS Melodic 버전을 설치해야 한다.

 

1) source.list, keys 설정

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

 

 

2) Desktop-Full 설치

sudo apt update 

 

 

sudo apt install ros-melodic-desktop-full

 

 

3) 환경(환경변수) 설정

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

 

 

4) 패키지 빌드를 위한 의존성

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

 

 

5) rosdep 초기화

sudo apt install python-rosdep

sudo rosdep init
rosdep update

 

 

6) roscore

 

 

roscore했을 때 별 문제 없이 실행된다면 성공

 

 

3. Qt 5.14.2

 

http://download.qt.io/archive/qt/

위 링크에서 qt-opensource-linux-x64-5.14.2.run 다운로드

 

1) 패키지 업데이트

sudo apt-get update

 

 

2) build-essential 패키지 설치

sudo apt-get install build-essential

 

 

3) 기존 Qt 설치되어 있다면 제거 

sudo apt-get purge --auto-remove libqt4-dev

 

 

4) Qt 설치 프로그램 실행

chmod +x qt-opensource-linux-x64-5.14.2.run

./qt-opensource-linux-x64-5.14.2.run

 

 

Qt 설치가 처음이라면 sign-up 부분에 정보 입력 후 이메일 인증하기

 

 

인증 완료 후 모두 체크 후 설치

 

5) .bashrc 파일 수정

nano ~/.bashrc

 

 

nano 편집기 저장: Ctrl+O, 끝내기: Ctrl+X

 

6) 수정 파일 적용 후 버전 확인

source ~/.bashrc
qmake -version

 

 

 

4. Autoware.ai

 

 

Ubuntu 18.04이므로 여기에서는 Autoware 1.14.0버전을 설치했다.

 

 

1) System dependencies for Ubuntu 18.04 / Melodic

 

sudo apt update

 


sudo apt install -y python-catkin-pkg python-rosdep ros-$ROS_DISTRO-catkin

 


sudo apt install -y python3-pip python3-colcon-common-extensions python3-setuptools python3-vcstool

 


pip3 install -U setuptools

 

 

2) build

 

Create a workspace

mkdir -p autoware.ai/src 

cd autoware.ai

 

 

② Download the workspace configuration for Autoware.AI

wget -O autoware.ai.repos "https://raw.githubusercontent.com/Autoware-AI/autoware.ai/1.14.0/autoware.ai.repos"

 

 

③ Download Autoware.AI into the workspace

vcs import src < autoware.ai.repos

 

 

④ Install dependencies using rosdep

rosdep update

 

 

rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO

 

 

⑤ Compile the workspace

 

without CUDA Support (그래픽 X)

colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

 

 

3) run

 

cd autoware.ai
source install/setup.bash
roslaunch runtime_manager runtime_manager.launch

 

 

 

위 화면이 뜨면 성공!!

 

 

※ 참고자료

1. 우분투 18.04 Desktop
https://gabii.tistory.com/entry/Ubuntu-1804LTS-%EC%84%A4%EC%B9%98
2. ros melodic
https://whiteknight3672.tistory.com/248
3. qt
https://webnautes.tistory.com/1413
4. autoware.ai
https://github.com/Autoware-AI/autoware.ai/wiki/Source-Build

'2021 INCOGNITO > ROS' 카테고리의 다른 글

Week02_ROS_TOPIC  (0) 2021.06.27
Week 01_ROS  (0) 2021.05.30

1) Topic이란?

 

 

- 노드들 간에 통신할 수 있는 채널

- 프로세스 간의 통신 발생 시 주고 받는 메시지의 경로

- Publisher node : 메시지를 전송하는 노드

- Subscriber node : 메시지를 수신하는 노드

 

 

2) Topic 예제 과정

 

- 패키지 생성 

- 패키지 설정 파일, 빌드 설정 파일 수정

- 메시지 파일 작성

- Publisher node 작성

- Subscriber node 작성

- 패키지 빌드 및 노드 실행

 

 

3) Topic 실습

 

① 패키지 생성

 

 

cd catkin_ws/src                

catkin_create_pkg ros_tutorials_topic message_generation std_msgs roscpp

→ message_generation, stsd,_msgs, roscpp를 의존성으로 하는 ros_tutorials_topic 패키지 생성

 

 

 

 

② 패키지 설정 파일, 빌드 설정 파일 수정

 

- 패키지 설정 파일 ( package.xml )

 

 

<?xml version="1.0"?>

→ xml 버전 명시
<package format="2">

<name>ros_tutorials_topic</name> 

→ 위에서 정한 패키지 이름 명시

<version>0.0.0</version>
<description>The ros_tutorials_topic package</description>

→ 생성한 패키지의 간략한 설명

 

 

- 의존성 관계를 설명해주는 명령어들

<buildtool_depend>catkin</buildtool_depend>

<build_depend>message_generation</build_depend>

→ 빌드할 때의 의존성
<build_depend>roscpp</build_depend>
<build_depend>std_msgs</build_depend>
<build_export_depend>roscpp</build_export_depend>

→ 헤더를 export할 때 해당 헤더가 포함되어 있다면 추가해야 함
<build_export_depend>std_msgs</build_export_depend>
<exec_depend>roscpp</exec_depend>

→ 패키지를 실행하는 도중 의존성이 필요하다면 추가해야 함
<exec_depend>std_msgs</exec_depend>

 

 

- 빌드 설정 파일 ( CMakeLists.txt )

 

 

cmake_minimum_required(VERSION 3.0.2)

project(ros_tutorials_topic)

→ 위에서 생성한 패키지명과 동일해야 함

 

find_package(catkin REQUIRED COMPONENTS message_generation std_msgs roscpp)

→ catkin을 빌드할 때 요구되는 구성요소 패키지

→ 의존성 패키지로 message_generation, std_msgs, roscpp를 의미

 

 

include_directories(${catkin_INCLUDE_DIRS})

→ 인클루드 디렉터리 설정

 

 

MsgTutorial.msg add_message_files(FILES MsgTutorial.msg) 

→ 메시지 선언 ( MsgTutorial.msg )

generate_messages(DEPENDENCIES std_msgs) 

→ catkin 패키지 옵션으로 라이브러리, catkin 빌드 의존성, 시스템 의존 패키지 기술

 

add_executable(publisher src/publisher.cpp)

add_dependencies(publisher ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

target_link_libraries(publisher ${catkin_LIBRARIES})

→ publisher 노드에 대한 빌드 옵션

 

add_executable(subscriber src/subscriber.cpp)

add_dependencies(subscriber ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

target_link_libraries(subscriber ${catkin_LIBRARIES})

→ subscriber노드에 대한 빌드 옵션

 

 

 

③ 메시지 파일 작성

 

cd catkin_ws/src/ros_tutorials_topic

mkdir msg

cd msg   

gedit MsgTutorial.msg 

 

 

- time, int32 : 메시지 형식

- stamp, data : 메시지 이름

 

※ ROS 변수 형식

 

 

 

 

④ Publisher node 작성

 

cd catkin_ws/src/ros_tutorials_topic/src/

gedit publisher.cpp

 

 

 

 

⑤ Subscriber node 작성

 

cd catkin_ws/src/ros_tutorials_topic/src/

gedit subscriber.cpp

 

 

 

 

⑥ 패키지 빌드 및 노드 실행

 

cm ros_tutorials_topic

 

 

위 명령어 정상 실행 시 3개의 터미널 열고 아래 명령어 입력 

 

roscore

rosrun ros_tutorials_topic publisher

rosrun ros_tutorials_topic subscriber

 

 

 

※ 참고자료

https://www.g.camp/41

 

표윤석 박사 ROS 강의 자료

로보티즈의 표윤석 박사의 ROS강의 노트사이트입니다. https://github.com/robotpilot/ros-seminar ROS 강의 Chapter1. 로봇 소프트웨어 플랫폼 ROS 강의 Chapter2. 로봇 운영체제 ROS ROS 강의 Chapter3. ROS 개..

www.g.camp

 

'2021 INCOGNITO > ROS' 카테고리의 다른 글

Ubuntu 18.04 + Autoware 설치  (0) 2021.07.13
Week 01_ROS  (0) 2021.05.30

1. ROS란?

 

1) 개념

 

- Robot Operation System의 약자로 로봇 운영체제를 말함

- 로봇이 사용자의 목적에 따라 움직이고 제어되도록 할 수 있는 플랫폼

- 사용자가 작성한 소스코드를 통해 사용자가 원하는 대로 움직이고 다른 기기로부터 값을 받아 제어 가능

 

2) 용어

 

- 패키지 : ROS 소프트웨어의 기본 단위로 패키지는 노드, 라이브러리, 환경설정 파일들을 통합하는 최소의 빌드 단위

- 패키지 매니페스트 : 패키지의 작성자, 라이선스, 의존성, 컨피그레이션 플레그 등을 포함하는 패키지 정보

- 메타 패키지 : 특수한 목적을 위한 패키지 그룹을 지칭 ex) 내비게이션 스택

- 메시지 : 한 ROS 프로세서에서 다른 ROS 프로세서로 정보를 전달하는 한 형태

- 서비스 : 프로세스간의 요청/응답 상호작용

- 노드

: 최소 단위의 실행 가능한 프로세서를 가리키는 용어로 하나의 실행 가능한 프로그램을 의미

: 각 노드는 메시지 통신으로 데이터를 주고 받음

: 메시지를 보내는 노드는 publisher(발행자), 메시지를 받는 노드는 subscriber(구독자)이라고 함

- 마스터 : 각 노드들의 정보를 가지고 있으며 어떤 노드가 어떤 토픽으로 메시지를 주고 받는지 관리하는 일종의 서버

 

 

2. ROS 동작 원리

 

1) ROS 동작 원리

 

 

① 마스터 실행

② 노드 실행

③ 마스터가 구독자에 발행자 정보 전달

④ 구독자가 발행자에 접속 요청

⑤ 발행자가 구독자에 접속 응답

⑥ 발행자가 구독자 노드에 TCP/IP 방식 접속

⑦ 발행자가 구독자에 메시지 전달

 

 

3. ROS 특성

 

1) 특성

 

- 하드웨어를 직접 구동하는 것보다 데이터와 알고리즘 처리를 통한 행동 결정이나 제어에 초점을 맞춤

- 사용자가 쉽게 개발을 하고 로봇을 만들 수 있도록 도와주는 역할이 부각된 개발 환경

- 노드 간의 메시지 교환 방법으로 복잡한 프로그램을 나눠 공동 개발 가능

- 명렁어 도구, 시각화 도구 Rviz, GUI 도구 모음 rqt, 3차원 시뮬레이터 Gazebo 지원

- 로보틱스에서 많이 사용되는 모델링, 센싱, 인식, 내비게이션, 매니퓰레이션 기능 지원

- 같은 디바이스 간의 통신(움직이거나 데이터를 주고받음) 지원 가능

- 유닉스 기반의 다양한 운영체제에서 사용 가능

 

2) 통신 인프라

 

- 노드 간 데이터 통신 제공

- 통상적 미들웨어로 지칭되는 메시지 전달 인터페이스 지원

- 메시지 파싱 기능

: 로봇 개발 시 사용되는 통신 시스템 제공

: 캡슐화 및 코드 재사용을 촉진하는 노드들 간의 메시지 전달 인터페이스

- 메시지의 기록 및 재생

: 노드 간 송/수신되는 데이터인 메시지를 저장하고 필요 시 재사용 가능

: 저장된 메시지를 기반으로 반복적인 실험 가능, 알고리즘 개발에 용이

- 메시지 사용으로 인한 다양한 프로그래밍 언어 사용 가능

: 노드 간의 데이터 교환이 메시지를 사용하기 때문에 각 노드는 서로 다른 언어로 작성 가능

- 분산 매개 변수 시스템

: 시스템에서 사용되는 변수를 글로벌 키 값으로 작성하여 공유 및 수정하여 실시간으로 반영 가능

 

3) 로봇 소프트웨어 플랫폼

 

- 하드웨어 플랫폼과 소프트웨어 플랫폼 간의 인터페이스 확립

- 모듈형 하드웨어 플랫폼 확산

- 하드웨어에 대한 지식 없이 응용 프로그램 작성 가능

- 더 많은 소프트웨어 인력들이 로봇 제품에 참여 가능

- 유저에게 제공할 서비스에 집중하여 유저 계층 형성 및 피드백 가능

- 로봇 개발 급속도 발전 가능

 

 

4. ROS 관련 명령어

 

- roscd : 지정한 ros 패키지의 디렉터리로 이동

- roscore : -master(ROS 네임서비스) -rosout(로그기록) -parameter server(파라미터관리)

- rosrun : 노드 실행

- roslaunch : 노드를 여러개 실행 및 실행 옵션 설정

- rostopic : ros 토픽 정보 확인

- rosservice : ros 서비스 정보 확인

- rosnode : ros 노드 정보 확인

- rosparam : ros 파라미터 정보 확인 및 수정

- rosbag : ros 메시지 기록 및 재생

- catkin_create_pkg : 패키지 자동 생성

- catkin_make : 캐킨 빌드 시스템에 기반을 둔 빌드

- rospack : ros 패키지와 관련된 정보 보기

'2021 INCOGNITO > ROS' 카테고리의 다른 글

Ubuntu 18.04 + Autoware 설치  (0) 2021.07.13
Week02_ROS_TOPIC  (0) 2021.06.27

+ Recent posts