
由于目前无人驾驶学习成本较高,使得很多对无人驾驶感兴趣的初学者望而却步。本书基于开源的机器人操作系统(Robot Operating System,ROS),设计了一款开源的无人驾驶平台。书中针对初学者引入了ROS的基础框架,对开发工具、通信协议、功能包的应用等进行了介绍,帮助初学者尽快上手。针对有一定基础的人群,涉及了URDF建模、传感器使用和数据融合方法等内容。 本书从ROS基础、车辆建模基础、控制基础到传感器基础实验和数据融合,将涉及的每个知识点详细拆分讲解,涵盖多个实验案例,并且为所有代码提供了详细的注解,以从根本上满足读者的需求。
前言 北京钢铁侠科技有限公司从2015年开始研发移动机器人,包含腿式、轮式和轮腿变构三大类的产品。近10年的研发经验,让公司研发团队深深感悟到:对于无人系统,感知智能是让各类移动机器人产品走向实用化最重要的环节。 以无人驾驶车辆为例,出现所有交通事故的根源是感知不够智能。在机器人系统组成中,都是根据传感器获得内部姿态和外部环境信息的。但获得的信息,可能不准确,或者不能被机器人准确理解,从而增加了无人系统产生事故的风险。感知智能,正是让无人系统获得自主进行数据融合或修正的能力,进而获得系统需要的、更加准确的信息。 通过以上论述可以看出,感知智能包含两大部分:一部分是传感,让无人系统获取传感器的信息;另一部分是智能,让无人系统对传感器信息进行数据融合与状态估计,以获得更加适合的信息。然而,看似简单清晰的解决办法,却充满了挑战,目前还没有形成公认的最佳方案。无人驾驶感知智能的人才培养和工程实现还有很长的路要走。 在过去的8年里,全国有超过500所大学与北京钢铁侠科技有限公司(简称“钢铁侠科技”)进行过产学研项目合作。清华大学、北京理工大学、北京航空航天大学、山东大学、吉林大学等都是钢铁侠科技非常深入的合作伙伴。很多学校希望钢铁侠科技通过新兴的产业技术,为学校提供最新的教学平台,助力学校的科研教学和人才培养。可是受场地空间和科研平台成本的限制,很多学校尚未开展无人驾驶相关的教学和科研工作。为了解决这一困难,钢铁侠科技结合自身多年研发经验,推出了无人驾驶模拟沙盘和ArtTable感知智能实验平台,旨在让开发者以最少的投入掌握无人驾驶感知智能基本理论和实现方法,为日后工程开发打好知识和技能基础。 本书通过讲解ROS基础框架、开发工具、通信协议、功能包使用等知识,介绍无人驾驶主流传感器的使用,配合具体的例子,使读者可以快速理解无人驾驶传感设备的使用方法和感知智能的实现路径。 本书编委会由钢铁侠科技北京和青岛两地的研发团队组成,同时吸纳了全国数十位大学老师的建议。希望通过自己的微薄之力,帮助科研工作者、高校教师及相关专业学生,快速理解无人驾驶相关理论基础及实践方法,推进我国无人驾驶和智能机器人事业的快速发展。由于编者能力有限,书中难免有不足之处,烦请读者批评指正。 值此《无人驾驶感知智能》付诸出版之际,感谢公司研发团队的辛勤付出,感谢电子工业出版社张迪等老师的悉心指导,感谢以各种形式帮助我们的朋友们。钢铁侠科技向各位致以深深的谢意。 北京钢铁侠科技有限公司 2023年1月29日
目录 第1章 绪论 1 1.1 无人驾驶国内外现状 1 1.1.1 国内研究现状 1 1.1.2 国外研究现状 4 1.2 感知智能研究现状 6 1.2.1 软件层面 6 1.2.2 硬件层面 7 1.3 感知智能系统的组成 12 1.3.1 介绍 12 1.3.2 意义 12 1.3.3 感知对象 14 1.4 面临的困难和挑战 14 1.5 基于ROS的无人驾驶技术 16 第2章 ROS基础 19 2.1 ROS的工程结构 19 2.1.1 工作空间(catkin workspace) 20 2.1.2 功能包(package) 20 2.1.3 文件类型 21 2.2 ROS通信原理 22 2.2.1 话题通信模型 23 2.2.2 服务通信模型 24 2.2.3 动作通信模型 24 2.2.4 ROS通信总结 25 2.3 实验操作 25 2.3.1 实验一 工作空间与功能包创建 25 2.3.2 实验二 ROS通信原理实验 28 第3章 ArtTable框架 37 3.1 ArtTable框架介绍 37 3.2 ArtTable框架使用 39 3.2.1 Simulation(仿真模拟)功能 39 3.2.2 LEDControl(LED状态控制)功能 40 3.2.3 MoveControl(运动学控制)功能 42 3.2.4 Gmapping(地图构建)功能 43 第4章 超声波传感器 46 4.1 超声波传感器分类 46 4.2 常用超声波传感器HC-SR04 47 4.2.1 参数特征 47 4.2.2 工作原理 47 4.2.3 使用方法 48 4.3 超声波传感器ROS驱动 54 4.4 超声波传感器ROS通信数据分析 57 4.4.1 启动超声波传感器ROS程序 57 4.4.2 查看超声波传感器ROS节点数据 57 第5章 编码器传感器 61 5.1 编码器分类 61 5.1.1 增量型 61 5.1.2 绝对值型 63 5.1.3 混合型 63 5.2 常用编码器E6B2-CWZ6C 64 5.2.1 参数特征 64 5.2.2 工作原理 65 5.2.3 使用方法 66 5.3 编码器ROS驱动 69 5.4 编码器ROS通信数据分析 79 5.4.1 启动编码器ROS节点程序 79 5.4.2 查看传感器节点数据 79 第6章 惯性传感器 85 6.1 惯性传感器分类 85 6.1.1 角速度陀螺仪 86 6.1.2 线加速度计 86 6.2 常用惯性传感器9DoF Razor IMU 88 6.2.1 参数特征 90 6.2.2 工作原理 91 6.2.3 使用方法 91 6.3 惯性传感器ROS驱动 116 6.4 惯性传感器ROS通信数据分析 117 6.4.1 rotopic查看ROS驱动发布话题 118 6.4.2 分析话题数据imu_data 119 第7章 视觉传感器 121 7.1 视觉传感器分类 121 7.2 常用视觉传感器 122 7.2.1 参数特征 122 7.2.2 工作原理 123 7.2.3 使用方法 123 7.3 视觉传感器ROS通信驱动 134 第8章 雷达 144 8.1 雷达种类 144 8.1.1 激光雷达概述 144 8.1.2 激光雷达分类 147 8.2 常用激光雷达 152 8.2.1 参数特征 152 8.2.2 工作原理 153 8.2.3 使用方法 154 8.3 激光雷达ROS通信驱动 158 8.4 激光雷达ROS通信数据分析 195 第9章 基于ROS的卡尔曼滤波 198 9.1 robot_pose_ekf简介 198 9.2 如何使用扩展卡尔曼滤波器 198 9.2.1 配置 198 9.2.2 编译并运行包 199 9.3 节点解析 199 9.4 扩展卡尔曼滤波器如何工作 200 第10章 基于ROS的状态估计 202 10.1 robot_localization介绍 202 10.2 robot_localization特征 203 10.3 robot_localization状态估计节点 203 10.3.1 ekf_localization_node 203 10.3.2 ukf_localization_node 203 10.3.3 参数 203 10.4 准备数据 210 10.4.1 RO数据标准 210 10.4.2 坐标系和转换传感器数据 210 10.4.3 处理tf_prefix 211 10.4.4 每种传感器消息类型的注意事项 211 10.4.5 常见错误 212 10.5 robot_localization配置 213 10.5.1 传感器配置 213 10.5.2 以2D运行 213 10.5.3 融合不可测变量 214 10.5.4 微分和相对参数 215