基于ROS的智能汽车设计与实训教程

基于ROS的智能汽车设计与实训教程"

作者:隋金雪、张锐、邢建平
ISBN:9787302597438
定价:¥59
字数:千字
页数:
出版时间:2022.01.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

本书从全国大学生智能汽车竞赛室外光电组、中国机器人及人工智能大赛无人驾驶竞速组、中国智能机器人大赛ROS无人驾驶竞速车组三个比赛的赛项出发,介绍了历届大赛的规则与演变,分析并讲解了智能车整体的设计与仿真。本书从Linux操作系统基本介绍及其基本操作、基础编程知识以及在Linux环境下ROS的使用方法等讲起,延伸到系统整体的硬件电路设计和软件程序设计、ROS及其安装、使用方法、常用软件和ROS内部通信架构,最后讲解了实现系统所需要的算法及智能车的仿真。

    本书内容通俗易懂,适合对ROS感兴趣或想要参加全国大学生智能汽车竞赛的读者使用。

前言

本书从全国大学生智能车竞赛室外光电组、中国机器人及人工智能大赛无人驾驶竞速组、中国智能机器人大赛ROS无人驾驶竞速车组三个比赛的赛项出发,介绍了历届大赛规则与演变,进而分析并讲解了智能车整体的设计实现与仿真实现。本书得到全国大学生智能车竞赛室外光电组赞助商北京钢铁侠科技有限公司的支持,希望本书能够帮助广大同学勇于投入比赛并取得更好的成绩。

不同于传统讲述ROS的书籍,本书中的案例均与全国大学生智能车竞赛室外光电组对接,仿真部分也适用于另外两大竞赛,实际设计结合理论,使读者知其然,又能知其所以然,从而帮助读者在实际应用中理解并掌握ROS,以便更好地完成智能车设计。

本书旨在帮助广大读者独立完成相对完整的ROS设计及相应专业知识拓展。书中内容均为编者亲身设计经验分析与分享,同时借鉴了其他ROS类教材、ROS社区官网。相较于其他ROS教材,本书内容有更详细的基础知识介绍及分析,适合更广大的读者阅读和学习。

书中未撰写的基础知识还包括最基础的C语言程序设计和对应的数字电路、模拟电路知识,需要读者自行学习掌握,读者应当在实践过程中结合书中提及方法和示例进行ROS的学习。

本书第1章介绍了全国大学生智能车竞赛演变及室外光电组竞赛规则、中国机器人及人工智能大赛和中国智能机器人大赛ROS仿真组的规则; 第2、第3章介绍了ROS的使用环境和语言工具; 第4、第5章介绍了系统的软、硬件实现; 第6~第9章介绍了ROS的基本框架、文件系统、通信架构和常用工具,包含仿真实现的工具; 第10~第12章介绍了设计实现过程中所涉及的算法及ROS软件包。

读者应当结合自身实践,在实践过程中参阅本书,结合书中给出的案例完成实践,在学习后应当可以独立完成智能车的设计制作,并对ROS内容有一定程度的了解与熟悉,后续应当能从事各类机器人开发,尤其是车型机器人。

本书参加编写的人员还有山东工商学院智能控制创新实验室(深蓝工作室)的研究生季永辉、郁添林、沈姒清、相光超和马帅挺等。

本书得到教育部产学合作协同育人合作项目“基于ROS的‘恩智浦杯’无人驾驶智能车竞赛实训课程建设”(项目编号: 201902016024)的项目支持,合作单位为北京钢铁侠科技有限公司,再次对合作单位的支持表示感谢!

鉴于编者水平有限,书中难免存在疏漏之处,恳望读者提出宝贵建议和意见,最后感谢读者阅读本书!

编者2021年8月

目录

第1章竞赛规则介绍

1.1竞赛与规则

1.1.1竞赛发展历史

1.1.2竞赛规则

1.2赛事变化

第2章Linux基础介绍

2.1Linux简介

2.1.1操作系统概述

