ROS 로보틱스 프로그래밍 3/e : 자율주행 로봇 및 7-DOF 로봇 팔 개발

ROS 로보틱스 프로그래밍 3/e : 자율주행 로봇 및 7-DOF 로봇 팔 개발

$50.68
Description
ROS(Robot Operating System)는 복잡한 로봇 프로그래밍을 위한 소프트웨어 프레임워크다. ROS는 스크래치(scratch)로 코드를 작성하지 않고도 복잡한 로봇을 개발할 수 있게 해서 효율적으로 개발 시간을 줄여준다. 이 책은 실용 예제와 핵심 컨셉의 쉬운 해설로 ROS 로보틱스 프로젝트에 적용할 수 있는 고급 기술을 완벽히 다루고 있다.
개발자가 ROS 프로그래밍을 위한 필수적인 기초 개념을 잡을 수 있도록 도움을 주며, 실제 개발할 때뿐만 아니라 시뮬레이션에서도 로봇을 개발하는 방법을 알 수 있다. 또한 내비게이션과 매니퓰레이션과 같은 고급 기술을 적용하는 방법을 이해하고, ROS 컨트롤러와 플러그인을 개발하는 방법을 배운다. 드론 및 산업용 로봇 애플리케이션을 위한 ROS를 살펴보고 마지막으로 ROS의 효율적인 활용을 위한 응용 사례를 다룬다. 이 책을 읽고 나면 개발자들은 맞춤형 로봇과 다양한 ROS 애플리케이션을 개발할 수 있을 것이다.

저자

렌틴조셉,조나단카카체

저자:렌틴조셉
인도에서작가,로봇공학자이자로봇기업가로활동하고있다.케랄라(Kerala)주코치(Kochi)에서큐보틱스랩(QboticsLabs)이라는로봇소프트웨어회사를운영하며ROS,OpenCV,PCL과함께로봇공학분야에서일한지10년이넘었다.『파이썬로보틱스』(에이콘,2016),『ROS로보틱스프로그래밍』(에이콘,2017),『RobotOperatingSystem(ROS)forAbsoluteBeginners』(Apress,2022)등을썼으며,인도에서로봇및자동화석사학위를취득했고미국CMU의로보틱스연구소에서근무했으며,TEDx연사이기도하다.

저자:조나단카카체
1987년,이탈리아나폴리에서태어났다.2012년나폴리페데리코II대학교(UniversityofNaplesFedericoII)에서컴퓨터공학석사와박사학위를받았다.동대학교에서2016년에로봇공학사학위를받았다.현재나폴리페데리코II대학의PRISMA연구실(산업및서비스를위한로봇공학,메카트로닉스및자동화연구실)의조교수로있으며,인더스트리4.0에서인간-로봇상호작용분야의여러연구프로젝트와검사,유지보수,로봇조작을위한UAV의자동제어의연구프로젝트에참여하고있다.

역자:배진호
습득한지식은문제해결을위한도구로활용해야하며,지식자체보다문제해결을위한논리적인사고를중요시한다.서울과학기술대학교에서로봇공학과미국로즈헐만공과대학교에서레이저공학을전공했다.여러로봇개발프로젝트경험을바탕으로인공지능과자율주행분야의후학을양성하며교육사업을준비중이다.번역서로는에이콘출판사에서출간한『라즈베리파이와슈퍼컴퓨팅』(2018),『ROS로보틱스프로그래밍』(2017)이있다.

목차

1부.ROS프로그래밍핵심

1장.ROS소개
__기술적요구사항
__ROS를사용해야하는이유
__ROS파일시스템레벨이해
____ROS패키지
____ROS메타패키지
____ROS메시지
____ROS서비스
__ROS연산그래프레벨이해
____ROS노드
____ROS메시지
____ROS토픽
____ROS서비스
____ROS백파일
____ROS마스터
____ROS파라미터사용
__ROS커뮤니티레벨
__ROS시작을위한준비
____ROS배포판
____ROS마스터및ROS파라미터서버실행
__요약
__질문

