【ROS】详细讲解:800元打造一个SLAM小机器人(1)【硬件篇】


首先声明本次Project Credit To   WordPress Sunjik, 在硬件选择上和部分代码基本参考了sungjik。

这里权当是对sungjik的项目的一个实践和转译,加上自己的一些心得。


首先来看需要的硬件清单:


1. Arduino Mega 2560 + Adafruit MotorShield V2.0


需求分析: 

我们首先需要一个能用电脑控制DC Motor的板子,这个板子能连接电脑也能连接Motor,并且最好能很方便的进行编程。Arduino无疑是个很好的选择。虽然不见得是便宜的方案,但考虑到要和ROS进行数据交互,而ROS有个很方便使用的rosserial库能直接做到和ROS和Arduino之间的通信,因此Arduino乃不二选择。另外为了驱动Motor我们需要装Aruidno上的驱动板,这里选用的型号是Adafruit MotorShield V2.0,用起来简单方便。


Note:

 只是在购买Arduino时发现网上大部分给的都是UNO这种型号。这里也是在sungjik的博客中没有说得太明白的一点,也是让我卡住了很久的一点。不得不说卡在硬件接口上的问解决起来真的比代码编程要烦许多,因为这些问题很多时候并没有好的调试方法。 博主一开始选用的Arduino UNO,看似一切工作正常,只是在烧到Arduino板子上时显示动态内存占用了95%,出现的问题是Motor只能以一个初始化的转速转动,实时调节PWM并不能改变转速。这里博主尝试了很多方法都没有解决这个问题,最后考虑到内存占用量也过大,就直接换了计算能力和内存量都更大的Arduino Mega 2560,Problem solved。

【ROS】详细讲解:800元打造一个SLAM小机器人(1)【硬件篇】_第1张图片



2.DC Motor

需求分析:

Motor的选择上需要注意的是,首先我们需要做闭环的PID控制,也意味着需要反馈,即实际转速。另一方面之后的里程计(Odometry)的发布也需要实际转速信息,所以我们需要一个有编码器的Motor。这里Motor直接的淘宝了平衡小车之家的带编码器的直流电机和轮胎。


Note:

值得注意的是最好是买一个自带编码器(encoder)的电机,不然买了一个裸电机再去装编码盘会比较麻烦。博主一开始就买了个没带编码器的,发现不能反馈转速。这里编码器的作用主要是利用AB两级的相位差来计算电机的实际转速。

                                    【ROS】详细讲解:800元打造一个SLAM小机器人(1)【硬件篇】_第2张图片

                                                                                             (带编码器的Motor)


3.微软Kinect

需求分析:

作为SLAM的RangeFinder Sensor,激光雷达(LiDAR)精准,但是太贵(买个便宜的也得800),声纳(Sonar)便宜但噪音又太大。用图像来当测距传感器则是一个折中的好办法,另外有了图像摄入我们也能在SLAM之外后续添加一些基于图像与视觉的功能。在博主看来比较适合的摄像头有两个, 微软的Kinect和 因特尔的 RealSense。纠结了一阵,RealSense 在面部识别什么的功能上更强大点,但为了控制成本还是选择了Kinect(一代),在咸鱼买了个二手的价格500元。Note:Kinect 在使用中有一个小麻烦的地方,就是用其本身是需要差插座充电的,这很大的限制了小车的移动性。根据ROS 官网上提供的方案,需要把适配器的一段减掉,然后可用3S电供电。 具体见 点击打开链接。这个Tutorial里说由于Kinect是12V的参考电压供电所以要自己做一个regulator,(3S电池一般是11.1V),而sungjik也用了一个DC-DC converter,而博主想偷个懒直接用11.1v的3S电池黑Kinect供电,发现并没有问题。 剪线效果如下:(这里注意绝缘胶带分辨缠两极线,不要直接缠在一起了)

【ROS】详细讲解:800元打造一个SLAM小机器人(1)【硬件篇】_第3张图片【ROS】详细讲解:800元打造一个SLAM小机器人(1)【硬件篇】_第4张图片



4.两台装有Ubuntu 14.04 和 ROS (包括Gmapping package)的笔记本。

这里是推荐两台,一台用于远程控制和查看实时图像和地图信息,另一台放在小车上跑用于连接和管理各个硬件单元。



5.安卓手机

 调用手机的Gyroscope传感器,在安卓手机里装一款叫HyperIMU的软件,可以很方便的将手机中的Gyroscope的数据信息I以UDP的格式发布到WIFI网络, 然后将笔记本设置到同一子网接收到数据后就能用ROS来Publish和Subscribe了。这里因为博主自己参考的sungjik的方案,并且自己也是安卓手机,对于苹果手机的发布方案暂时不详。Note:HyperIMU 这个软件似乎在国内手机市场上下不到,博主是用GooglePlay下的。


6.3S 电池两个

一个用来给Arduino驱动马达供电,一个给Kinect供电。

【ROS】详细讲解:800元打造一个SLAM小机器人(1)【硬件篇】_第5张图片


7.关于小车的Frame

和在装修市场买了两大块双层实木板,到朋友在湖南大学实验室的小工坊里规划了下尺寸裁锯了木板,然后朋友灵性想到用长螺钉加上螺帽打孔后支撑第二层,结构如下图。一起制作的过程其实挺有趣的, so much fun.

【ROS】详细讲解:800元打造一个SLAM小机器人(1)【硬件篇】_第6张图片【ROS】详细讲解:800元打造一个SLAM小机器人(1)【硬件篇】_第7张图片

【ROS】详细讲解:800元打造一个SLAM小机器人(1)【硬件篇】_第8张图片【ROS】详细讲解:800元打造一个SLAM小机器人(1)【硬件篇】_第9张图片




你可能感兴趣的:(【ROS】详细讲解:800元打造一个SLAM小机器人(1)【硬件篇】)