제품 정보로 건너뛰기
ROS 2로 시작하는 로봇 프로그래밍
ROS 2로 시작하는 로봇 프로그래밍
Description
책소개
이 책은 ROS 공식 플랫폼인 TurtleBot3의 개발자이자 10여 년간 ROS 기반 프로젝트를 진행한 로보틱스 엔지니어인 필자들이 실무에서 얻은 경험과 커뮤니티 활동을 바탕으로 작성한 ROS 로봇 프로그래밍 지침서이다.
한국 ROS 커뮤니티에서 다양한 교육과 세미나, 공개강좌를 진행하며 받은 피드백을 통해 독자들의 학습 목적과 의견을 반영하였다.

"ROS 2 로봇 프로그래밍"은 지난 2015년 출판한 "ROS 로봇 프로그래밍"의 판올림이다. ROS 2로 로봇 프로그래밍에 입문하는 독자들을 위해 ROS 소개부터 ROS 2 기본 프로그래밍, ROS 2 심화 프로그래밍으로 내용을 세분화하여 익힐 수 있게 했다.
또 ROS 1을 사용하던 기존 개발자들을 위해 ROS 2 프로그래밍의 모든 것을 충실히 담았다.
이 책이 여러분을 ROS 2와의 즐거운 여정으로 이끌어 ROS 기반의 멋진 로봇들이 나오기를 기대해본다.

