Top

ROS 로보틱스 프로그래밍 [4차 산업혁명 시대의 핵심 기술, 로봇 프로그래밍]

  • 원서명Mastering ROS for Robotics Programming (ISBN 9781783551798)
  • 지은이렌틴 조셉(Lentin Joseph)
  • 옮긴이배진호
  • ISBN : 9788960779587
  • 40,000원
  • 2017년 02월 07일 펴냄
  • 페이퍼백 | 540쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 임베디드 시스템

판매처

개정판

책 소개

소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/ros-robotics)

요약

4차 산업혁명 시대의 로봇 기술 구현에 필요한 고급 ROS 가이드 북이다. 이 책을 통해 ROS를 활용한 로봇 시뮬레이션, 머신 비전을 배울 수 있을 뿐만 아니라, 로보틱스의 대표적인 주제인 7-DOF(Degree of Freedom) 로봇 팔과 SLAM(Simultaneous Localization and Mapping)과 AMCL(Adaptive Monte Carlo Localization)을 활용한 이동 로봇의 자율 내비게이션을 디자인할 수 있다. 즉 기초적인 가이드북보다 더욱 실용적인 주제를 접할 수 있다. 따라서 ROS를 활용해 실용적으로 고급 로봇 알고리즘을 구현하고자 하는 독자들에게는 최적의 도서가 될 것이다.

이 책에서 다루는 내용

■ 7-DOF 로봇 팔과 차륜 구동 로봇의 로봇 모델 생성
■ 무브잇! 패키지를 활용한 7-DOF 로봇 팔의 모션 계획
■ SLAM과 AMCL을 활용한 차륜 구동 로봇의 자율 내비게이션
■ 플러그인 립, ROS 노드렛, 가제보 플러그인의 심화 학습
■ 아두이노와 같은 I/O 보드, 센서, 액추에이터와 ROS의 인터페이스
■ ABB의 활용과 유니버셜 로봇 팔 시뮬레이션
■ 최신 ROS 버전을 활용한 ROS 프레임워크 탐색

이 책의 대상 독자

열정적인 로보틱스 지지자거나 ROS를 사용해 로봇 애플리케이션 생성에 관해 더 배우고 싶어하는 연구자라면, 이 책은 바로 당신을 위한 책이다. ROS와 GNU/Linux, C++ 프로그래밍의 기본 지식을 갖추고, ROS의 고급 특징을 탐색하고자 하는 프로그래머들에게 좋을 것이다.

이 책의 구성

1장, ‘ROS와 패키지 관리 소개’에서는 ROS의 핵심 개념을 이해하기 위한 설명과 ROS 패키지(package)를 이용한 작업 방법을 설명한다.
2장, ‘ROS 3D 로봇 모델링 작업 작업’에서는 두 종류의 로봇 설계를 다룬다. 하나는 7 자유도(seven-DOF, Degree of Freedom) 매니퓰레이터(manipulator)고, 다른 하나는 차륜형 로봇(differential drive robot)이다.
3장, ‘ROS와 가제보를 활용한 로봇 시뮬레이션’에서는 7 자유도 로봇 팔과 차륜형 로봇, 가제보(Gazebo)에서 로봇 조인트를 조작하는 데 도움을 주는 ROS 컨트롤러(controllers)를 설명한다.
4장, ‘ROS 무브잇!과 내비게이션 스택 활용’에서는 ROS 무브잇!(MoveIt!)과 내비게이션 스택(Navigation Stack)을 사용해 별도로 설치하지 않아도 바로 사용할 수 있는 기능인 로봇 매니퓰레이션을 로봇 자율 내비게이션(autonomous navigation)과 인터페이스하는 방법을 알아본다.
5장, ‘플러그인립, 노드렛, 가제보 플러그인 활용’에서는 ROS의 고급 개념을 보여주는데, ROS 플러그인립(pluginlib)과 노드렛(nodelets), 가제보 플러그인(Gazebo plugins)이다. 이 장에서는 각 개념들의 기능과 응용을 살펴보고, 작동을 시연하기 위한 예제를 실행해본다.
6장, ‘ROS 컨트롤러와 시각화 플러그인 생성’에서는 PR2 로봇과 그와 유사한 로봇을 위한 기본 ROS 컨트롤러를 사용하는 방법을 보여준다. 컨트롤러를 생성한 뒤 가제보의 PR2 시뮬레이션을 이용해 컨트롤러를 구동해본다.
7장, ‘ROS와 I/O 보드, 센서, 액추에이터 인터페이싱’에서는 센서와 액추에이터와 같은 하드웨어 요소들과 ROS 간의 인터페이스를 다룬다. 아두이노나 라즈베리 파이(Raspberry Pi), 오드로이드C1(Odroid-C1) 같은 I/O 보드를 사용하는 센서와 ROS 간의 인터페이스를 살펴본다.
8장, ‘ROS와 OpenCV, PCL을 활용한 비전 센서 프로그래밍’에서는 다양한 비전 센서와 ROS 간의 인터페이스 방법, 오픈소스 컴퓨터 비전(Open-CV)과 포인트 클라우드 라이브러리(PCL, Point Cloud Library)와 같은 라이브러리를 사용해 인터페이스 프로그래밍을 하는 방법을 다룬다.
9장, ‘ROS 환경에서 차륜 구동 이동 로봇 하드웨어의 구축과 인터페이싱’에서는 차륜 구동으로 설정된 자율 이동 로봇 하드웨어를 구축하고, 그 하드웨어와 ROS 간 통신을 구현하는 데 도움을 주는 방법을 알아본다.
10장, ‘ROS-무브잇!의 고급 기능’에서는 충돌 회피, 3D 센서를 이용한 주변 인지와 환경 파악, 물체 선별, 특정 위치에 두기와 같은 무브잇!의 기능을 설명한다. 그리고 로봇 매니퓰레이터 하드웨어와 무브잇! 간의 인터페이싱을 살펴본다.
11장, ‘산업용 로봇을 위한 ROS’에서는 ROS 인더스트리얼 패키지(ROS-Industrial Package)를 이해하고 설치해본다. 산업용 로봇의 무브잇! IKFast 플러그인을 개발하는 방법을 알아본다.
12장, ‘ROS 환경에서 트러블슈팅과 최적 실행 방법’에서는 이클립스 통합 개발 환경(Eclipse IDE)에서 ROS 개발환경을 설정하는 방법과 ROS에서 최적 실행, ROS에서 발생하는 문제 해결 팁을 알려준다.

