ROS 2로 시작하는 로봇 프로그래밍

ROS 2로 시작하는 로봇 프로그래밍

$32.92
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 기반의 멋진 로봇들이 나오기를 기대해본다.
저자

표윤석,임태훈

저자표윤석은로보티즈연구원으로서비스로봇을위한로봇시스템을연구개발중이다.로봇은우리에게무엇인가에대해항상고민하며우리생활에더가까이갈수있도록노력하고있다.
광운대학교전자공학과학부졸업후한국과학기술연구원에서근무했었고일본큐슈대학에서정보지능공학을전공으로석사와박사학위를받았다.
2011년ROS1Diamondback버전부터ROS를사용하기시작하여지금의ROS2까지10여년간의ROS개발경험을가지고있으며ROS공식로봇플랫폼인TurtleBot3를개발하여ROS보급에앞장섰다.2018년부터2019년도에걸쳐서ROS2TSC(TechnicalSteeringCommittee)멤버로활동했고,한국로봇산업진흥원산업인력양성강사로4년간활동하며재직자대상으로ROS교육을진행했다.2011년부터꾸준히ROS강좌를온라인에서연재하고있으며,한국어,일본어,중국어,영어로ROS관련서적을다수저술했다.
로봇에대한꿈을가진이들과함께이야기나누는것을즐기며오픈로보틱스를지향하는'오픈소스로봇기술공유커뮤니티(오로카)'에서공개강좌와공개프로젝트를진행하고있다.항상일을벌이는것을즐기기에커뮤니티에서로봇및ROS관련강연,세미나,튜토리얼,전시회등을기획하는데이책의독자들을꼭어디선가볼수있기를기대해본다.

목차