2장.ROS기초프로그래밍
__기술적요구사항
__ROS패키지생성
____ROS토픽활용
____ROS노드생성
____노드빌드
__사용자정의.msg와.srv파일추가
__ROS서비스활용
____ROSactionlib활용
____ROS액션서버와클라이언트의빌드
__런치파일작성
__토픽,서비스,actionlib의응용
__요약
__질문

2부.ROS로봇시뮬레이션

3장.ROS3D모델링
__기술적요구사항
__로봇모델링을위한ROS패키지
__URDF를사용한로봇모델링이해
__로봇디스크립션을위한ROS패키지의생성
__최초의URDF모델생성
__URDF파일분석
__RViz에서로봇3D모델의시각화
____팬조인트와틸트조인트의상호작용
____물리적인특징과충돌특성을URDF모델에추가
__xacro를활용한로봇모델링의이해
__속성의사용
____수학연산자활용
____매크로활용
__xacro에서URDF로의변환
__7-DOF로봇매니퓰레이터로봇디스크립션생성
____로봇팔사양
__7-DOF로봇팔의xacro모델상세설명
____상수사용
____매크로의사용
____다른xacro파일포함
____링크에서메시사용
____로봇집게를사용한작업
____RViz에서7-DOF로봇팔시각화
__차동구동모바일로봇모델생성
__요약
__질문

4장.ROS와가제보를활용한로봇시뮬레이션
__기술적요구사항
__가제보및ROS를활용한로봇팔시뮬레이션
__가제보에서로봇팔시뮬레이션모델생성
____가제보로봇모델에색과질감추가
____모델을구동하기위한transmission태그추가
__gazebo_ros_control플러그인추가
____가제보에3D비전센서추가
__XtionPro와로봇팔시뮬레이션
____3D센서데이터시각화
__가제보에서ROS컨트롤러를활용한로봇조인트동작
____ros_control패키지이해
____다양한타입의ROS컨트롤러와하드웨어인터페이스
____ROS컨트롤러가가제보와상호작용하는방법
____조인트상태컨트롤러와조인트위치컨트롤러의로봇팔에대한인터페이싱
____가제보로ROS컨트롤러실행
____로봇조인트의구동
__가제보에서차동구동로봇시뮬레이션
____가제보에레이저스캐너추가
____가제보에서모바일로봇이동
____런치파일에joint_state_publisher추가
__ROSteleop노드추가
__요약
__질문

5장.ROS,코펠리아심,위봇을활용한로봇시뮬레이션
__기술적요구사항
__ROS로코펠리아심설정
____RosInterface플러그인이해
____ROS메시지작업
__코펠리아심과ROS를활용한로봇팔시뮬레이션
____코펠리아심조인트컨트롤러에ROS인터페이스추가
__ROS로위봇설정
____위봇시뮬레이터소개
____위봇으로모바일로봇시뮬레이션
__첫번째컨트롤러작성
____위봇및ROS를사용한로봇팔시뮬레이션
__webots_ros를사용해teleop노드작성
____런치파일로위봇실행
__요약
__질문

6장.ROSMoveIt!과내비게이션스택활용
__기술적요구사항
__MoveIt!아키텍처
____move_group노드
____MoveIt!을활용한모션플래닝
____모션플래닝요청어댑터
____MoveIt!플래닝씬
____MoveIt!기구학처리
____MoveIt!충돌검사
__셋업어시스턴트도구를활용한MoveIt!구성패키지생성
____1단계:셋업어시스턴트도구시작
____2단계:자기충돌행렬생성
____3단계:가상조인트추가
____4단계:플래닝그룹추가
____5단계:로봇포즈추가
____6단계:로봇엔드이펙터설정
____7단계:패시브조인트추가
____8단계:저자정보
____9단계:구성파일작성
__RViz에서MoveIt!구성패키지를활용한모션플래닝
____RVizMotionPlanning플러그인활용
____MoveIt!구성패키지와가제보의인터페이스
__ROS내비게이션스택이해
____ROS내비게이션하드웨어요구사항
____내비게이션패키지작업
____내비게이션스택의작동
__SLAM을활용한지도생성
____gmapping을위한런치파일작성
____차동구동로봇에서SLAM실행
____amcl및정적지도를사용해자율주행구현
____amcl런치파일작성
__요약
__질문

