本教程主要分享自己在制作自主导航小车的过程,本教程计划分为4章节来讲。第一章节分析自主导航小车的硬件结构,介绍自主导航小车的硬件系统。第二、三章介绍自主导航小车的软件框架与实际配置步骤。第四章对工作进行总结,并对后续工作进行一下规划。

0、背景

本文以先锋机器人为例(如下图所示),先锋机器人的驱动包可以参考这篇博客。我们使用的系统是Ubuntu16.04 ROS Kinectic。首先确保你所使用的机器人的驱动和ROS系统已经装好了。也就是说机器人可以通过ROS包接收 /cmd_vel topic的数据实现速度和角速度控制。我们使用的代码是在现有的开源包基础上搭建的,后续我们计划在其他的机器人实现自主导航。(如Autolabor底盘)

1、自主导航小车硬件结构

如图1-1所示,自主导航小车硬件主要可分为电源系统、运动底盘、传感器、工控机。传感器单元与工控机通过以太网或者USB连接,传感器将环境数据传入到工控机中供SLAM算法使用,工控机通过串口与运动底盘通讯,实时控制底盘运动。路由器提供局域网环境,方便从机电脑远程连上小车的工控机上调试或者连接服务器提供其他服务(人脸识别、人体识别等)。这里我们使用mini-PC作为工控机,这是由于我们只是用了一个2D激光雷达实现导航,计算量不大,若你需要使用3D激光和视觉,推荐使用Intel的NUC作为工控或者研旭用在无人驾驶上的工控机。

1.1 电源系统:

自主导航小车的电源系统主要是为各传感器和工控机提供电源,通常而言电源系统需要对外提供19V、12V、5V电源接口,管理电池的充放电,电池状态显示登。工控机一般使用19V/3A电源,工业路由器一般使用12V/1A电源、传感器一般为5V或者是12V。
由于先锋机器人底盘上用的是12V的铅酸电池,电池管理系统放在底盘里面了,因此我们需要从底盘上接出一根电源线(12V),再利用DC-DC电源转换到19V、12V、5V,供传感器和工控机使用。我将购买链接放在了下方。[1] [2] [3]
注:若你的底盘是24V的电池或者48V电池,则需要选择对于的DC-DC变换电源

这里我将输入端全部连接到了一起:

1.2导航模块:

自主导航小车根据功能可添加各种传感器(单目、双目、RGB-D、2D激光、3D激光、毫米波雷达),这些传感器的作用主要是用来定位和建图的,也就是SLAM。通常IMU、相机、2D激光这类传感器是直接通过USB连接到工控机上的,而3D激光雷达通常使用以太网接口与工控机相连接。
在这里我们只使用了思岚的rplidar A3激光雷达作为定位和建图的传感器,北通的遥控手柄作为辅助控制手段,控制底盘。这里激光雷达、遥控手柄、底盘接口都是使用的USB口连接的,因此我们使用了一个USB集线器,在连接到miniPC上。SLAM建图算法可以选择Gmapping、Hector、Cartegrap作为2D地图构建算法使用。

1.3主从机通信网络

设置局域网是为了方便后续的上层应用开发,例如在自动巡检小车中,需要实现任务规划、定点巡逻、人脸识别、对话问询等功能,这些服务非常占用计算资源,因此需要将其放在服务器上运行。此外在调试机器人的时候我们也需要使用笔记本远程连上工控机调试代码,而不是给车安装一个显示屏,跟着车跑。
我们使用的是一个千兆的Tp-link的路由器,设置网段为192.168.1.1, 工控机(mini PC)的IP是192.168.1.101

1.4 机器人底盘制作

机器人底盘的制作涉及了更多的硬件和机械的知识,占时不自己制作底盘。对于控制来讲(以我们常用的差速底盘为例)一般有左右两个电机,我们需要接受上位机下发的速度和角速度指令,根据底盘的运动学模型将指令转化成控制电机的脉冲或者是占空比数据。这其中设计到底盘的运用学模型的问题,我们展示放在后续来添加上去。

最后再附上一张整体装配好的图:

欢迎做自主导航小车的小伙伴一起讨论,cenruping@vip.qq.com

下一篇: 自主导航小车实践(二)

