더 이상 우리의 일상에서 로봇이 없는 삶을 생각할 수 없다. 로봇을 만드는 일은 하드웨어 부분이건 소프트웨어 부분이건 생각만큼 단순하지 않다. 하지만 파이썬을 활용하면 다양한 기능을 제공하는 로봇을 비교적 쉽게 만들 수 있다.
이 책은 파이썬, 로봇 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장, ‘세프봇 교정 및 테스트’는 마지막 부분으로, 로봇을 교정하고 테스트하는 방법을 소개한다.
이 책은 주로 자율 이동 로봇을 아무런 준비 없이 처음부터 만드는 방법과 그 로봇을 파이썬으로 프로그래밍하는 것에 초점을 맞춘 12개의 장으로 구성되어 있다. 이 책에서 언급한 로봇은 서비스 로봇으로, 집, 호텔, 식당 등에서 음식을 서비스하는 데 쓰일 수 있다. 처음부터 끝까지 이 책은 이 로봇을 만드는 법을 단계별로 설명한다. 로보틱스의 기본 개념부터 시작해 로봇에 대한 3D 모델링과 시뮬레이션까지 살펴본다. 로봇을 시뮬레이션하는 데 성공하고 나면, 제대로 자율 주행할 수 있는 로봇 프로토타입을 만들 때 필요한 여러 가지 하드웨어 구성요소에 대해 알아본다.
이 로봇의 소프트웨어 부분은 주로 파이썬 프로그래밍 언어와 로봇 운영체제(ROS, Robot Operating System), OpenCV 등의 프레임워크로 이뤄졌다. 여러분이 로봇의 설계 관점부터 로봇의 UI에 이르기까지, 파이썬을 활용하는 것을 모두 이해할 수 있도록 노력했다. 가제보(Gazebo) 시뮬레이터는 로봇과 OpenCV, OpenNI 등의 기계 비전 라이브러리를 시뮬레이션하기 위해 사용한다. PCL을 사용해 로봇의 2D와 3D 데이터를 처리한다. 각 장에는 이러한 내용을 응용하기 위해 필요한 만큼의 이론도 함께 구성했다. 이 책은 로봇에 대해 열정이 넘치는 로봇 분야의 여러 전문가들의 감수를 거쳤다
전자 공학자이자 로봇 광이며 기계 비전 전문가면서, 임베디드 시스템 프로그래머고, 인도 큐보틱스 랩스(Qbotics Labs)의 CEO다(http://www.qboticslabs.com). 케랄라(Kerala)의 Science and Technology(FISAT)에서 전자공학 및 통신 엔지니어링 석사를 취득했다. 졸업 엔지니어링 프로젝트에서 사람과 상호작용할 수 있는 소셜 로봇을 만들었다. 프로젝트는 성공적이었으며, 영상 및 인쇄 매체에서도 언급됐다. 로봇의 주 기능은 인간과 의사소통하면서 지능적으로 대답하는 것이었다. 이미지 처리 기능도 들어있어서 안면, 움직임, 색 등을 감지할 수 있었다. 전체 프로젝트는 파이썬 프로그래밍 언어로 구현됐다. 이 프로젝트를 하면서 로보틱스, 이미지 처리, 파이썬에 대한 관심을 가지기 시작했다.
졸업 후, 로보틱스와 이미지 처리 관련 스타트업에서 3년간 근무했다. 그동안, 로봇 운영체제(ROS, Robot Operating system), V-REP, 액틴(Actin)(로봇 시뮬레이션 도구) 등의 유명한 로봇 소프트웨어 플랫폼과 OpenCV, OpenNI, PCL 등의 이미지 처리 라이브러리에 대해 배웠다. 또한 로봇 3D 설계, 아두이노(Arduino)나 스텔라리스(Stellaris) 런치패드상의 임베디드 프로그래밍에 대해서도 익혔다.
3년의 직장 생활 이후, 큐보틱스 랩스 회사를 창업했다. 주로 웨어러블 기술, 로보틱스, 기계 비전, 녹색 기술, 온라인 교육 등의 분야에서 훌륭한 제품을 만들기 위한 연구에 집중했으며, 개인 웹사이트(http://www.lentinjoseph.com)와 테크노랩스즈(technolabsz) 기술 블로그(http://www.technolabsz.com)를 운영 중이며, 자신의 성과를 기술 블로그에 올려왔다. 또한, 인도 파이콘(PyCon) 2013에서 파이썬을 사용한 로봇 학습에 대해 발표했다.
1990년 초, DC 모터를 사용한 마이크로 마우스가 스무드 턴(smooth turn)을 하면서 미로를 찾아가는 모습을 지켜보면서 환호성과 탄성을 질렀던 기억이 난다. 오늘날에는 반제품의 마이크로 마우스에 코딩만 하면 얼마든지 로봇 프로그래밍을 즐길 수 있고, 레고 마인드스톰 등 다양한 제품을 사용해 여러 가지 로봇을 만들고 실험해 볼 수 있다.
그렇지만, 역시 로봇이 가지는 매력은 내 손으로 움직이는 어떤 존재를 만들고, 그 존재에 내가 작성한 코드를 집어 넣어서 생명을 불어 넣고, 그 존재가 실제 현실에서 움직이는 것을 본다는 점에 있다. 게다가 로봇 제어는 전자, 통신, 기계, 전산 등이 모두 집약된 종합 예술이다.
로봇을 만드는 전 과정을 배우기 위해서는 직접 로봇을 만들어보는 것이 가장 좋을 것이다. 이 책은 계획, 설계, 도면 작성부터 기계/전자적인 부품의 선택 및 로봇 제작까지 하드웨어 부분과, 그 위에 올라가는 운영체제(ROS)와 제어를 위한 컨트롤러에 들어갈 펌웨어, 실제 제어를 담당하는 로직에 이르기까지 로봇의 모든 부분을 직접 만들면서 내부를 들여다볼 수 있게 만든 책이다. 또한, 사용자 경험을 향상시키기 위한 음성 인식이나 합성, 자율 주행 알고리즘, 시각 알고리즘 등에 이르기까지 재미있는 로봇을 만들 때 필요한 여러 가지 기술을 로봇을 직접 만들면서 배울 수 있다.
이 책이 로봇에 관심이 많은 여러 독자들에게 좋은 출발점이 될 수 있기를 바라며, 여러분도 재미있는 로봇의 세계에 깊이 빠져들게 되길 빈다.
KAIST에서 전산학 학사와 석사 학위(프로그래밍 언어 연구실)를 취득했다. 삼성메디슨, 비트앤펄스 등에서 UI 개발자와 개발 팀장을 지냈고, 호주에서 C++/풀스택 개발자로 일하고 있다.
웹이나 모바일 등의 분야에서 값 중심의 프로그래밍을 통해 오류 발생 가능성이 더 적고 유지보수가 편한 프로그램을 작성하는 방법과 이를 지원하는 여러 도구를 만드는 일에 관심이 많다. 최근에는 스칼라와 파이썬을 사용한 대규모 병렬처리나 액터를 활용한 분산 처리 등을 공부하는 중이다.
『파이썬 인 프랙티스』(2014), 『시스템 분석과 성능최적화』(2015)와 에이콘출판사에서 펴낸 『Programming in Scala (Second Edition) 한국어판』(2014), 『유쾌한 파이썬』(2015), 『스칼라 동시성 프로그래밍』(2016)을 번역했다.