목차
1부 ROS 2 소개
1장 ROS 2 소개
__1.1.
로봇 개발을 위한 툴
__1.2.
메타 운영체제
__1.3. ROS의 목적
__1.4. ROS의 구성
__1.5. ROS의 역사
__1.6. ROS 버전
__1.7.
버전 주기
__1.8.
버전 선택
2장 ROS 2 기반 로봇 개발에 필요한 정보
__2.1.
커뮤니티 중심의 개발 문화
__2.2.
즐겨찾는 ROS 2 정보 및 개발 자료
__2.3. ROS 커뮤니티 게시판
__2.4. ROS 문서
__2.5. ROS 2 소스코드
__2.6. ROS 2 패키지 배포 현황
__2.7. ROS 질의응답
__2.8.
기타
3장 ROS 2 개발환경 구축
__3.1.
개발환경
__3.2.
기본 운영체제 설치
__3.3.
로봇 운영체제 설치
__3.4. ROS 개발 툴 설치
__3.5. ROS 2 빌드 테스트
__3.6.
Run commands 설정
__3.7.
통합 개발환경(IDE) 설치
__3.8. ROS 2 삭제
4장 왜? ROS 2로 가야하는가?
__4.1.
왜? ROS 2로 가야하는가?
__4.2.
대세는 이제 ROS 2!
5장 ROS 2의 중요 콘셉트
__5.1.
Why ROS 2?
6장 ROS 1과 2의 차이점으로 알아보는 ROS 2의 특징
__6.1. ROS 2 개발의 필요성
__6.2. ROS 1과 ROS 2의 차이점
__6.3. ROS 2의 특징
7장 ROS 2와 DDS
__7.1. ROS 2와 DDS
__7.2. DDS란?
__7.3. DDS의 특징
__7.4. ROS에서의 사용법
8장 DDS의 QoS
__8.1. DDS의 서비스 품질(QoS, Quality of Service)
__8.2.
QoS의 종류
__8.3. ROS 2에서 사용되는 QoS 옵션
__8.4.
rmw_qos_profile 사용과 유저 QoS 프로파일 사용
__8.5.
QoS 테스트
9장 패키지 설치와 노드 실행
__9.1.
Turtlesim 패키지 설치
__9.2.
Turtlesim이란?
__9.3.
Turtlesim 패키지와 노드
__9.4.
Turtlesim 패키지의 노드 실행
__9.5.
노드, 토픽, 서비스, 액션의 조회
__9.6.
rqt_graph로 보는 노드와 토픽의 그래프 뷰
10장 ROS 2 노드와 데이터 통신
__10.1.
노드와 메시지 통신
__10.2.
노드 실행(ros2 run)
__10.3.
노드 목록(ros2 node list)
__10.4.
노드 정보(ros2 node info)
11장 ROS 2 토픽
__11.1.
토픽
__11.2.
토픽 목록 확인(ros2 topic list)
__11.3.
토픽 정보 확인(ros2 topic info)
__11.4.
토픽 내용 확인(ros2 topic echo)
__11.5.
토픽 대역폭 확인(ros2 topic bw)
__11.6.
토픽 주기 확인(ros2 topic hz)
__11.7.
토픽 지연 시간 확인(ros2 topic delay)
__11.8.
토픽 퍼블리시(ros2 topic pub)
__11.9.
bag 기록(ros2 bag record)
__11.10.
bag 정보(ros2 bag info)
__11.11.
bag 재생(ros2 bag play)
12장 ROS 2 서비스
__12.1.
서비스
__12.2.
서비스 목록 확인(ros2 service list)
__12.3.
서비스 형태 확인(ros2 service type)
__12.4.
서비스 찾기(ros2 service find)
__12.5.
서비스 요청(ros2 service call)
13장 ROS 2 액션
__13.1.
액션
__13.2.
액션 서버 및 클라이언트
__13.3.
노드 정보(ros2 node info)
__13.4.
액션 목록(ros2 action list -t)
__13.5.
액션 정보(ros2 action info)
__13.6.
액션 목표(action goal) 전달
14장 ROS 2 인터페이스
__14.1. ROS 2 인터페이스
__14.2.
메시지 인터페이스(Message interface, msg)
__14.3.
서비스 인터페이스(Service interface, srv)
__14.4.
액션 인터페이스(Action interface, action)
15장 ROS 2 토픽/서비스/액션 정리 및 비교
__15.1.
토픽, 서비스, 액션 비교
16장 ROS 2 파라미터
__16.1.
파라미터
__16.2.
파라미터 목록 확인(ros2 param list)
__16.3.
파라미터 내용 확인(ros2 param describe)
__16.4.
파라미터 읽기(ros2 param get)
__16.5.
파라미터 쓰기(ros2 param set)
__16.6.
파라미터 저장(ros2 param dump)
__16.7.
파라미터 삭제(ros2 param delete)
17장 ROS 2 도구와 CLI 명령어
__17.1. ROS 도구
__17.2. ROS 2 CLI 명령어
__17.3. ROS 2 CLI 사용법
__17.4. ROS 2 CLI 종류와 각 sub-verbs의 기능
__17.5.
지속 개발되고 있는 ROS 2 CLI
18장 ROS 2 GUI 개발을 위한 RQt
__18.1. ROS의 종합 GUI 툴 RQt
__18.2. RQt 프레임워크
__18.3. RQt 설치 및 실행
__18.4. RQt 플러그인의 종류
__18.5. RQt 사용 예시
__18.6. ROS의 CLI 툴과 GUI 툴
19장 ROS 2의 표준 단위
__19.1. ROS 2의 표준 단위의 필요성
__19.2. ROS 2의 표준 단위
__19.3. ROS 2의 표준 단위 사용
20장 ROS 2의 좌표 표현
__20.1. ROS 2의 좌표 표현 통일의 필요성
__20.2.
좌표 표현의 기본 규칙
__20.3.
좌표 표현의 축 방향(Axis Orientation) 규칙
__20.4.
좌표 표현의 회전 표현 규칙
21장 ROS 2의 시간
__21.1.
시계(Clock)와 시간(Time)
__21.2.
시간 추상화(Time Abstractions)
__21.3.
Time API
22장 ROS 2의 파일 시스템
__22.1.
파일 시스템
__22.2.
패키지와 메타패키지
__22.3.
바이너리 설치와 소스코드 설치
__22.4.
기본 설치 폴더와 사용자 작업 폴더
23장 ROS 2의 빌드 시스템과 빌드 툴
__23.1.
빌드 시스템과 빌드 툴
__23.2.
빌드 시스템(Build system)
__23.3.
빌드 툴(Build tools)
__23.4.
패키지 생성
__23.5.
패키지 빌드
__23.6.
빌드 시스템에 필요한 부가 기능
24장 ROS 2의 패키지 파일
__24.1.
패키지 파일
__24.2.
패키지 설정 파일(package.xml)
__24.3.
빌드 설정 파일(CMakeLists.txt)
__24.4.
파이썬 패키지 설정 파일(setup.py)
__24.5.
파이썬 패키지 환경설정 파일(setup.cfg)
__24.6. RQt 플러그인 설정 파일(plugin.xml)
__24.7.
패키지 변경로그 파일(CHANGELOG.rst)
__24.8.
라이선스 파일(LICENSE)
__24.9.
패키지 설명 파일(README.md)