自主导航小车实践(一)相关推荐

  1. 自主导航小车实践(二)

    这一部分中我们首先介绍自主导航小车的软件框架,随后介绍每一个部分的配置过程.(本章节主要分析自主导航小车的算法框架,文字表述较大,希望大家耐心读完!) 2.1 整体分析 实现自主导航小车一般分为三个部 ...

  2. 自主导航小车实践(三)

    在上一篇博客中我们实现了遥控手柄控制先锋机器人移动,同时使用机器人自身携带的激光雷达进行地图扫描.在这一篇博客中我们将利用扫描到的地图进行导航以及路径规划.这里主要涉及map_server包.AMCL ...

  3. 自主导航小车实践(四)

    2.6自启动脚本问题 首先我们延续之前的教程,我们将启动所有ROS节点的命令放在一个自启动脚本中,让Ubuntu开机自动运行,在Ubuntu中有两种方式可以实现自启动脚本的功能. 第1种 ubuntu ...

  4. 开源自主导航小车MickX4(十)总结

    开源自主导航小车MickX4(十)总结 1 博客回顾 2 存在问题 3 学习建议 4 后续计划 在 开源自主导航小车MickX4 这个系列教程中,我们一共分为了十个博客部分进行了讲解差速小车的导航.由 ...

  5. 开源自主导航小车MickX4(五)gmapping建图

    开源自主导航小车MickX4(五)gmapping建图 1 激光雷达驱动 2 3D点云到2D点云的转换 3 gmapping 建图 3.1 安装 gmapping库 3.2 配置 gmapping 3 ...

  6. ROS小车实践记录(一)

    小车实践 ROS小车 一.开发环境搭建(Jeston Nano平台) 二.ROS分布式组网(Jeston Nano平台) ROS小车 学习ROS小车相关的ROS基础教程,以及相关进阶课程,本系列文章作 ...

  7. 开源自主导航小车MickX4(一)ROS底盘硬件

    开源自主导航小车MickX4 1 ROS底盘电气系统 1.1 底盘机械组装 1.2 底盘硬件框图 1.3 电气系统搭建 2 差速底盘运动学模型 参考资料 在学习ROS的阶段我们使用的都是标准的ROS底 ...

  8. 开源自主导航小车MickX4(三)底盘ROS节点

    开源自主导航小车MickX4(三)底盘ROS节点 1.底盘ROS节点 1.1 ROS节点功能定义 1.2 接收cmd_vel话题数据 1.3 发布里程计数据 1.4 发布IMU数据 1.5 发布超声波 ...

  9. 开源自主导航小车MickX4(七)cartographer 室外3D建图

    开源自主导航小车MickX4(七)cartographer 室外3D建图 1 cartographer 3D建图demo 1.1 cartographer 安装 1.2 3D数据集建图 1.3 3D定 ...

最新文章

  1. (0079)iOS开发之安全策略之HTTPS(2)
  2. ngnix mysql 缓存清除_利用Proxy Cache使Nginx对静态资源进行缓存
  3. wordpress上传主题错误解决方法
  4. c hello world
  5. Unix环境高级编程学习笔记(二)
  6. 【深度学习】有效防止过拟合
  7. css实现圆球旋像水波波动_66 个超有用的CSS 特效!
  8. 收藏丨8个常用中文OCR数据集,附下载链接
  9. windows 运行库与dll文件
  10. 一起来全面解析5G网络领域最关键的十大技术
  11. 星际萤火|人民日报:IPFS将带来无盗版网络时代?
  12. C语言猜数字游戏及关机程序
  13. C++ BMP转JPG方法三
  14. MATLAB做三维图时值为0的点不画出来
  15. Shadow SSDT
  16. 领英1度2度3度是什么意思,如何突破领英好友人脉限制
  17. Orcad与PADS交互设计技巧一
  18. oracle中怎么跳出循环,oracle 跳出循环方法
  19. Linux rpm 命令 【转】
  20. 嵌入式设计---(1)嵌入式系统基础

热门文章

  1. 吃饭只吃5分饱,生活才会很美好
  2. 洛谷 P1008 三连击 题解
  3. 洛谷 - P1008 [NOIP1998 普及组] 三连击 [Java版]
  4. Python爬虫 抓取大数据岗位招聘信息(51job为例)
  5. iOS二维码扫描/识别
  6. 织梦banner图后台添加
  7. 软件测试网课笔记(持续更新)
  8. 线上宠物销售系统的设计与实现
  9. IDC机房网络系列视频
  10. 微软出手,干翻 IDEA?网友:先干翻 Eclipse 吧