ROS 2로 시작하는 로봇 프로그래밍
도서명:ROS 2로 시작하는 로봇 프로그래밍
저자/출판사:표윤석,임태훈/루비페이퍼
쪽수:636쪽
출판일:2021-08-05
ISBN:9791186710722
목차
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. 데모 코드