1부ROS2소개
1장ROS2소개
__1.1.로봇개발을위한툴
__1.2.메타운영체제
__1.3.ROS의목적
__1.4.ROS의구성
__1.5.ROS의역사
__1.6.ROS버전
__1.7.버전주기
__1.8.버전선택
2장ROS2기반로봇개발에필요한정보
__2.1.커뮤니티중심의개발문화
__2.2.즐겨찾는ROS2정보및개발자료
__2.3.ROS커뮤니티게시판
__2.4.ROS문서
__2.5.ROS2소스코드
__2.6.ROS2패키지배포현황
__2.7.ROS질의응답
__2.8.기타
3장ROS2개발환경구축
__3.1.개발환경
__3.2.기본운영체제설치
__3.3.로봇운영체제설치
__3.4.ROS개발툴설치
__3.5.ROS2빌드테스트
__3.6.Runcommands설정
__3.7.통합개발환경(IDE)설치
__3.8.ROS2삭제
4장왜?ROS2로가야하는가?
__4.1.왜?ROS2로가야하는가?
__4.2.대세는이제ROS2!
5장ROS2의중요콘셉트
__5.1.WhyROS2?
6장ROS1과2의차이점으로알아보는ROS2의특징
__6.1.ROS2개발의필요성
__6.2.ROS1과ROS2의차이점
__6.3.ROS2의특징
7장ROS2와DDS
__7.1.ROS2와DDS
__7.2.DDS란?
__7.3.DDS의특징
__7.4.ROS에서의사용법
8장DDS의QoS
__8.1.DDS의서비스품질(QoS,QualityofService)
__8.2.QoS의종류
__8.3.ROS2에서사용되는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장ROS2노드와데이터통신
__10.1.노드와메시지통신
__10.2.노드실행(ros2run)
__10.3.노드목록(ros2nodelist)
__10.4.노드정보(ros2nodeinfo)
11장ROS2토픽
__11.1.토픽
__11.2.토픽목록확인(ros2topiclist)
__11.3.토픽정보확인(ros2topicinfo)
__11.4.토픽내용확인(ros2topicecho)
__11.5.토픽대역폭확인(ros2topicbw)
__11.6.토픽주기확인(ros2topichz)
__11.7.토픽지연시간확인(ros2topicdelay)
__11.8.토픽퍼블리시(ros2topicpub)
__11.9.bag기록(ros2bagrecord)
__11.10.bag정보(ros2baginfo)
__11.11.bag재생(ros2bagplay)
12장ROS2서비스
__12.1.서비스
__12.2.서비스목록확인(ros2servicelist)
__12.3.서비스형태확인(ros2servicetype)
__12.4.서비스찾기(ros2servicefind)
__12.5.서비스요청(ros2servicecall)
13장ROS2액션
__13.1.액션
__13.2.액션서버및클라이언트
__13.3.노드정보(ros2nodeinfo)
__13.4.액션목록(ros2actionlist-t)
__13.5.액션정보(ros2actioninfo)
__13.6.액션목표(actiongoal)전달
14장ROS2인터페이스
__14.1.ROS2인터페이스
__14.2.메시지인터페이스(Messageinterface,msg)
__14.3.서비스인터페이스(Serviceinterface,srv)
__14.4.액션인터페이스(Actioninterface,action)
15장ROS2토픽/서비스/액션정리및비교
__15.1.토픽,서비스,액션비교
16장ROS2파라미터
__16.1.파라미터
__16.2.파라미터목록확인(ros2paramlist)
__16.3.파라미터내용확인(ros2paramdescribe)
__16.4.파라미터읽기(ros2paramget)
__16.5.파라미터쓰기(ros2paramset)
__16.6.파라미터저장(ros2paramdump)
__16.7.파라미터삭제(ros2paramdelete)
17장ROS2도구와CLI명령어
__17.1.ROS도구
__17.2.ROS2CLI명령어
__17.3.ROS2CLI사용법
__17.4.ROS2CLI종류와각sub-verbs의기능
__17.5.지속개발되고있는ROS2CLI
18장ROS2GUI개발을위한RQt
__18.1.ROS의종합GUI툴RQt
__18.2.RQt프레임워크
__18.3.RQt설치및실행
__18.4.RQt플러그인의종류
__18.5.RQt사용예시
__18.6.ROS의CLI툴과GUI툴
19장ROS2의표준단위
__19.1.ROS2의표준단위의필요성
__19.2.ROS2의표준단위
__19.3.ROS2의표준단위사용
20장ROS2의좌표표현
__20.1.ROS2의좌표표현통일의필요성
__20.2.좌표표현의기본규칙
__20.3.좌표표현의축방향(AxisOrientation)규칙
__20.4.좌표표현의회전표현규칙
21장ROS2의시간
__21.1.시계(Clock)와시간(Time)
__21.2.시간추상화(TimeAbstractions)
__21.3.TimeAPI
22장ROS2의파일시스템
__22.1.파일시스템
__22.2.패키지와메타패키지
__22.3.바이너리설치와소스코드설치
__22.4.기본설치폴더와사용자작업폴더
23장ROS2의빌드시스템과빌드툴
__23.1.빌드시스템과빌드툴
__23.2.빌드시스템(Buildsystem)
__23.3.빌드툴(Buildtools)
__23.4.패키지생성
__23.5.패키지빌드
__23.6.빌드시스템에필요한부가기능
24장ROS2의패키지파일
__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부ROS2기본프로그래밍
1장ROS프로그래밍규칙(코드스타일)
__1.1.코드스타일가이드
__1.2.기본이름규칙
__1.3.C++Style
__1.4.PythonStyle
__1.5.다른언어
2장ROS프로그래밍기초(파이썬)
__2.1.ROS의HelloWorld,rclpy버전
__2.2.패키지생성
__2.3.패키지설정
__2.4.퍼블리셔노드작성
__2.5.서브스크라이버노드작성
__2.6.빌드
__2.7.실행
3장ROS프로그래밍기초(C++)
__3.1.ROS의HelloWorld,rclcpp버전
__3.2.패키지생성
__3.3.패키지설정
__3.4.퍼블리셔노드작성
__3.5.서브스크라이버노드작성
__3.6.빌드
__3.7.실행
4장ROS2Tips
__4.1.설정스크립트(setupscript)
__4.2.setup.bashvslocal_setup.bash
__4.3.colcon_cd
__4.4.ROS_DOMAIN_IDvsNamespace
__4.5.colcon과vcstool명령어자동완성기능추가
5장토픽,서비스,액션인터페이스
__5.1.ROS2인터페이스(Interface)신규작성
__5.2.인터페이스패키지만들기
__5.3.패키지설정파일(package.xml)
__5.4.빌드설정파일(CMakeLists.txt)
__5.5.빌드하기
6장ROS2패키지설계(파이썬)
__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.ROS2에서의실행인자처리
__11.3.실행인자의구문해석
__12장ROS2패키지설계(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.토픽서브스크

출판사 서평

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

독자한마디
ROS에대한공부를한다면꼭읽어야할책1순위!ROS1에이어ROS2에대해서잘정리하여이해할수있는이책이탄생하기까지저자들의노고에감사드립니다.-김재훈-
자료가별로없고어려워서ROS를공부하기정말힘들었는데,한줄기빛이되었던강좌였습니다감사합니다!-정민재-
한국오픈소스로봇소프트웨어개발의문익점인표윤석박사님의두번째목화씨,ROS2로봇프로그래밍!정말기대됩니다.-정환석-