2.1.2Linux的由来

2.1.3Linux的发展历程

2.1.4Linux核心概念 

2.1.5Linux系统组成

2.1.6Linux的应用领域 

2.1.7Linux版本的选择

2.2结构

2.3用户管理

2.3.1Linux用户和用户组管理

2.3.2Linux系统用户账号的管理

2.3.3Linux系统用户组的管理

2.3.4与用户账号有关的系统文件

2.3.5拥有账户文件

2.4文件管理

2.4.1Linux文件与管理

2.4.2处理的常用命令

2.4.3Linux 文件内容查看

2.5文本编辑

2.5.1Linux vi/vim

2.5.2vim概念

2.5.3vi/vim的使用

2.5.4vi/vim 使用实例

第3章编程基础介绍

3.1语言基础

3.1.1C++语言基础知识

3.1.2Python语言基础知识

3.2数据结构

3.2.1C++ 数据结构

3.2.2Python数据结构

第4章驱动板硬件电路设计

4.1供电模块电路设计

4.1.1电源电路

4.1.2计算机供电及电量显示电路

4.1.3路由器供电电路

4.1.4雷达供电电路

4.1.5单片机供电电路

4.1.6电源指示灯电路

4.2电机舵机驱动电路设计

4.3通信模块电路设计

4.3.1驱动板与计算机通信电路

4.3.2雷达与计算机通信电路

4.4PCB电路板设计

4.4.1Altium Designer介绍

4.4.2AD新建工程

4.4.3PCB设计整体流程

4.4.4PCB布局基本原则

4.4.5布局的基本顺序

4.4.6特殊元器件的布局

4.4.7PCB常用快捷键

4.4.8比赛用PCB

第5章驱动板软件程序设计

5.1软件相关知识介绍

5.1.1Keil介绍

5.1.2开发流程

5.1.3软件编译流程

5.1.4软件运行模式

5.1.5K60简介

5.2信号处理与执行

5.2.1UART概述

5.2.2UART定义

5.2.3UART功能

5.2.4UART通信协议

5.2.5基本参数

5.2.6PWM概述

5.2.7PWM相关概念

5.2.8PWM控制的基本原理

5.2.9PWM技术的具体应用

5.2.10模拟电路

5.2.11数字控制

5.2.12硬件控制器

5.2.13通信与控制

5.3程序编写

5.3.1主程序

5.3.2UART接收程序

5.3.3延时初始化程序

5.3.4GPIO快速初始化程序

5.3.5串口快速配置程序

5.3.6注册接收中断回调程序

5.3.7配置UART模块的中断或DMA属性

5.3.8快速配置初始化FTM模块实现PWM功能

5.3.9更改指定引脚的PWM波形占空比

第6章ROS基本知识

6.1ROS简介

6.1.1ROS概况

6.1.2ROS的历史

6.1.3ROS主要发行版本

6.1.4ROS的特点

6.1.5ROS的功能

6.2ROS安装

6.2.1创建新的虚拟机并安装Ubuntu操作系统

6.2.2在Ubuntu操作系统中安装VMware Tools

6.2.3在Ubuntu操作系统中设置下载的云服务器

6.2.4在Ubuntu操作系统中安装ROS Kinetic

6.2.5将ROS中的软件gazebo 7.0升级为7.16

6.3RoboWare Studio

6.3.1安装RoboWare Studio

6.3.2RoboWare Studio的使用教程

第7章ROS文件系统

7.1Catkin编译系统

7.1.1Catkin编译系统的由来

7.1.2Catkin编译条件和Catkin的特点

7.1.3Catkin的工作原理

7.2Catkin工作空间

7.2.1Catkin工作空间介绍

7.2.2创建Catkin工作空间

7.2.3编译工作空间

7.2.4设置和检查环境变量

7.3package软件包

7.3.1package基本概况

7.3.2package中的CMakeLists.txt和package.xml文件

7.3.3创建package

7.4Metapackage软件元包

7.4.1Metapackage基本概况

