파이썬 로보틱스 [파이썬, ROS, OpenCV를 사용해 자율 주행 로봇 만들기]
- 원서명Learning Robotics using Python (ISBN 9781783287536)
- 지은이렌틴 조셉(Lentin Joseph)
- 옮긴이오현석
- ISBN : 9788960778610
- 30,000원
- 2016년 05월 20일 펴냄 (절판)
- 페이퍼백 | 344쪽 | 188*235mm
- 시리즈 : acorn+PACKT
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
요약
더 이상 우리의 일상에서 로봇이 없는 삶을 생각할 수 없다. 로봇을 만드는 일은 하드웨어 부분이건 소프트웨어 부분이건 생각만큼 단순하지 않다. 하지만 파이썬을 활용하면 다양한 기능을 제공하는 로봇을 비교적 쉽게 만들 수 있다.
이 책은 파이썬, 로봇 OS(ROS), OpenCV 등을 활용해서 시각 알고리즘으로 주변을 인식하고, 자율적으로 주행하면서 사용자와 음성으로 대화할 수 있는 인공지능 로봇을 만드는 과정을 보여주는 소개서다. 하드웨어 설계, 시뮬레이션, 부품 선택 및 펌웨어 코딩, 주행에 필요한 기본적인 물리 지식, 로봇 운영체제 활용, 음성 인식과 합성을 통한 사용자 상호작용, OpenCV를 활용한 영상 처리 등에 대해 배우면서 로봇 제작 기초를 단단하게 다질 수 있다.
이 책에서 다루는 내용
■ 로보틱스의 핵심 개념과 용어
■ LibreCAD나 블렌더(Blender) 등의 프리웨어를 활용해 로봇의 2차원과 3차원 도면 제작
■ ROS와 가제보(Gazebo)를 사용한 로봇 시뮬레이션
■ 요구사항에 맞춰 로봇 하드웨어를 만드는 방법
■ 액추에이터(actuator)의 종류 및 액추에이터를 로봇에 연결하는 방법
■ 다양한 로봇 센서를 로봇에 연결하는 방법
■ OpenCV, OpenNI, PCL 등의 프로그램 설치 및, 2차원/3차원 비주얼 데이터 처리 방법
■ 파이썬을 활용한 음성 인식과 합성
■ 파이썬을 활용해 인공지능을 로봇에 적용
■ Qt와 파이썬을 이용한 로봇 제어 GUI 제작
■ 로봇의 교정과 테스트
이 책의 대상 독자
서비스 로보틱스 영역을 탐구해 보려는 기업가, 로봇에 더 많은 기능을 추가하고 싶은 전문가, 로보틱스에 대해 더 많이 탐구하고 싶은 연구자, 로보틱스를 배우고 싶어하는 학생이나 로보틱스에 흥미가 있는 사람에게 좋은 동반자가 될 것이다. 이 책은 누구나 쉽게 이해할 수 있도록 한 단계씩 차례대로 설명한다.
이 책의 구성
1장, ‘로보틱스 소개’에서는 로보틱스의 기본 개념과 용어를 소개한다. 이 장은 로보틱스를 처음 시작하는 초보자를 위한 내용이다.
2장, ‘서비스 로봇의 기계적 설계’에서는 LibreCAD와 블렌더(Blender)(무료 소프트웨어)를 사용해 로봇을 2D와 3D로 설계하는 방법을 알아본다. 또한 3D 모델을 구축하기 위해 파이썬에서 블렌더 파이썬 API를 사용하는 방법도 살펴본다.
3장, ‘ROS와 가제보를 사용한 로봇 시뮬레이션’에서는 가제보와 ROS를 사용해 서비스 로봇을 시뮬레이션하는 과정을 알아본다.
4장, ‘세프봇 하드웨어 설계’에서는 블록 다이어그램과 세프봇을 만드는 데 필요한 하드웨어 부품 등 로봇의 하드웨어 설계에 대해 설명한다.
5장, ‘로보틱 액추에이터와 바퀴 인코더 사용’에서는 로봇 액추에이터(actuator)와 바퀴 인코더를 티바 C 런치패드(Tiva C Launchpad)를 사용해 연결하는 방법을 알아본다. 또한 다이나믹셀(dynamixel)과 같은 고성능 스마트 액추에이터도 설명한다.
6장, ‘로봇 센서 사용’에서는 초음파 센서, IR 근접 센서, IMU를 티바 C 런치패드와 연결하는 방법을 설명한다.
7장, ‘파이썬과 ROS를 사용한 비전 센서 프로그래밍’에서는 OpenCV, OpenNI, PCL 라이브러리를 소개하고, ROS와 이들을 연결하는 방법과 파이썬을 사용해 프로그래밍하는 방법을 설명한다.
8장, ‘파이썬과 ROS를 사용한 음성 인식과 합성’에서는 다양한 라이브러리를 사용한 음성 인식과 합성, 파이썬을 통해 이러한 라이브러리를 ROS와 연결하는 방법에 대해 알아본다.
9장, ‘파이썬으로 세프봇에 인공지능 적용’에서는 채터봇(ChatterBot)을 만드는 방법을 소개한다. 이를 활용해 로봇의 상호작용 수준을 더 높일 수 있다.
10장, ‘세프봇 하드웨어 통합 및 파이썬을 사용해 ROS와 연결’에서는 완전한 하드웨어를 조립하는 방법과 필수적인 소프트웨어 부분에 대해 설명한다. 이 장은 주로 서비스 로봇의 자율 내비게이션과 ROS와 파이썬을 사용해 자율 주행을 프로그래밍하는 방법에 대해 알아본다.
11장, ‘Qt와 파이썬을 사용한 로봇의 GUI 설계’에서는 전형적인 식당에서 로봇을 운용하는 일반 사용자를 대상으로 하는 GUI 제작 방법을 살펴본다. Qt와 PyQt 파이썬 래퍼를 사용해 GUI를 만든다.
12장, ‘세프봇 교정 및 테스트’는 마지막 부분으로, 로봇을 교정하고 테스트하는 방법을 소개한다.
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
목차
목차
- 1장. 로보틱스 소개
- 로봇이란 무엇인가?
- ‘로봇’ 단어의 역사
- 로봇의 현대적 정의
- 로봇은 어디에서 왔는가?
- 로봇의 내부에는 어떤 것이 들어 있나?
- 물리적 본체
- 센서
- 이펙터
- 컨트롤러
- 로봇을 어떻게 만들 수 있나?
- 반응형 제어
- 계층형(심의) 제어
- 하이브리드 제어
- 요약
- 로봇이란 무엇인가?
- 2장. 서비스 로봇의 기계적 설계
- 서비스 로봇의 요구사항
- 로봇의 운동 메커니즘
- 모터와 바퀴의 선택
- 설계 요약
- 로봇 샤시 설계
- LibreCAD, 블렌더, 메시랩 설치
- LibreCAD 설치
- 블렌더 설치
- 메시랩 설치
- LibreCAD를 사용해 로봇에 대한 2차원 CAD 그리기
- 밑판 설계
- 밑판 기둥 설계
- 바퀴, 모터, 모터 클램프 설계
- 캐스터 바퀴 설계
- 중간판 설계
- 윗판 설계
- 블렌더를 사용해 로봇에 대한 3차원 모델 작업
- 블렌더에서 파이썬 스크립트 사용
- 블렌더 파이썬 API 소개
- 로봇 모델의 파이썬 스크립트
- 연습문제
- 요약
- 3장. ROS와 가제보를 사용한 로봇 시뮬레이션
- 로봇 시뮬레이션의 이해
- 로봇의 수학적 모델
- ROS와 가제보 소개
- 우분투 14.04.2에 ROS 인디고 설치
- 호텔 환경에서 세프봇과 터틀봇 시뮬레이션
- 연습문제
- 요약
- 로봇 시뮬레이션의 이해
- 4장. 세프봇 하드웨어
- 세프봇 하드웨어의 사양
- 로봇의 블록 다이어그램
- 모터와 인코더
- 모터 드라이버
- 내장 컨트롤러 보드
- 초음파 센서
- 관성 측정 유닛
- 키넥트
- 중앙 처리 장치
- 스피커/마이크
- 파워 서플라이/배터리
- 세프봇 하드웨어의 동작
- 연습문제
- 요약
- 5장. 로보틱 액추에이터와 바퀴 인코더 사용
- DC 기어 모터와 티바 C 런치패드의 연결
- 차동 바퀴 로봇
- 에너지아 IDE 설치
- 인터페이싱 코드
- 직교 인코더와 티바 C 런치패드의 연결
- 인코더 데이터 처리
- 직교 인코더 인터페이싱 코드
- 다이나믹셀 액추에이터 사용
- 연습문제
- 요약
- DC 기어 모터와 티바 C 런치패드의 연결
- 6장. 로봇 센서 사용
- 초음파 거리 센서 사용
- HC-SR04를 티바 C 런치패드와 연결
- IR 근접 센서 사용
- 관성 측정 유닛 사용
- 관성을 사용한 내비게이션
- MPU 6050과 티바 C 런치패드 연결
- 에너지아의 처리 코드
- 에너지아의 DMP 지원을 사용해서 MPU 6050을 런치패드에 연결
- 연습문제
- 요약
- 초음파 거리 센서 사용
- 7장. 파이썬과 ROS를 사용한 비전 센서 프로그래밍
- 로보틱 비전 센서와 이미지 처리 라이브러리 목록
- OpenCV, OpenNI, PCL 소개
- OpenCV란 무엇인가?
- OpenNI란 무엇인가?
- PCL이란 무엇인가?
- ROS. OpenCV, OpenNI로 키넥트 프로그래밍
- OpenNI 드라이버를 시작하는 방법
- OpenCV에 대한 ROS 인터페이스
- ROS. OpenCV, OpenNI로 포인트 클라우드 다루기
- 장치를 열고 포인트 클라우드 생성
- 포인터 클라우드를 레이저 스캔 데이터로 변환
- ROS와 키넥트로 SLAM 활용
- 연습문제
- 요약
- 8장. 파이썬과 ROS를 사용한 음성 인식과 합성
- 음성 인식의 이해
- 음성 인식 시스템 블록 다이어그램
- 음성 인식 라이브러리
- 윈도우 스피치 SDK
- 음성 합성
- 음성 합성 라이브러리
- 우분투 14.04.2에서 파이썬을 사용해 음성 인식과 합성
- 포켓 스핑크스 설정 및 우분투 14.04.2에 파이썬 바인딩 설치
- 우분투 14.0.2에서 포켓 스핑크스 파이썬 바인딩 사용
- 출력
- 우분투 14.04.2에서 포켓 스핑크스, G스트리머, 파이썬을 사용한 실시간 음성 인식
- 우분투 14.04.2에서 파이썬과 줄리우스를 사용한 음성 인식
- 줄리우스 음성 인식기와 파이썬 모듈 설치
- 파이썬 줄리우스 클라이언트 코드
- 포켓 스핑크스와 줄리우스를 활용해 음성 인식 정확도 향상시키기
- 우분투 14.04.2에 e스피크와 페스티발 설정
- 윈도우에서 파이썬을 사용한 음성 인식과 합성
- 스피치 SDK 설치
- ROS 인디고와 파이썬을 사용해 음성 인식
- ROS 인디고에 pocketsphinx 패키지 설치
- ROS 인디고와 파이썬을 사용해 음성 합성
- 연습문제
- 요약
- 음성 인식의 이해
- 9장. 파이썬으로 세프봇에 인공지능 적용
- 세프봇 의사소통 시스템의 블록 다이어그램
- AIML 소개
- AIML 태그 소개
- PyAIML 소개
- 우분투 14.04.2에 PyAIML 설치
- 소스 코드로부터 PyAIML 설치
- AIML과 파이썬으로 작업
- 명령행 인자로부터 AIML 파일 적재
- A.L.I.C.E. AIML 파일로 작업
- AIML 파일을 메모리에 적재
- AIML 파일을 적재하고 브레인 파일에 저장
- AIML과 브레인 파일을 적재하고 bootstrap 메소드 사용
- PyAIML과 ROS 통합
- aiml_server.py
- aiml_client.py
- aimlttsclient.py
- aimlspeechrecog_client.py
- start_chat.launch
- startttschat.launch
- startspeechchat.launch
- 연습문제
- 요약
- 10장. 세프봇 하드웨어 통합 및 파이썬을 사용해 ROS와 연결
- 세프봇 하드웨어 조립
- 세프봇 PC 설정 및 세프봇 ROS 패키지 설정
- 세프봇 센서를 티바 C 런치패드와 연결
- 세프봇의 임베디드 코드
- 세프봇을 위한 ROS 파이썬 드라이버 작성
- 세프봇 ROS 시작 파일 이해
- 세프봇 파이썬 노드와 시작 파일 사용
- 방의 지도를 작성하기 위해 ROS에서 SLAM 사용
- ROS 지역화와 내비게이션 사용
- 연습문제
- 요약
- 11장 Qt와 파이썬을 사용한 로봇의 GUI 설계
- 우분투 14.04.2 LTS에 Qt 설치
- Qt의 파이썬 바인딩으로 작업
- PyQt
- PySide
- PyQt와 PySide로 작업
- Qt 디자이너 소개
- Qt 시그널과 슬롯
- UI 파일을 파이썬 코드로 변환
- PyQt 코드에 슬롯 정의 추가
- Hello World GUI 애플리케이션 실행
- 세프봇 제어 GUI로 작업
- 우분투 14.04.2 LTS에 rqt 설치와 작업
- 연습문제
- 요약
- 12장 세프봇 교정 및 테스트
- ROS를 사용한 Xbox 키넥트 교정
- 키넥트 RGB 카메라 교정
- 키넥트 IR 카메라 교정
- 바퀴 이동 거리 교정
- 바퀴 이동 거리의 오류 분석
- 오류 수정
- MPU 6050 교정
- GUI를 사용해 로봇 테스트
- ROS 내비게이션의 장점과 단점
- 연습문제
- 요약
- ROS를 사용한 Xbox 키넥트 교정