7장.ROSMoveIt!의고급기능
__기술적요구사항
__move_groupC++인터페이스를사용한모션플래닝
____MoveIt!C++API를활용한임의의모션플래닝
____MoveIt!C++API를활용한사용자정의모션플래닝
____MoveIt!을사용해로봇팔과의충돌확인
__MoveIt!과가제보를활용한퍼셉션작업
__MoveIt!으로물체매니퓰레이션수행
____MoveIt!을활용한선택/배치작업
____가제보와실제로봇에서선택/배치작업
__로봇하드웨어인터페이스를위한다이나믹셀ROS서보컨트롤러의이해
____다이나믹셀서보
____DYNAMIXEL-ROS인터페이스
__7-DOF다이나믹셀기반로봇팔과ROSMoveIt!
____COOL로봇암컨트롤러패키지생성
____MoveIt!COOL로봇팔의구성
__요약
__질문

8장.ROS드론
__기술적요구사항
__드론의활용
____UAV하드웨어
____Pixhawk자동조종장치
__PX4비행제어스택활용
____PX4펌웨어아키텍처
____PX4SITL
__PC/자동조종장치통신
____mavrosROS패키지
__ROS-PX4애플리케이션작성
____궤적스트리머작성
____PX4에대한외부위치추정
__RotorS시뮬레이션프레임워크사용
____RotorS설치
____RotorS패키지
____새로운UAV모델생성
____RotorS모터모델과상호작용
__요약
__질문

3부.ROS로봇하드웨어프로토타이핑

9장.ROS와I/O보드,센서,액추에이터인터페이스
__기술적요구사항
__아두이노-ROS인터페이스이해
__아두이노-ROS인터페이스는무엇인가?
____ROS의rosserial패키지이해
____아두이노의ROS노드API이해
____ROS-아두이노퍼블리셔및서브스크라이버예제
____아두이노-ROS예제:푸시버튼으로LED깜박임
____아두이노-ROS예제:가속도계ADXL335
____아두이노-ROS예제:초음파거리센서
____아두이노-ROS예제:주행거리데이터퍼블리셔
__아두이노이외의보드와ROS의인터페이스
____ROS설치를위한오드로이드-C4,라즈베리파이4,젯슨나노설정
____라즈베리파이4에서ROS를사용해LED깜박임
____라즈베리파이4에서ROS를사용하는푸시버튼과깜박이는LED
____라즈베리파이4에서예제실행
__다이나믹셀액츄에이터와ROS인터페이스
__요약
__질문

10장.ROS와OpenCV,PCL을활용한비전센서프로그래밍
__기술적요구사항
__ROS-OpenCV인터페이스패키지이해
__ROS:PCL인터페이스패키지이해
____ROS퍼셉션설치
__ROS에서USB웹캠인터페이스
__ROS카메라보정
____cv_bridge를사용해ROS와OpenCV간에이미지변환
__ROS와Kinect및아수스XtionPro인터페이스
__인텔RealSense카메라와ROS인터페이스
____포인트클라우드를레이저스캔데이터로변환
__ROS와Hokuyo레이저인터페이스
____RPLIDAR및YDLIDAR와ROS인터페이스
__포인트클라우드데이터작업
____포인트클라우드를퍼블리시하는방법
____포인트클라우드서브스크라이브와처리방법
____PCD파일에서포인트클라우드읽기와퍼블리싱
__요약
__질문