7.4.2建立自己的Metapackage

7.4.3创建一个hello_world来测试Metapackage

第8章ROS通信架构

8.1主题

8.1.1Node & Master

8.1.2启动Master和Node

8.1.3launch文件 

8.1.4Topic

8.1.5Message

8.2服务

8.2.1工作原理

8.2.2srv文件

8.3动作

8.4参数

8.5信息通信过程

8.5.1运行主节点

8.5.2运行订阅者节点

8.5.3运行发布者节点

8.5.4通知发布者信息

8.5.5订阅者节点的连接请求

8.5.6发布者节点的连接响应

8.5.7TCPROS连接

8.5.8发送消息

8.5.9服务请求及响应

8.5.10目标、结果和反馈动作(Action)

第9章ROS常用工具

9.1Gazebo

9.1.1Gazebo的功能

9.1.2Gazebo的特点

9.1.3Gazebo用户界面

9.1.4link详细属性说明

9.1.5joint详细属性说明

9.1.6使用Gazebo创建一个机器人模型

9.2RViz

9.2.1安装并运行RViz

9.2.2数据可视化

9.2.3插件拓展机制

9.2.4插件说明

9.2.5视图面板

9.2.6统一机器人描述格式——urdf

9.3RQt

9.3.1RQt的概念

9.3.2RQt的结构与优点

9.3.3创建RQt插件包的步骤

9.3.4RQt内置插件

9.3.5节点

9.3.6TF树

9.3.7rqt_launch

9.4rosbag

9.4.1rosbag简介

9.4.2bag 包

9.4.3rosbag命令

9.4.4rosbag迁移

9.5rosbridge

9.5.1rosbridge 协议

9.5.2rosbridge 实现

9.5.3rosbridge的节点说明

9.5.4rosbridge library

9.5.5rosapi 

9.5.6rosbridge server

第10章SLAM算法

10.1SLAM基础

10.1.1SLAM简介

10.1.2SLAM目前的应用

10.1.3SLAM框架

10.2Gmapping功能应用

10.2.1Gmapping SLAM软件包

10.2.2Gmapping SLAM计算图

10.2.3里程计误差及修正

10.2.4服务

10.2.5参数

10.3仿真实例

10.3.1利用gmapping构建环境地图

10.3.2创建地图

10.3.3利用rosbag记录数据

10.4拓展知识

第11章Navigation算法

11.1Navigation介绍

11.1.1Navigation Stack

11.1.2Navigation框架介绍

11.2move_base结构

11.2.1move_base

11.2.2插件文件的参数配置及修改

11.3costmap

11.4AMCL

11.5仿真实例

11.6ROS导航调整指南

11.6.1准备阶段

11.6.2代价地图

11.6.3局部规划器

第12章TEB轨迹规划算法

12.1阿克曼角模型

12.1.1阿克曼角概念

12.1.2ROS中的阿克曼角模型应用

12.1.3拓展知识——实际汽车中存在的“阿克曼角现象”

12.2teb_local_planner

12.2.1teb_local_planner总览

12.2.2节点API

12.2.3TEB算法避障和模型

12.2.4TEB全向车型路径规划

12.2.5TEB参数调整经验

12.3TEB算法使用运行过程中出现的问题与相应的解决方法

12.3.1机器人导航太靠近墙壁或切角

12.3.2机器人不能正确地遵循全局规划

12.3.3机器人路径规划出现问题

12.3.4当目标姿态出现在机器人当前位置时机器人需要切换方向

12.4代码解析实例

12.53种常用局部路径规划方法对比

参考文献

作者简介

编辑推荐

智能机器人是我国"十三五"期间的重大科研方向和热点应用领域,在高等院校相关专业中,其教学资源建设和教学改革实践方兴未艾。本书将机器人的制作与设计融入到无人驾驶智能车中,成为大学生机器人工程教育和创新教育的良好的实践平台。

作者寄语

电子资料

www.luweidong.cn

下一个