이미 소장하고 있다면 판매해 보세요.
|
1부. ROS 프로그래밍 핵심
1장. ROS 소개 __기술적 요구 사항 __ROS를 사용해야 하는 이유 __ROS 파일시스템 레벨 이해 ____ROS 패키지 ____ROS 메타패키지 ____ROS 메시지 ____ROS 서비스 __ROS 연산 그래프 레벨 이해 ____ROS 노드 ____ROS 메시지 ____ROS 토픽 ____ROS 서비스 ____ROS 백 파일 ____ROS 마스터 ____ROS 파라미터 사용 __ROS 커뮤니티 레벨 __ROS 시작을 위한 준비 ____ROS 배포판 ____ROS 마스터 및 ROS 파라미터 서버 실행 __요약 __질문 2장. ROS 기초 프로그래밍 __기술적 요구 사항 __ROS 패키지 생성 ____ROS 토픽 활용 ____ROS 노드 생성 ____노드 빌드 __사용자 정의 .msg와 .srv 파일 추가 __ROS 서비스 활용 ____ROS actionlib 활용 ____ROS 액션 서버와 클라이언트의 빌드 __런치 파일 작성 __토픽, 서비스, actionlib의 응용 __요약 __질문 2부. ROS 로봇 시뮬레이션 3장. ROS 3D 모델링 __기술적 요구 사항 __로봇 모델링을 위한 ROS 패키지 __URDF를 사용한 로봇 모델링 이해 __로봇 디스크립션을 위한 ROS 패키지의 생성 __최초의 URDF 모델 생성 __URDF 파일 분석 __RViz에서 로봇 3D 모델의 시각화 ____팬 조인트와 틸트 조인트의 상호작용 ____물리적인 특징과 충돌 특성을 URDF 모델에 추가 __xacro를 활용한 로봇 모델링의 이해 __속성의 사용 ____수학 연산자 활용 ____매크로 활용 __xacro에서 URDF로의 변환 __7-DOF 로봇 매니퓰레이터 로봇 디스크립션 생성 ____로봇 팔 사양 __7-DOF 로봇 팔의 xacro 모델 상세 설명 ____상수 사용 ____매크로의 사용 ____다른 xacro 파일 포함 ____링크에서 메시 사용 ____로봇 집게를 사용한 작업 ____RViz에서 7-DOF 로봇 팔 시각화 __차동 구동 모바일 로봇 모델 생성 __요약 __질문 4장. ROS와 가제보를 활용한 로봇 시뮬레이션 __기술적 요구 사항 __가제보 및 ROS를 활용한 로봇 팔 시뮬레이션 __가제보에서 로봇 팔 시뮬레이션 모델 생성 ____가제보 로봇 모델에 색과 질감 추가 ____모델을 구동하기 위한 transmission 태그 추가 __gazebo_ros_control 플러그인 추가 ____가제보에 3D 비전 센서 추가 __Xtion Pro와 로봇 팔 시뮬레이션 ____3D 센서 데이터 시각화 __가제보에서 ROS 컨트롤러를 활용한 로봇 조인트 동작 ____ros_control 패키지 이해 ____다양한 타입의 ROS 컨트롤러와 하드웨어 인터페이스 ____ROS 컨트롤러가 가제보와 상호작용하는 방법 ____조인트 상태 컨트롤러와 조인트 위치 컨트롤러의 로봇 팔에 대한 인터페이싱 ____가제보로 ROS 컨트롤러 실행 ____로봇 조인트의 구동 __가제보에서 차동 구동 로봇 시뮬레이션 ____가제보에 레이저 스캐너 추가 ____가제보에서 모바일 로봇 이동 ____런치 파일에 joint_state_publisher 추가 __ROS teleop 노드 추가 __요약 __질문 5장. ROS, 코펠리아심, 위봇을 활용한 로봇 시뮬레이션 __기술적 요구 사항 __ROS로 코펠리아심 설정 ____RosInterface 플러그인 이해 ____ROS 메시지 작업 __코펠리아심과 ROS를 활용한 로봇 팔 시뮬레이션 ____코펠리아심 조인트 컨트롤러에 ROS 인터페이스 추가 __ROS로 위봇 설정 ____위봇 시뮬레이터 소개 ____위봇으로 모바일 로봇 시뮬레이션 __첫 번째 컨트롤러 작성 ____위봇 및 ROS를 사용한 로봇 팔 시뮬레이션 __webots_ros를 사용해 teleop 노드 작성 ____런치 파일로 위봇 실행 __요약 __질문 6장. ROS MoveIt!과 내비게이션 스택 활용 __기술적 요구 사항 __MoveIt! 아키텍처 ____move_group 노드 ____MoveIt!을 활용한 모션 플래닝 ____모션 플래닝 요청 어댑터 ____MoveIt! 플래닝 씬 ____MoveIt! 기구학 처리 ____MoveIt! 충돌 검사 __셋업 어시스턴트 도구를 활용한 MoveIt! 구성 패키지 생성 ____1단계: 셋업 어시스턴트 도구 시작 ____2단계: 자기 충돌 행렬 생성 ____3단계: 가상 조인트 추가 ____4단계: 플래닝 그룹 추가 ____5단계: 로봇 포즈 추가 ____6단계: 로봇 엔드 이펙터 설정 ____7단계: 패시브 조인트 추가 ____8단계: 저자 정보 ____9단계: 구성파일 작성 __RViz에서 MoveIt! 구성 패키지를 활용한 모션 플래닝 ____RViz MotionPlanning 플러그인 활용 ____MoveIt! 구성 패키지와 가제보의 인터페이스 __ROS 내비게이션 스택 이해 ____ROS 내비게이션 하드웨어 요구 사항 ____내비게이션 패키지 작업 ____내비게이션 스택의 작동 __SLAM을 활용한 지도 생성 ____gmapping을 위한 런치 파일 작성 ____차동 구동 로봇에서 SLAM 실행 ____amcl 및 정적 지도를 사용해 자율주행 구현 ____amcl 런치 파일 작성 __요약 __질문 7장. ROS MoveIt!의 고급 기능 __기술적 요구 사항 __move_group C++ 인터페이스를 사용한 모션 플래닝 ____MoveIt! C++ API를 활용한 임의의 모션 플래닝 ____MoveIt! C++ API를 활용한 사용자 정의 모션 플래닝 ____MoveIt!을 사용해 로봇 팔과의 충돌 확인 __MoveIt!과 가제보를 활용한 퍼셉션 작업 __MoveIt!으로 물체 매니퓰레이션 수행 ____MoveIt!을 활용한 선택/배치 작업 ____가제보와 실제 로봇에서 선택/배치 작업 __로봇 하드웨어 인터페이스를 위한 다이나믹셀 ROS 서보 컨트롤러의 이해 ____다이나믹셀 서보 ____DYNAMIXEL-ROS 인터페이스 __7-DOF 다이나믹셀 기반 로봇 팔과 ROS MoveIt! ____COOL 로봇 암 컨트롤러 패키지 생성 ____MoveIt! COOL 로봇 팔의 구성 __요약 __질문 8장. ROS 드론 __기술적 요구 사항 __드론의 활용 ____UAV 하드웨어 ____Pixhawk 자동조종 장치 __PX4 비행 제어 스택 활용 ____PX4 펌웨어 아키텍처 ____PX4 SITL __PC/자동조종 장치 통신 ____mavros ROS 패키지 __ROS-PX4 애플리케이션 작성 ____궤적 스트리머 작성 ____PX4에 대한 외부 위치 추정 __RotorS 시뮬레이션 프레임워크 사용 ____RotorS 설치 ____RotorS 패키지 ____새로운 UAV 모델 생성 ____RotorS 모터 모델과 상호작용 __요약 __질문 3부. ROS 로봇 하드웨어 프로토타이핑 9장. ROS와 I/O 보드, 센서, 액추에이터 인터페이스 __기술적 요구 사항 __아두이노-ROS 인터페이스 이해 __아두이노-ROS 인터페이스는 무엇인가? ____ROS의 rosserial 패키지 이해 ____아두이노의 ROS 노드 API 이해 ____ROS-아두이노 퍼블리셔 및 서브스크라이버 예제 ____아두이노-ROS 예제: 푸시 버튼으로 LED 깜박임 ____아두이노-ROS 예제: 가속도계 ADXL 335 ____아두이노-ROS 예제: 초음파 거리 센서 ____아두이노-ROS 예제: 주행 거리 데이터 퍼블리셔 __아두이노 이외의 보드와 ROS의 인터페이스 ____ROS 설치를 위한 오드로이드-C4, 라즈베리파이 4, 젯슨 나노 설정 ____라즈베리파이 4에서 ROS를 사용해 LED 깜박임 ____라즈베리파이 4에서 ROS를 사용하는 푸시 버튼과 깜박이는 LED ____라즈베리파이 4에서 예제 실행 __다이나믹셀 액츄에이터와 ROS 인터페이스 __요약 __질문 10장. ROS와 OpenCV, PCL을 활용한 비전 센서 프로그래밍 __기술적 요구 사항 __ROS - OpenCV 인터페이스 패키지 이해 __ROS: PCL 인터페이스 패키지 이해 ____ROS 퍼셉션 설치 __ROS에서 USB 웹캠 인터페이스 __ROS 카메라 보정 ____cv_bridge를 사용해 ROS와 OpenCV 간에 이미지 변환 __ROS와 Kinect 및 아수스 Xtion Pro 인터페이스 __인텔 RealSense 카메라와 ROS 인터페이스 ____포인트 클라우드를 레이저 스캔 데이터로 변환 __ROS와 Hokuyo 레이저 인터페이스 ____RPLIDAR 및 YDLIDAR와 ROS 인터페이스 __포인트 클라우드 데이터 작업 ____포인트 클라우드를 퍼블리시하는 방법 ____포인트 클라우드 서브스크라이브와 처리 방법 ____PCD 파일에서 포인트 클라우드 읽기와 퍼블리싱 __요약 __질문 11장. ROS에서 차동 구동 로봇 하드웨어 구축과 인터페이스 __기술적 요구 사항 ____소프트웨어 요구 사항 ____네트워크 설정 ____하드웨어 요구 사항 __Remo 로봇 소개: DIY 자율주행 로봇 ____Remo 하드웨어 구성 요소 ____ROS Navigation 스택에 대한 소프트웨어 요구 사항 __차동 구동 로봇을 위한 로우레벨 컨트롤러 및 하이레벨 ROS 컨트롤 하드웨어 인터페이스 개발 ____Remo용 로우레벨 기본 컨트롤러 구현 ____차동 구동 로봇을 위한 ROS 컨트롤 하이레벨 하드웨어 인터페이스 ____Remo 로봇에 대한 ROS 노드 및 토픽 개요 __내비게이션 스택 구성과 작업 ____gmapping 노드 구성과 지도 작성 ____gmapping 노드 작업 ____move_base 노드 구성 ____AMCL 노드 구성 ____AMCL 플래닝 ____시뮬레이션에서 Remo 로봇 작업 __요약 __질문 4부. ROS 고급 프로그래밍 12장. pluginlib, nodelet, Gazebo 플러그인 활용 __기술적 요구 사항 __pluginlib 이해 ____pluginlib을 사용해 계산기 플러그인 구현 __ROS nodelet 이해 ____샘플 nodelet 구현 __Gazebo 플러그인 이해와 생성 ____기본 월드 플러그인 생성 __요약 __질문 13장. ROS 컨트롤러와 시각화 플러그인 __기술적 요구 사항 __ros_control 패키지 이해 ____controller_interface 패키지 __ROS에서 기본 조인트 컨트롤러 작성 ____1단계: 컨트롤러 패키지 생성 ____2단계: 컨트롤러 헤더 파일 작성 ____3단계: 컨트롤러 소스 파일 작성 ____4단계: 컨트롤러 소스 파일에 대한 자세한 설명 ____5단계: 플러그인 디스크립션 파일 작성 ____6단계: package.xml 업데이트 ____7단계: CMakeLists.txt 업데이트 ____8단계: 컨트롤러 빌드 ____9단계: 컨트롤러 구성파일 작성 ____10단계: 컨트롤러의 실행 파일 작성 ____11단계: 가제보에서 7-DOF 팔과 함께 컨트롤러 실행 __RViz 도구와 플러그인 이해 ____디스플레이 패널 ____RViz 툴바 ____뷰 패널 ____타임 패널 ____고정 가능한 패널 __원격 조작을 위한 RViz 플러그인 작성 ____RViz 플러그인 빌드 방법론 __요약 __질문 14장. 매트랩과 시뮬링크에서 ROS 활용 __기술적 요구 사항 __매트랩 시작 __ROS 툴박스와 매트랩 시작 ____ROS 토픽 및 매트랩 콜백 함수로 시작 __매트랩 및 가제보를 활용한 로봇 애플리케이션 개발 __ROS 및 시뮬링크 시작 ____시뮬링크에서 파형 신호 적분기 생성 ____시뮬링크에서 ROS 메시지 퍼블리시 ____시뮬링크에서 ROS 토픽 서브스크라이브 __시뮬링크에서 간단한 제어 시스템 개발 ____시뮬링크 모델 구성 __요약 __질문 15장. 산업용 로봇을 위한 ROS __기술적 요구 사항 __ROS-Industrial 패키지 이해 __ROS-Industrial의 목표 __ROS-Industrial: 간략한 역사 __ROS-Industrial 패키지 설치 ____ROS-Industrial 패키지의 블록 다이어그램 __산업용 로봇 URDF 생성 __산업용 로봇을 위한 MoveIt 구성 생성 __MoveIt 구성파일 업데이트 __유니버셜 로봇 팔을 위한 ROS-Industrial 패키지 설치 __유니버셜 로봇용 ROS 인터페이스 설치 __유니버셜 로봇 팔의 MoveIt 구성 이해 __실제 유니버셜 로봇 하드웨어 및 ROS-I 시작 __ABB 로봇용 MoveIt 구성 __ROS-Industrial 로봇 지원 패키지 이해 __ROS- Industrial 로봇 클라이언트 패키지 __산업용 로봇 클라이언트 노드 설계 __ROS-Industrial 로봇 드라이버 패키지 __MoveIt IKFast 플러그인 이해 __ABB IRB 6640 로봇용 MoveIt IKFast 플러그인 생성 ____MoveIt IKFast 플러그인 개발을 위한 전제 조건 __OpenRave 및 IKFast 모듈 ____MoveIt IKFast ____MoveIt IKFast 패키지 설치 ____우분투 20.04에 OpenRave 설치 __OpenRave로 작업할 로봇의 COLLADA 파일 생성 __IRB 6640 로봇용 IKFast CPP 파일 작성 __MoveIt IKFast 플러그인 생성 __요약 __질문 16장. ROS에서 문제 해결 및 모범 사례 __비주얼 스튜디오 코드에서 ROS 설정 ____비주얼 스튜디오 코드 설치/제거 ____비주얼 스튜디오 코드 시작 ____새 비주얼 스튜디오 코드 익스텐션 설치 ____비주얼 스튜디오 코드 ROS 익스텐션 시작 ____ROS 작업 공간 검사와 구축 ____비주얼 스튜디오 코드를 사용해 ROS 패키지 관리 ____URDF 파일 프리뷰 시각화 __ROS의 모범 사례 ____ROS C++ 코딩 스타일 가이드 __ROS 패키지에 대한 최상의 코딩 방법 __ROS의 중요한 문제 해결 팁 ____roswtf 활용 __요약 __질문 |
Lentin Joseph
|
◈ 이 책에서 다루는 내용 ◈
◆ 7-DOF 로봇 팔과 차동 구동 로봇 모델 생성 ◆ 가제보(Gazebo), 코펠리아심(CoppeliaSim), 위봇(Webots) 로봇 시뮬레이션 활용 ◆ SLAM과 AMCL 패키지를 활용한 차동 구동 로봇의 자율주행 구현 ◆ ROS를 활용한 드론 시뮬레이션과 상호작용 ◆ ROS pluginlib, nodelets, Gazebo 플러그인 개발 ◆ 아두이노 같은 I/O 보드, 로봇 센서, 고급 액추에이터와 인터페이스 ◈ 이 책의 대상 독자 ◈ 이 책은 ROS의 기능을 최대한 활용하고자 하는 열정적인 로봇 개발자나 연구원을 대상으로 한다. 이미 일반적인 로봇공학 애플리케이션에 익숙하거나 ROS 세계에서 고급 방식으로 개발하는 방법을 배우고 로봇을 모델링, 구축, 제어하는 방법을 배우려는 사용자에게 적합하다. 내용을 쉽게 이해하고 싶다면 GNU/리눅스, C++ 프로그래밍에 대한 기본 지식이 필요하다. ◈ 이 책의 구성 ◈ 1장, ‘ROS 소개’에서는 ROS의 핵심 기본 개념을 이해한다. 2장, ‘ROS 기초 프로그래밍’에서는 ROS 패키지 개발 방법을 설명한다. 3장, ‘ROS 3D 모델링’에서는 두 종류의 로봇 설계를 설명한다. 하나는 7 자유도(7-DOF, Degree Of Freedom) 매니퓰레이터(manipulator)고 다른 하나는 차동 구동 로봇(differential drive robot)이다. 4장, ‘ROS와 가제보를 활용한 로봇 시뮬레이션’에서는 가제보에서 로봇 조인트(joint)를 제어하는 데 도움이 되는 7 자유도 매니퓰레이터, 차동 구동 로봇, ROS 컨트롤러의 시뮬레이션을 설명한다. 5장, ‘ROS, 코펠리아심, 위봇을 활용한 로봇 시뮬레이션’에서는 코펠리아심(CoppeliaSim) 및 위봇(Webots) 시뮬레이터를 소개하고, 다양한 타입의 로봇을 시뮬레이션하고 제어하는 방법을 소개한다. 6장, ‘ROS MoveIt!과 내비게이션 스택 활용’에서는 ROS MoveIt!과 내비게이션 스택을 사용해 매니퓰레이팅 및 자율주행과 같이 즉시 활용할 수 있는 기능을 다룬다. 7장, ‘ROS MoveIt!의 고급 기능’에서는 충돌 회피, 3D 센서를 이용한 주변 환경 인지 기능과 물체 잡기 및 선별해 특정 위치에 두기와 같은 ROS MoveIt! 기능을 설명한다. 그런 다음 MoveIt!과 로봇 매니퓰레이터 하드웨어를 인터페이스하는 방법을 살펴본다. 8장, ‘ROS 드론’에서는 쿼드콥터의 사례를 고려해 ROS로 드론을 시뮬레이션하고 제어하는 방법을 설명한다. 9장, ‘ROS와 I/O 보드, 센서, 액추에이터 인터페이스’에서는 센서 및 액츄에이터와 같은 하드웨어 구성 요소를 ROS와 인터페이스하는 방법을 설명한다. 아두이노(Arduino) 또는 라즈베리파이(Raspberry Pi)와 같은 I/O 보드를 사용하는 센서와 ROS의 인터페이스를 살펴본다. 10장, ‘ROS와 OpenCV, PCL을 활용한 비전 센서 프로그래밍’에서는 다양한 비전 센서를 ROS와 인터페이스하고 OpenCV(Open Source Computer Vision) 및 PCL(Point Cloud Library)과 같은 라이브러리를 사용해 프로그래밍하는 방법을 설명한다. 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에서 문제 해결 및 모범 사례’에서는 비주얼 스튜디오 코드(Visual Studio Code) IDE에서 ROS 개발 환경을 설정하는 방법, ROS 최적 실행, ROS 실행 중 발생하는 문제에 대한 해결 방법을 설명한다. ◈ 지은이의 말 ◈ ROS는 전 세계적으로 로봇 애플리케이션을 개발하는 데 사용되는 로봇 미들웨어로, 현재 로봇 회사, 연구 센터, 대학에서 고급 로봇 프로그래밍을 위해 채택하고 있다. 이 책은 ROS 프레임워크의 고급 개념을 알려주고 있어, ROS의 기본 개념에 이미 익숙한 사용자에게 적합하다. 그러나 초심자도 이 책의 예제를 수행할 수 있도록 ROS 개념에 대해서도 간략히 소개한다. 이 책은 새로운 로봇의 생성, 모델링, 설계는 물론, ROS 프레임워크와 시뮬레이션 및 인터페이스 과정을 보여준다. 또한 고급 시뮬레이션 소프트웨어를 사용해 로봇 탐색, 조작, 센서 정교화를 허용하는 ROS 도구를 사용하며 ROS 로우레벨 컨트롤러, nodelet, 플러그인과 같은 중요한 개념을 처리하는 방법을 알아본다. 특별한 하드웨어 요구 사항 없이 표준 컴퓨터만 사용해 책의 거의 모든 예제를 실행할 수 있다. 그러나 일부 장에서는 외부 센서, 액추에이터, I/O 보드와 함께 ROS를 사용하는 방법을 살펴보기 위해 추가 하드웨어 구성 요소가 필요하다. ◈ 옮긴이의 말 ◈ ROS는 오픈소스 프로젝트로 로봇 및 자율주행 차량 개발에 걸리는 시간을 획기적으로 줄여주는 프레임워크다. 개발에 필요한 다양한 문서가 잘 정리돼 공유되고 있다. 이 책은 ROS를 활용한 저자의 개발 경험을 바탕으로 수많은 ROS 문서 중 개발에 꼭 필요한 내용으로 구성됐다는 데에 효용성이 있다. 로봇 기술의 가장 대중적인 오픈소스 프레임워크인 ROS의 기본 개념부터 고급 개념들을 기술하고 오픈소스 하드웨어인 아두이노와 라즈베리파이에 적용할 수 있는 인터페이스를 함께 기술한다. 로보틱스의 대표 연구 주제인 자율주행 로봇과 7-DOF 로봇 팔을 개발하는 데 필요한 내용 대부분을 다룬다. 이를 통해 독자는 다양한 로봇 제어 알고리듬을 자신의 로봇에 구현할 수 있는 능력을 배양할 수 있다. “바퀴의 모양을 새로 발명할 필요는 없다.” 이미 다양한 형태로 구현돼 있는 알고리듬들이 ROS 생태계에 무수히 존재하는데, 이를 이용하지 않고 새롭게 개발할 필요가 있을까? 물론 필요에 따라 새로운 형태를 개발해야 할 수도 있다. 하지만 ‘모방은 창조의 어머니’라는 말이 있듯이 새로운 형태를 개발할 때도 기존 형태를 참고해 분석하는 선행 연구가 필요한 게 사실이다. ROS는 비단 로봇 개발에만 활용되는 것이 아니라 자율주행 차량 및 IoT 등 로봇 기술을 활용하려는 다양한 애플리케이션에 적용할 수 있다. 이 책이 연구자 또는 개발자, 심지어 로봇에 관심 있는 일반인에게도 로봇 개발에 대한 진입 장벽을 낮춰 국내 로봇 연구 개발 환경의 활성화에 조금이라도 이바지했으면 하는 바람이다. |