본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.

본문 52페이지의 그림 7

저자/역자 소개

지은이의 말

이 책은 ROS의 고급 가이드북으로 이미 ROS 기본 지식이 있는 독자들에게 매우 적합하다. ROS는 로보틱스 기업과 대학, 연구기관에서 로봇 모델을 디자인하고, 빌드(build)하며, 시뮬레이션하고 그 모델을 실제 하드웨어로 인터페이스하는 데 폭넓게 이용된다. 또한 ROS는 이제 로봇 엔지니어에게 필수 사항이다. 이 책은 독자가 ROS의 지식을 획득하도록 도움을 주며, 대화형 예제를 이용해 독자의 ROS 스킬을 단련하도록 도움을 줄 수 있다. 고급 가이드지만 먼저 기본 개념을 다질 수 있도록 1장에서 ROS의 개념을 설명한다. ROS 입문자도 기본을 익힌 뒤 이 책을 시작할 수 있을 것이다. 주로 ROS의 고급 개념에 초점을 두는데, 그 개념들은 ROS 내비게이션 스택(Navigation stack), ROS 무브잇!(MoveIt!), ROS 플러그인(plugins), 노드렛(nodelets), 컨트롤러(controllers), ROS 인더스트리얼(Industrial)과 같은 것들이다.
하드웨어에 상관없이 예제를 실행해볼 수 있다. 하지만 일부 절에서 I/O 보드, 비전 센서, 액추에이터(Actuator)와 ROS 간의 인터페이싱을 볼 수 있다. 이 하드웨어를 실행하려면 주변기기를 구매해야 한다.
이 책은 ROS에 대한 소개로 시작해, ROS에서 시뮬레이션과 시각화를 위해 로봇 모델을 빌드하는 방법을 살펴본다. 가제보(Gazebo)를 활용한 로봇 시뮬레이션 이후에, 로봇과 ROS의 내비게이션 스택, 무브잇!에 연결하는 방법을 볼 수 있을 것이다. 이 외에도 ROS 플러그인, 컨트롤러, 노드렛, I/O 보드, 비전 센서와의 인터페이싱을 볼 수 있다. 마지막으로 ROS 인더스트리얼과 문제점 해결 방법, ROS 추천 실행 방법을 확인할 수 있다.

지은이 소개

렌틴 조셉(Lentin Joseph)