11장.ROS에서차동구동로봇하드웨어구축과인터페이스
__기술적요구사항
____소프트웨어요구사항
____네트워크설정
____하드웨어요구사항
__Remo로봇소개:DIY자율주행로봇
____Remo하드웨어구성요소
____ROSNavigation스택에대한소프트웨어요구사항
__차동구동로봇을위한로우레벨컨트롤러및하이레벨ROS컨트롤하드웨어인터페이스개발
____Remo용로우레벨기본컨트롤러구현
____차동구동로봇을위한ROS컨트롤하이레벨하드웨어인터페이스
____Remo로봇에대한ROS노드및토픽개요
__내비게이션스택구성과작업
____gmapping노드구성과지도작성
____gmapping노드작업
____move_base노드구성
____AMCL노드구성
____AMCL플래닝
____시뮬레이션에서Remo로봇작업
__요약
__질문

4부.ROS고급프로그래밍

12장.pluginlib,nodelet,Gazebo플러그인활용
__기술적요구사항
__pluginlib이해
____pluginlib을사용해계산기플러그인구현
__ROSnodelet이해
____샘

출판사 서평

이책에서다루는내용

◆7-DOF로봇팔과차동구동로봇모델생성
◆가제보(Gazebo),코펠리아심(CoppeliaSim),위봇(Webots)로봇시뮬레이션활용
◆SLAM과AMCL패키지를활용한차동구동로봇의자율주행구현
◆ROS를활용한드론시뮬레이션과상호작용
◆ROSpluginlib,nodelets,Gazebo플러그인개발
◆아두이노같은I/O보드,로봇센서,고급액추에이터와인터페이스

이책의대상독자

이책은ROS의기능을최대한활용하고자하는열정적인로봇개발자나연구원을대상으로한다.이미일반적인로봇공학애플리케이션에익숙하거나ROS세계에서고급방식으로개발하는방법을배우고로봇을모델링,구축,제어하는방법을배우려는사용자에게적합하다.내용을쉽게이해하고싶다면GNU/리눅스,C++프로그래밍에대한기본지식이필요하다.

이책의구성

1장,'ROS소개'에서는ROS의핵심기본개념을이해한다.
2장,'ROS기초프로그래밍'에서는ROS패키지개발방법을설명한다.
3장,'ROS3D모델링'에서는두종류의로봇설계를설명한다.하나는7자유도(7-DOF,DegreeOfFreedom)매니퓰레이터(manipulator)고다른하나는차동구동로봇(differentialdriverobot)이다.
4장,'ROS와가제보를활용한로봇시뮬레이션'에서는가제보에서로봇조인트(joint)를제어하는데도움이되는7자유도매니퓰레이터,차동구동로봇,ROS컨트롤러의시뮬레이션을설명한다.
5장,'ROS,코펠리아심,위봇을활용한로봇시뮬레이션'에서는코펠리아심(CoppeliaSim)및위봇(Webots)시뮬레이터를소개하고,다양한타입의로봇을시뮬레이션하고제어하는방법을소개한다.
6장,'ROSMoveIt!과내비게이션스택활용'에서는ROSMoveIt!과내비게이션스택을사용해매니퓰레이팅및자율주행과같이즉시활용할수있는기능을다룬다.
7장,'ROSMoveIt!의고급기능'에서는충돌회피,3D센서를이용한주변환경인지기능과물체잡기및선별해특정위치에두기와같은ROSMoveIt!기능을설명한다.그런다음MoveIt!과로봇매니퓰레이터하드웨어를인터페이스하는방법을살펴본다.
8장,'ROS드론'에서는쿼드콥터의사례를고려해ROS로드론을시뮬레이션하고제어하는방법을설명한다.
9장,'ROS와I/O보드,센서,액추에이터인터페이스'에서는센서및액츄에이터와같은하드웨어구성요소를ROS와인터페이스하는방법을설명한다.아두이노(Arduino)또는라즈베리파이(RaspberryPi)와같은I/O보드를사용하는센서와ROS의인터페이스를살펴본다.
10장,'ROS와OpenCV,PCL을활용한비전센서프로그래밍'에서는다양한비전센서를ROS와인터페이스하고OpenCV(OpenSourceComputerVision)및PCL(PointCloudLibrary)과같은라이브러리를사용해프로그래밍하는방법을설명한다.
11장,'ROS에서차동구동로봇하드웨어구축과인터페이스'에서는차동구동으로설정된자율주행모바일로봇하드웨어와ROS사이의인터페이스방법을알려준다.
12장,'pluginlib,nodelet,Gazebo플러그인활용'에서는pluginlib,nodelet,Gazebo플러그인과같은ROS의고급개념을보여준다.각개념의기능과적용을살펴보고동작을확인하기위한예제를실행한다.
13장,'ROS컨트롤러와시각화플러그인'에서는기본ROS컨트롤러를개발하고실행하는방법을보여주고,RViz용플러그인을만드는방법도살펴본다.
14장,'매트랩과시뮬링크에서ROS활용'에서는매트랩(MATLAB)및시뮬링크(Simulink)를ROS와연결하는방법을설명한다.
15장,'산업용로봇을위한ROS'에서는ROS-Industrial패키지를이해하고설치하는데도움이되는내용소개한다.산업용로봇의MoveIt!IKFast플러그인을개발하는방법을알아본다.
16장,'ROS에서문제해결및모범사례'에서는비주얼스튜디오코드(VisualStudioCode)IDE에서ROS개발환경을설정하는방법,ROS최적실행,ROS실행중발생하는문제에대한해결방법을설명한다.

