【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。





2.DC Motor

需求分析:

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


Note:

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

                                    

                                                                                             (带编码器的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供电,发现并没有问题。 剪线效果如下:(这里注意绝缘胶带分辨缠两极线,不要直接缠在一起了)




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供电。



7.关于小车的Frame

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





  • 13
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 自己动手制作一台SLAM导航机器人是一项非常具有挑战性的项目,需要一定的机械、电子、计算机编程等综合技能。首先需要设计机器人的整体结构,包括底盘、轮子、控制电路等等,并进行适当的加工和组装。 其次,机器人需要配备激光雷达、相机等传感器,以获取周围环境的数据,并使用SLAM算法实现地图构建和自主导航。这涉及到深度学习、计算机视觉等技术的应用,需要有一定的专业知识和实践经验。 最后,机器人的控制和调试也是项目中非常关键的一步。需要机器人的控制器编程,以实现自主导航、避障等功能,并不断对其进行调试,使其性能最优化。 自己动手制作一台SLAM导航机器人是一项极具挑战性的任务,但也会带来非常有趣和有意义的经历。能够通过自己的努力和创造力,实现一个自主导航机器人,不仅是一种技术上的成就,更体现了自己不懈追求的精神和自我超越的力量。 ### 回答2: 自己动手做一台SLAM导航机器人需要一定的相关知识和技能,并且需要进行步骤繁琐的操作。首先需要了解SLAM技术原理、机器人硬件结构、编程语言和相关软件等基础知识。其次需要所需的硬件器材,包括一个基于ROS系统的移动底盘、LIDAR传感器、IMU传感器、控制器、电源和其他所需材料。接着需要进行硬件组装和连接,把所有的硬件器材和传感器按照设计要求进行组装和连接。 接下来需要完成编程部分,对机器人进行代码编写和程序调试。编程需要涉及ROS系统、C++等多种编程语言,需要进行程序设计、实现、调试,以确保机器人顺利工作,并能实现SLAM导航功能。此外,还需要进行传感器校准,以确保机器人获取到的传感器数据准确无误。 最后,需要进行实地测试和调试,检验机器人的导航、避障等功能是否正常运作。整个过程复杂繁琐,需要耗费大量时间和精力。自己动手做一台SLAM导航机器人可以锻炼自己的技能和动手能力,同时也可以满足个人的爱好和需求,但需要投入足够的精力和耐心。 ### 回答3: 建造一台 slam 导航机器人需要计划、材料和技能。首先,您需要确定您的机器人将运行的环境类型,并为其选择合适的传感器和控制器。一般来说,您需要使用激光雷达扫描环境,并安装摄像头和微控制器等设备以控制机器人的运动。其次,您需要设计、打印或制造机器人的外壳,并组装电气件和机器人控制器。最后,您需要编写软件以使机器人能够感知其环境、规划路径并导航至目标。 然而,这并不是一项简单的任务。要建造高效的 slam 导航机器人需要一定的电子、机械和编程技能。因此,新手建议始于初级项目,例如制造追踪线的机器人或机械臂。这些项目将帮助您熟悉机器人技术,同时也提高了您的技能和信心,为进一步建造 slam 导航机器人做好准备。 如果您决定 DIY 一台 slam 导航机器人,提前做好计划和准备工作很重要。购正确的材料、学习机器人编程和构建的技能,是这个过程中最关键的部分。当您完成了这个项目时,您将拥有一台能够感知、规划和导航的机器人,并且这个项目还能提高您的技能并激发您的创造力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值