이책에서다루는내용
◆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등로봇기술을활용하려는다양한애플리케이션에적용할수있다.이책이연구자또는개발자,심지어로봇에관심있는일반인에게도로봇개발에대한진입장벽을낮춰국내로봇연구개발환경의활성화에조금이라도이바지했으면하는바람이다.