지은이의말

ROS는전세계적으로로봇애플리케이션을개발하는데사용되는로봇미들웨어로,현재로봇회사,연구센터,대학에서고급로봇프로그래밍을위해채택하고있다.이책은ROS프레임워크의고급개념을알려주고있어,ROS의기본개념에이미익숙한사용자에게적합하다.그러나초심자도이책의예제를수행할수있도록ROS개념에대해서도간략히소개한다.
이책은새로운로봇의생성,모델링,설계는물론,ROS프레임워크와시뮬레이션및인터페이스과정을보여준다.또한고급시뮬레이션소프트웨어를사용해로봇탐색,조작,센서정교화를허용하는ROS도구를사용하며ROS로우레벨컨트롤러,nodelet,플러그인과같은중요한개념을처리하는방법을알아본다.
특별한하드웨어요구사항없이표준컴퓨터만사용해책의거의모든예제를실행할수있다.그러나일부장에서는외부센서,액추에이터,I/O보드와함께ROS를사용하는방법을살펴보기위해추가하드웨어구성요소가필요하다.

옮긴이의말

ROS는오픈소스프로젝트로로봇및자율주행차량개발에걸리는시간을획기적으로줄여주는프레임워크다.개발에필요한다양한문서가잘정리돼공유되고있다.이책은ROS를활용한저자의개발경험을바탕으로수많은ROS문서중개발에꼭필요한내용으로구성됐다는데에효용성이있다.
로봇기술의가장대중적인오픈소스프레임워크인ROS의기본개념부터고급개념들을기술하고오픈소스하드웨어인아두이노와라즈베리파이에적용할수있는인터페이스를함께기술한다.로보틱스의대표연구주제인자율주행로봇과7-DOF로봇팔을개발하는데필요한내용대부분을다룬다.이를통해독자는다양한로봇제어알고리듬을자신의로봇에구현할수있는능력을배양할수있다.
“바퀴의모양을새로발명할필요는없다.”이미다양한형태로구현돼있는알고리듬들이ROS생태계에무수히존재하는데,이를이용하지않고새롭게개발할필요가있을까?물론필요에따라새로운형태를개발해야할수도있다.하지만‘모방은창조의어머니’라는말이있듯이새로운형태를개발할때도기존형태를참고해분석하는선행연구가필요한게사실이다.
ROS는비단로봇개발에만활용되는것이아니라자율주행차량및IoT등로봇기술을활용하려는다양한애플리케이션에적용할수있다.이책이연구자또는개발자,심지어로봇에관심있는일반인에게도로봇개발에대한진입장벽을낮춰국내로봇연구개발환경의활성화에조금이라도이바지했으면하는바람이다.