책 이미지

책 정보
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > 프로그래밍 언어 기타
· ISBN : 9788960779587
· 쪽수 : 540쪽
· 출판일 : 2017-02-07
책 소개
목차
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 태그의 추가
________gazebo_ros_control 플러그인의 추가
________가제보에 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 패키지의 이해
____pr2_controller_interface 패키지
________Controller의 초기화
________ROS 컨트롤러의 시작
________ROS 컨트롤러 업데이트
________컨트롤러 정지
____pr2_controller_manager
__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++ 노드를 사용한 로봇의 독립 런치 파일의 실행
____쳇봇을 위한 내비게이션 스택의 환경 설정
____내비게이션 스택 패키지의 환경 설정
________local_costmap과 global_costmap의 공통 환경 설정
________전역 코스트 맵 파라미터들의 환경 설정
________지역 코스트 맵 파라미터 환경 설정
________베이스 지역 플래너 파라미터의 환경 설정
________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의 쓰임
__연습문제
__요약