2부 ROS 2 기본 프로그래밍
1장 ROS 프로그래밍 규칙(코드 스타일)
__1.1.
코드 스타일 가이드
__1.2.
기본 이름 규칙
__1.3.
C++ Style
__1.4.
Python Style
__1.5.
다른 언어
2장 ROS 프로그래밍 기초(파이썬)
__2.1. ROS의 Hello World, rclpy 버전
__2.2.
패키지 생성
__2.3.
패키지 설정
__2.4.
퍼블리셔 노드 작성
__2.5.
서브스크라이버 노드 작성
__2.6.
빌드
__2.7.
실행
3장 ROS 프로그래밍 기초(C++)
__3.1. ROS의 Hello World, rclcpp버전
__3.2.
패키지 생성
__3.3.
패키지 설정
__3.4.
퍼블리셔 노드 작성
__3.5.
서브스크라이버 노드 작성
__3.6.
빌드
__3.7.
실행
4장 ROS 2 Tips
__4.1.
설정 스크립트(setup script)
__4.2.
setup.bash vs local_setup.bash
__4.3.
colcon_cd
__4.4. ROS_DOMAIN_ID vs Namespace
__4.5.
colcon과 vcstool 명령어 자동 완성 기능 추가
5장 토픽, 서비스, 액션 인터페이스
__5.1. ROS 2 인터페이스(Interface) 신규 작성
__5.2.
인터페이스 패키지 만들기
__5.3.
패키지 설정 파일(package.xml)
__5.4.
빌드 설정 파일(CMakeLists.txt)
__5.5.
빌드하기
6장 ROS 2 패키지 설계(파이썬)
__6.1.
패키지 설계
__6.2.
노드 작성
__6.3.
패키지 설정 파일(package.xml)
__6.4.
파이썬 패키지 설정 파일(setup.py)
__6.5.
소스코드 내려받기 및 빌드
__6.6.
실행
7장 토픽 프로그래밍(파이썬)
__7.1.
토픽
__7.2.
토픽 퍼블리셔 코드
__7.3.
토픽 서브스크라이버 코드
__7.4.
노드 실행 코드
8장 서비스 프로그래밍(파이썬)
__8.1.
서비스
__8.2.
서비스 서버 코드
__8.3.
서비스 클라이언트 코드
__8.4.
노드 실행 코드
9장 액션 프로그래밍(파이썬)
__9.1.
액션
__9.2.
액션 서버 코드
__9.3.
액션 클라이언트 코드
__9.4.
노드 실행 코드
10장 파라미터 프로그래밍(파이썬)
__10.1.
파라미터
__10.2.
파라미터 설정
__10.3.
파라미터 사용 방법(CLI)
__10.4.
파라미터 사용 방법(서비스 클라이언트)
__10.5.
기본 파라미터 설정 방법
11장 실행 인자 프로그래밍(파이썬)
__11.1.
실행 인자
__11.2. ROS 2에서의 실행 인자 처리
__11.3.
실행 인자의 구문 해석
__12장 ROS 2 패키지 설계(C++)
__12.1.
패키지 설계
__12.2.
노드 작성
__12.3.
패키지 설정 파일(package.xml)
__12.4.
빌드 설정 파일(CMakeLists.txt)
__12.5.
소스코드 내려받기 및 빌드
__12.6.
실행
13장 토픽 프로그래밍(C++)
__13.1.
토픽
__13.2.
토픽 퍼블리셔 코드
__13.3.
토픽 서브스크라이버 코드
__13.4.
노드 실행 코드
14장 서비스 프로그래밍(C++)
__14.1.
서비스
__14.2.
서비스 서버 코드
__14.3.
서비스 클라이언트 코드
__14.4.
노드 실행 코드
15장 액션 프로그래밍(C++)
__15.1.
액션
__15.2.
액션 서버 코드
__15.3.
액션 클라이언트 코드
__15.4.
노드 실행 코드
16장 파라미터 프로그래밍(C++)
__16.1.
파라미터
__16.2.
파라미터 서버와 초기화
__16.3.
파라미터 클라이언트
17장 실행 인자 프로그래밍(C++)
__17.1.
실행 인자
__17.2.
실행 인자 코드
__17.3. ROS 2 파라미터와 실행 인자
18장 런치 프로그래밍(파이썬, C++)
__18.1. ROS 2 Launch System
__18.2.
launch 작성
__18.3.
패키지 빌드