저자이자 사업가며, 전자공학자, 로보틱스(Robotics) 열광자, 머신 비전(Machine Vision) 전문가, 임베디드 프로그래머, 인도에 있는 큐보틱스 랩(Qbotics Labs)(http://www.qboticslabs.com)의 창업자 겸 경영자다. 케랄라(Kerala) 주에 있는 연방과학기술대학(FISAT, the Federal Institute of Science and Technology)에서 전자공학과 통신 공학으로 학사학위를 받았다. 졸업하는 해의 마지막 공학 프로젝트에서 사람들과 상호작용할 수 있는 사회 로봇을 만들었다. 그 프로젝트는 큰 성공을 거두었고 많은 영상 보도매체에 언급되었다. 이 로봇의 주요 특징은 사람들과 의사소통할 수 있고, 지능적으로 반응하며, 얼굴의 움직임이나 색 검출(detection)과 같은 영상처리(Image processing) 능력을 가지고 있다는 것이다. 전체 프로젝트는 파이썬 프로그래밍 언어를 사용해 수행했다. 로보틱스와 영상 처리, 파이썬에 대한 관심은 그 프로젝트에서 시작됐다.
졸업 후, 3년 동안 로보틱스와 영상처리 분야에 주력하는 스타트업에서 일했다. 그 기간 동안 로봇운영체제(ROS, Robot Operating System), V-REP, Actin(로봇 시뮬레이션 툴) 같은 로보틱스 소프트웨어 플랫폼과 OpenCV, OpenNI, PCL 같은 영상처리 라이브러리를 배웠다. 또한 3차원 로봇 설계와 아두이노(Arduino), Tiva 런치패드 기반의 임베디드 프로그래밍에 대한 지식이 있다.
직장 생활을 시작한 지 3년 후 큐보틱스 랩이라는 회사를 창업했는데, 주로 로보틱스, 머신 비전과 같은 영역에 속한 위대한 제품을 만드는 연구에 집중하고 있다. 개인 웹 페이지(http://www.lentinjoseph.com)와 테크노랩즈(Technolabsz)라는 기술 블로그(http://www.technolabsz.com)를 운영하며, 작업물을 기술 블로그에 개제하고 있다. 또한 인도에서 열리는 PyCon2013에서 ‘Learning Robotics using Python’이라는 주제로 발표도 했다. 렌틴은 『파이썬 로보틱스』(에이콘, 2015)의 저자다. 이 책은 ROS와 OpenCV를 이용해 자율 주행 로봇을 만드는 것에 관한 책이다. 그 책은 ICRA 2015에서 소개됐고 ROS 블로그와 로보허브(Robohub), OpenCV, 파이썬 웹사이트, 관련된 다양한 포럼에서 다뤄졌다.
ICRA 2015 챌린지, HRATC(http://www2.isr.uc.pt/~embedded/events/HRATC2015/Welcome.html)의 결승 진출자이기도 하다.

옮긴이의 말

2016 다보스 포럼의 주제를 한 단어로 요약하자면 ‘4차 산업혁명’이다. 이 책은 그 4차 산업혁명의 핵심 기술 중의 하나인 로봇 기술을 설명한다. 로봇을 전공하는 사람들과 로봇 기술을 습득하려는 사람들에게 이제 필수적이 될 ROS(Robot Operating System)에 관한 개념들을 실제 소스 코드의 해설과 함께 기술함으로써 독자들의 학습 시간을 효과적으로 줄여줄 것이라 생각된다.
전통적인 로봇 기술자들에게는 많은 기반 지식이 필요했다. 기계 공학과 컴퓨터 공학의 하드웨어 기술에서 IT기술이 접목된 소프트웨어 기술까지 관련 개념을 두루 이해해야 했을 뿐만 아니라, 실제 구현까지 할 수 있어야 했다. 하지만 바야흐로 오픈소스 하드웨어와 소프트웨어가 확산된 시대가 도래하였다. 사람들이 필요한 지식을 빠르고 저비용으로 접할 수 있는 기회가 확산됐고, 이제는 로봇 기술에 대한 진입장벽이 그 이전에 비해 확실히 낮아진 것이 사실이다.
이 책은 로봇 기술의 가장 대중적인 오픈소스 소프트웨어 플랫폼인 ROS의 기본 개념과 고급 개념들을 기술하고, 그를 오픈소스 하드웨어인 아두이노와 라즈베리파이에 적용할 수 있는 인터페이스를 함께 기술한다. 저자는 실무에서 ROS를 이용하여 로봇을 제작한 경험을 바탕으로, 로봇 시뮬레이션과 머신 비전 기술에 특히 집중해 이 책을 집필하였다. 이런 내용 바탕에 로보틱스에서 대표적인 주제인 7-DOF(Degree of Freedom) 로봇 팔과 SLAM(Simultaneous Localization and Mapping)을 디자인하는 내용을 더함으로써, 독자들은 해당 로봇 알고리즘을 자신의 로봇에 구현할 수 있는 능력을 배양할 수 있을 것이다. 로봇팔의 경우는 제조업계에서 자동화에 필수적인 주제 중의 하나며, SLAM의 경우 구글 자동차로 대변되는 자율주행 자동차의 기반 기술이다.
이 책에서 역자가 인상 깊게 읽은 한 문장은 ‘바퀴의 모양을 새로 발명할 필요가 없다’는 것이다. 로봇의 알고리즘을 구현하려고 할 때, 이미 최적의 형태로 구현되어 있는 알고리즘이 ROS에 무수히 존재하는데, 그를 이용할 생각하지 않고 관련 기능에 대한 새로운 코드를 작성하려고 하는 태도에 대한 언급이었다. 물론 필요에 따라 원형 이외의 바퀴 모양을 새로 발명할 필요는 있다. 하지만, 모방은 창조의 어머니라는 말이 있듯이, 심지어 새로운 바퀴 형태를 개발하려 할 때에도 기존의 최적 형태의 바퀴 모양을 참고해 그를 분석하는 선행 연구가 필요하다.
이제 4차 산업혁명의 시대가 도래함으로 ROS는 로봇을 개발하려는 사람들에게 필수적인 요소가 될 것임이 자명하다. 이 책이 ROS를 습득하는 시간을 줄여줄 효과적인 매체라 생각해서 이 책의 번역을 결심하였다. 고급 개발자들이야 기반 지식과 다양한 매체의 검색 능력을 바탕으로 빨리 로봇을 개발할 수 있지만, 관련 기술이 익숙하지 않은 사람들은 시행착오로 인해 시간을 허비하기 때문에 쉽게 따라 하며 핵심 개념을 이해할 수 있는 가이드북이 필요하다. 효용가치를 생각했을 때, 이 책이 연구자들 및 개발자들, 심지어 로봇에 관심 있는 일반인들에게도 ROS 및 로봇 기술 접근에 대한 진입장벽을 낮춰, 국내 로봇 연구 개발 환경의 활성화에 조금의 기여라도 할 수 있기를 바란다.

옮긴이 소개

배진호

습득한 지식은 문제 해결을 위한 도구로 활용해야 하며, 지식 그 자체보다는 문제 해결 설계를 위한 사고가 더 중요하다는 생각을 가지고 있다. 하지만 무엇보다 중요한 것은 어떤 문제를 풀기 위함인지 방향성을 설정하는 것이라고 생각한다. 서울과학기술대학에서 로봇 공학과 미국 로즈 헐만 공과대학에서 레이저 공학을 전공했으며, 현재 레이저 가공 장비 개발 프로젝트에 소프트웨어 엔지니어로 참여하며 전공 지식을 활용 중이다. 동시에 통계학과 컴퓨터과학에 관한 지식을 습득하면서 고급 지식을 활용해 어떻게 부가가치를 창출해낼 수 있을지 고민하고 있다. 죽을 때까지 질리지 않고 몰두할 수 있는 거리가 바로 배움이 아닐까 생각한다.

목차

목차
  • 1장. ROS와 패키지 관리 소개
    • ROS를 배워야 하는 이유
    • 로봇을 위한 ROS를 선호하는 이유
    • 로봇을 위한 ROS를 선호하지 않는 이유
    • ROS 파일 시스템 레벨의 이해
      • ROS 패키지
      • ROS 메타 패키지
      • ROS 메시지
      • ROS 서비스
    • ROS 연산 그래프 레벨의 이해
      • ROS 노드의 이해
      • ROS 메시지
      • ROS 토픽
      • ROS 서비스
      • ROS 백
      • ROS 마스터의 이해
      • ROS 파라미터 사용
    • ROS 커뮤니티 레벨의 이해
      • ROS를 시작하기 위한 전제조건은 무엇인가?
      • ROS 마스터와 ROS 파라미터 서버의 구동
        • Roscore 명령어 결과의 체크
      • ROS 패키지 생성
        • ROS 토픽의 활용
        • ROS 노드 생성
        • 빌딩 노드
      • 커스텀 msg와 srv 파일의 추가
      • ROS 서비스의 활용
        • ROS 액션립의 활용
        • ROS 액션 서버와 클라이언트의 빌딩
      • 런치 파일 생성
      • 토픽, 서비스, 액션립의 응용
      • ROS 패키지 유지 관리
      • 커스텀 ROS 패키지 배포
        • 배포를 위한 ROS 패키지의 준비
        • 커스텀 패키지의 배포
        • 커스텀 ROS 패키지를 위한 위키 페이지 제작
    • 연습문제
    • 요약

  • 2장. ROS에서 3D 로봇 모델링 작업
    • 로봇 모델링을 위한 ROS 패키지
    • URDF를 활용한 로봇 모델링의 이해
    • 로봇 디스크립션을 위한 ROS 패키지의 생성
    • 최초의 커스텀 URDF 모델 생성
    • URDF 파일 해설
    • RViz에서 로봇 3D 모델의 시각화
      • 팬 조인트와 틸트 조인트의 상호작용
    • 물리적인 특징과 충돌 특성을 URDF 모델에 추가
    • xacro를 활용한 로봇 모델링의 이해
      • 프로퍼티의 사용
      • 수학적 표현의 사용
      • 매크로의 사용
    • xacro에서 URDF로의 변환
    • 7-DOF 로봇 매니퓰레이터에 대한 로봇 디스크립션 생성
      • 로봇 팔 사양
        • 조인트 타입
    • 7-DOF 팔의 xacro 모델 상세 해설
      • 상수의 사용
      • 매크로의 사용
      • 다른 xacro 파일의 포함
      • 링크에서 메시의 사용
      • 로봇 집게를 사용한 작업
      • RViz에서 7-DOF 로봇 팔 보기
        • 조인트 상태 퍼블리셔의 이해
        • 로봇 상태 퍼블리셔의 이해
    • 차륜 구동 모바일 로봇을 위한 로봇 디스크립션 생성
    • 연습문제
    • 요약

  • 3장. ROS와 가제보를 활용한 로봇 시뮬레이션
    • 가제보와 ROS를 활용한 로봇 팔의 시뮬레이션
      • 가제보를 위한 로봇 팔 시뮬레이션 모델
        • 가제보 로봇 모델에 색과 질감 추가
        • 로봇을 구동하기 위한 transmission 태그의 추가
        • gazeboroscontrol 플러그인의 추가
        • 가제보에 3D 비전 센서 추가
      • Xtion Pro를 장착한 로봇 팔의 시뮬레이션
        • 3D 센서 데이터의 시각화
      • 가제보에서 ROS 컨트롤러를 활용한 로봇 조인트 동작
        • ros_control 패키지의 이해
        • ROS 컨트롤러와 하드웨어 인터페이스의 다양한 타입
        • ROS 컨트롤러가 가제보와 상호작용하는 방법
        • 조인트 상태 컨트롤러와 조인트 위치 컨트롤러의 로봇 팔에 대한 인터페이싱
        • 가제보와 함께 ROS 컨트롤러 실행
        • 로봇 조인트의 구동
      • 가제보에서 차륜 이동 로봇의 시뮬레이션
        • 가제보에 레이저 스캐너 추가
        • 가제보에서 모바일 로봇의 이동
        • 런치 파일에서 조인트 상태 퍼블리셔의 추가
        • ROS teleop 노드의 추가
    • 연습문제
    • 요약

  • 4장. ROS 무브잇!과 내비게이션 스택 활용
    • 무브잇! 설치
      • 무브잇! 구조
        • The move_group node
        • 무브잇!을 사용한 모션 계획
        • 모션 계획 요청 어댑터
        • 무브잇! 플래닝 씬
        • 무브잇! 기구학 처리
        • 무브잇! 충돌 체크 기능
    • 설정 마법사 툴을 사용한 무브잇! 환경 설정 패키지의 생성
      • 1단계 - 환경 설정 마법사 툴의 실행
      • 2단계 - 자기 충돌 매트릭스의 생성
      • 3단계 - 가상 조인트의 추가
      • 4단계 - 플래닝 그룹의 추가
      • 5단계 - 로봇 자세 추가
      • 6단계 - 로봇 엔드 이펙터 설정
      • 7단계 - 패시브 조인트의 추가
      • 8단계 - 환경 설정 파일의 생성
    • 무브잇! 환경 설정 패키지를 사용한 RViz에서 로봇의 모션 계획
      • RViz MotionPlanning 플러그인의 사용
      • 무브잇! 환경 설정 패키지와 가제보의 인터페이스
      • 1단계 - 무브잇!을 위한 컨트롤러 환경 설정 파일의 작성
      • 2단계 - 컨트롤러 런치 파일의 생성
      • 3단계 - 가제보를 위한 컨트롤러 환경 설정 파일 생성
      • 4단계 - 가제보 궤적 컨트롤러를 위한 런치 파일의 생성
      • 5단계 - 가제보-무브잇! 인터페이스의 디버그
    • ROS 내비게이션 스택의 이해
      • ROS 내비게이션 하드웨어 요구 사항
      • 내비게이션 패키지로의 작업
        • move_base 노드의 이해
        • 내비게이션 스택의 작동
        • 지도상에서의 위치 설정
        • 목표와 경로를 보내기
        • 충돌 복귀 동작
        • 속도 명령어 보내기
      • ROS 내비게이션 스택의 설치
    • SLAM을 사용한 지도의 생성
      • gmapping을 위한 런치 파일의 생성
      • 차륜 구동 로봇에 관한 SLAM의 실행
      • AMCL과 정적 지도를 사용한 자율 내비게이션의 구현
      • AMCL 런치 파일의 생성
    • 연습문제
    • 요약

  • 5장. 플러그인립, 노드렛, 가제보 플러그인 활용
    • 플러그인립의 이해
      • 플러그인립을 사용한 계산기 애플리케이션을 위한 플러그인의 생성
        • pluginlib_calculator 패키지를 이용한 작업
        • 1단계 - calculator_base 헤더 파일의 생성
        • 2단계 - calculator_plugins 헤더 파일의 생성
        • 3단계 - calculator_plugins.cpp를 사용한 플러그인의 내보내기
        • 4단계 - calculator_loader.cpp를 사용한 플러그인 로더의 실행
        • 5단계 - 플러그인 디스크립션 파일의 생성: calculator_plugins.xml
        • 6단계 - ROS 패키지 시스템에 플러그인 등록
        • 7단계 - CmakeLists.txt 파일의 수정
        • 8단계 - 패키지에서 플러그인의 리스트 조회
        • 9단계 - 플러그인 로더의 실행
      • ROS 노드렛의 이해
      • 노드렛의 생성
        • 1단계 - 노드렛을 위한 패키지의 생성
        • 2단계 - hello_world.cpp 노드렛의 생성
        • 3단계 - hello_world.cpp의 상세 해설
        • 4단계 - 플러그인 디스크립션 파일의 생성
        • 5단계 - package.xml로 내보내기 태크 추가
        • 6단계 - CMakeLists.txt 수정
        • 7단계 - 노드렛의 빌딩과 실행
        • 8단계 - 노드렛을 위한 런치 파일의 생성
    • 가제보 플러그인의 이해
      • 기본 월드 플러그인의 생성
    • 연습문제
    • 요약

  • 6장. ROS 컨트롤러와 시각화 플러그인 생성
    • pr2_mechanism 패키지의 이해
      • pr2controllerinterface 패키지
        • Controller의 초기화
        • ROS 컨트롤러의 시작
        • ROS 컨트롤러 업데이트
        • 컨트롤러 정지
      • pr2controllermanager
    • ROS에서 기본 리얼 타임 조인트 컨트롤러의 작성
      • 1단계 - 컨트롤러 패키지의 생성
      • 2단계 - 컨트롤러 헤더 파일의 생성
      • 3단계 - 컨트롤러 소스 파일의 생성
      • 4단계 - 컨트롤러 소스 파일의 상세 해설
      • 5단계 - 플러그인 디스크립션 파일의 생성
      • 6단계 - package.xml 업데이트
      • 7단계 - CMakeList.txt 업데이트
      • 8단계 - 컨트롤러 빌딩
      • 9단계 - 컨트롤러 환경 설정 파일 작성
      • 10단계 - 컨트롤러를 위한 런치 파일의 작성
      • 11단계 - 가제보에서 PR2 시뮬레이션과 함께 컨트롤러 실행
    • ros_control 패키지의 이해
    • ROS 시각화 툴(RViz)과 그 플러그인의 이해
      • Displays 패널
      • RViz 툴바
      • Views
      • Time 패널
      • Dockable 패널
    • 원격 조종을 위한 RViz 플러그인의 작성
      • RViz 플러그인 빌딩의 방법론
        • 1단계 - Rviz 플러그인 패키지의 생성
        • 2단계 - RViz 플러그인 헤더 파일의 생성
        • 3단계 - RViz 플러그인 정의의 생성
        • 4단계 - 플러그인 디스크립션 파일의 생성
        • 5단계 - package.xml에서 내보내기 태그 추가
        • 6단계 - CMakeLists.txt의 수정
        • 7단계 - 플러그인의 빌드와 불러오기
    • 연습문제
    • 요약

  • 7장. ROS와 I/O 보드, 센서, 액추에이터 인터페이싱
    • 아두이노-ROS 인터페이스 이해
    • 아두이노-ROS 인터페이스는 무엇인가?
      • ROS에서 rosserial 패키지의 이해
        • Ubuntu 14.04/15.04에 rosserial 패키지 설치
        • ROS - 아두이노 퍼블리셔와 서브스크라이버 예제
      • 아두이노-ROS, 예제 - LED 깜박임과 버튼 누름
      • 아두이노-ROS, 예제 - 가속도계 ADXL 335
      • 아두이노-ROS, 예제 - 초음파 거리 센서
        • 초음파 거리 센서를 사용해 거리를 알기 위한 관계식
      • 아두이노-ROS, 예제 - 측량 정보 퍼블리셔
      • Non-Arduino 보드와 ROS의 인터페이스
      • 오드로이드와 라즈베리 파이 2에 관한 ROS 설정
      • OS 이미지를 오드로이드와 라즈베리 파이 2에 설치하는 방법
        • 윈도우에서 설치
          • 리눅스에서 설치
      • PC에서 오드로이드와 라즈베리 파이 2로 연결
      • 오드로이드와 라즈베리 파이 2에 대한 이더넷 핫스팟의 구성
        • 오드로이드에 Wiring Pi 설치
        • 라즈베리 파이 2에 Wiring Pi 설치
      • 오드로이드와 라즈베리 파이 2의 ROS를 사용한 LED 깜박임
      • 오드로이드와 라즈베리 파이 2에서 ROS를 사용한 누름 버튼 + LED 깜박임
        • 오드로이드에서 LED 깜박임 실행
        • 오드로이드에서 버튼 다루기와 LED 깜박임 실행
        • 라즈베리 파이 2에서 LED 깜박임 실행
    • 다이나믹셀 액추에이터와 ROS의 인터페이스
    • 연습문제
    • 요약

  • 8장. ROS와 OpenCV, PCL을 활용한 비전 센서 프로그래밍
    • ROS - OpenCV 인터페이싱 패키지의 이해
    • ROS - PCL 인터페이싱 패키지의 이해
      • ROS 퍼셉션의 설치
      • ROS에서 USB 웹캠 인터페이스
    • ROS 카메라 캘리브레이션
      • cv_bridge를 이용한 ROS와 OpenCV 사이의 이미지 변환
      • ROS와 OpenCV를 이용한 영상 처리
        • 1단계-실험을 위한 ROS 패키지의 생성
        • 2단계-소스 파일의 생성
        • 3단계-코드의 해설
        • 4단계: CMakeLists.txt 파일의 수정
        • 5단계: 예제의 빌딩과 실행
    • ROS에서 Kinect와 Asus Xtion Pro의 인터페이스
    • Intel Real Sense 카메라와 ROS의 인터페이스
      • 레이저 스캔 패키지에 대한 포인트 클라우드의 활용
    • ROS에서 Hokuyo 레이저의 인터페이스
    • ROS에서 Velodne LIDAR의 인터페이스
    • 포인트 클라우드 데이터의 활용
      • 포인트 클라우드를 퍼블리시하는 방법
      • 포인트 클라우드를 서브스크라이브하고 처리하는 방법
      • 포인트 클라우드 데이터를 PCD 파일로 작성
      • PCD 파일로부터 포인트 클라우드를 읽고 퍼블리시하기
    • ROS를 사용한 오드로이드로부터의 스트리밍 웹캠
    • 연습문제
    • 요약

  • 9장. ROS환경에서 차륜 구동 이동 로봇 하드웨어의 구축과 인터페이싱
    • 쳇봇 소개 - DIY 모바일 로봇과 그의 하드웨어 환경 설정
      • Energia IDE를 활용한 쳇봇 펌웨어 플래시 메모리 쓰기
        • LaunchPad에서 PC로 직렬 데이터 전송 프로토콜
        • PC에서 LaunchPad로 직렬 데이터 전송 프로토콜
      • ROS에 관한 쳇봇 인터페이스 패키지 논의
      • 엔코더 틱으로부터 거리 측량의 연산
      • ROS twist 메시지로부터 모터 속도의 연산
        • C++ 노드를 사용한 로봇의 독립 런치 파일의 실행
      • 쳇봇을 위한 내비게이션 스택의 환경 설정
      • 내비게이션 스택 패키지의 환경 설정
        • localcostmap과 globalcostmap의 공통 환경 설정
        • 전역 코스트 맵 파라미터들의 환경 설정
        • 지역 코스트 맵 파라미터 환경 설정
        • 베이스 지역 플래너 파라미터의 환경 설정
        • DWA 지역 플래너 파라미터 환경 설정
        • move_base 노드 파라미터의 환경 설정
      • AMCL의 이해
      • 내비게이션 스택으로 작업하기 위한 RViz의 이해
        • 2D Pose Estimate 버튼
        • 파티클 클라우드의 시각화
        • 2D Nav Goal 버튼
        • 정적 지도의 표시
        • 로봇 풋프린트의 표시
        • 전역과 지역 코스트 맵의 표현
        • 전역 계획, 지역 계획, 플래너 계획의 표현
        • 현재 목표
      • 내비게이션 스택을 사용한 장애물 회피
      • 쳇봇 시뮬레이션의 활용
        • 가제보에서 가상 공간의 구축
        • 가제보 모델 폴더에 모델 파일 추가
      • ROS 노드에서 내비게이션 스택으로 목표 위치 보내기
    • 연습문제
    • 요약

  • 10장. ROS-무브잇!의 고급 기능
    • move_group C++ API를 활용한 로봇 팔의 모션 계획
      • MoveIt! C++API를 활용한 임의 경로에 관한 모션 계획
      • MoveIt! C++ API를 활용한 커스텀 경로의 모션 계획
    • 무브잇!을 활용하여 로봇 팔에서 충돌 체크
      • 무브잇!에서 충돌 객체의 추가
      • 플래닝 씬으로부터 충돌 객체의 제거
      • 무브잇! API를 활용한 셀프 충돌 체크
    • 무브잇!과 가제보를 사용한 인식의 활용
    • 무브잇!을 사용한 물체 잡기
    • 무브잇!을 사용해 물체를 집어 원하는 위치로 옮기는 작업의 수행
      • 무브잇!에서 그랩 테이블과 그랩 객체의 생성
      • 가제보와 실제 로봇에서 물체를 집어 원하는 곳으로 옮기는 작업
    • 로봇 하드웨어 인터페이싱을 위한 다이나믹셀 ROS 서보 컨트롤러의 이해
      • 다이나믹셀 서보
      • 다이나믹셀-ROS 인터페이스
    • 로봇 팔에 기반한 7-DOF 다이나믹셀과 ROS 무브잇!의 인터페이스
      • COOL arm 로봇을 위한 컨트롤러 패키지의 생성
      • COOL arm의 무브잇! 환경 설정
    • 연습문제
    • 요약

  • 11장. 산업용 로봇을 위한 ROS
    • ROS-인더스트리얼 패키지의 이해
      • ROS-인더스트리얼의 목표
      • ROS-인더스트리얼 - 간단한 역사
      • ROS-인더스트리얼의 이점
    • ROS-인더스트리얼 패키지의 설치
    • ROS-인더스트리얼 패키지의 블록 다이어그램
    • 산업용 로봇을 위한 URDF의 생성
    • 산업용 로봇을 위한 무브잇! 환경 설정
      • 무브잇! 환경 설정 파일의 업데이트
      • 무브잇! 환경 설정의 테스트
    • 유니버셜 로봇 팔의 ROS-인더스트리얼 패키지 설치
      • 유니버셜 로봇의 ROS 인터페이스 설치
    • 유니버셜 로봇 팔의 무브잇! 환경 설정 이해
    • ABB 로봇의 무브잇! 환경 설정의 활용
    • ROS-인더스트리얼 로봇 지원 패키지의 이해
      • RViz에서 ABB 로봇 모델의 시각화
    • ROS-인더스트리얼 로봇 클라이언트 패키지
      • 산업용 로봇 클라이언트 노드의 디자인
    • ROS-인더스트리얼 로봇 드라이버 패키지
    • 무브잇! IKPast 플러그인의 이해
    • ABB-IRB6640 로봇에 대한 무브잇! IKFast 플러그인의 생성
      • 무브잇! IKFast 플러그인의 개발을 위한 사전요구 사항
      • 오픈레이브와 IKFast 모듈
        • 무브잇! IKFast
        • 무브잇! IKFast 패키지의 설치
        • Ubuntu 14.04.3에 오픈레이브 설치
    • 오픈레이브로 작업하기 위한 로봇의 COLLADA 파일 생성
    • IRB 6640 로봇을 위한 IKFast CPP 파일의 생성
      • 무브잇! IKFast 플러그인의 생성
    • 연습문제
    • 요약

  • 12장. ROS환경에서 트러블슈팅과 최적 실행방법
    • Ubuntu 14.04.3에 이클립스 IDE 설정
    • 이클립스 IDE에서 ROS 개발 환경 설정
      • 이클립스 IDE에서 전역 설정
        • 이클립스 IDE를 위한 ROS 컴파일러 스크립트
        • 이클립스에 ROS 캣킨 패키지를 추가
        • 이클립스에서 run ROS 노드에 run configurations 추가
    • ROS에서 최적 실행
      • ROS C++ 코딩 스타일 가이드
        • ROS에서 사용된 표준 명명 규약
        • 코드 라이선스 규약
        • ROS 코드 포맷
        • ROS 코드 문서
        • 콘솔 결과
    • ROS 패키지에서 최적 실행
    • ROS에서 중요한 틀러블슈팅 팁
      • roswtf의 쓰임
    • 연습문제
    • 요약

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안