3부 ROS 2 심화 프로그래밍
1장 Logging
__1.1.
로그(Log)
__1.2.
로그 설정
__1.3.
예제 코드
2장 ROS 2 CLI
__2.1. ROS 2 CLI
__2.2. ROS 2 CLI 실습
__2.3. ROS 2 CLI의 빠른 실행
__2.4. CLI 명령어에서 ROS arguments 사용하기
__2.5.
신규 ROS 2 CLI 작성 방법
3장 Intra-process communication
__3.1. ROS Node와 Nodelets
__3.2.
Intra-proces communication
__3.3.
데모 코드
4장 QoS
__4.1.
QoS(Quality of Service)
__4.2.
Topic, Service, Action의 QoS 설정
__4.3.
QoS 실습
__4.4.
유용한 QoS 예제
5장 Component
__5.1.
정적 링킹과 동적 링킹
__5.2.
동적 로딩과 ROS 2 Component
__5.3.
데모 코드
__5.4.
실행 방법
6장 RQt plugin
__6.1. RQt
__6.2. RQt 플러그인(RQt plugin)
__6.3. RQt 개발환경
__6.4. RQt 플러그인 작성 순서
__6.5. RQt 예제의 구성
__6.6. RQt 예제 UI 살펴보기
__6.7. RQt 예제 설정 파일 살펴보기
__6.8. RQt 예제 소스코드 살펴보기
__6.9. RQt 플러그인 예제 실행
__6.10.
다른 노드와 RQt 플러그인 연동 예제 실행
7장 Lifecycle
__7.1.
노드 관리
__7.2.
Lifecycle
__7.3.
데모 코드
8장 Security
__8.1. ROS 2의 보안(Security)
__8.2. SROS2(Secure Robot Operating System 2)
__8.3. ROS 2의 인증, 액세스 제어, 암호화 기능
__8.4.
보안 vs 성능
__8.5. ROS 2 Robotic Systems Threat Model
9장 Real-time
__9.1.
Real-time의 정의
__9.2.
Real-time에 대한 배경 지식
__9.3. ROS 2 Real-time
__9.4.
데모 코드

출판사 리뷰
이 책에서 다루는 내용

- ROS란 무엇인가?
- ROS 2의 중요 콘셉트와 특징, 토픽, 서비스, 액션, 파라미터, 빌드 시스템 소개 등
- ROS 2 기본 프로그래밍(코드 스타일부터 토픽, 서비스, 액션, 파라미터 등 기초 프로그래밍 학습)
- ROS 2 심화 프로그래밍(로깅, CLI, GUI, QoS, Component, Life cycle, Security 등 ROS 2의 고급 기능 학습)

독자 한마디

ROS에 대한 공부를 한다면 꼭 읽어야 할 책 1순위! ROS 1에 이어 ROS 2에 대해서 잘 정리하여 이해할 수 있는 이 책이 탄생하기까지 저자들의 노고에 감사드립니다.
- 김재훈 -

자료가 별로 없고 어려워서 ROS를 공부하기 정말 힘들었는데, 한 줄기 빛이 되었던 강좌였습니다 감사합니다! - 정민재 -

한국 오픈소스 로봇 소프트웨어 개발의 문익점인 표윤석 박사님의 두 번째 목화씨, ROS 2 로봇 프로그래밍! 정말 기대됩니다.
- 정환석 -
GOODS SPECIFICS
- 발행일 : 2021년 08월 05일
- 쪽수, 무게, 크기 : 636쪽 | 188*240*35mm
- ISBN13 : 9791186710722
- ISBN10 : 1186710721

You may also like

카테고리