【大一立项】如何亲手搭建ROS小车:硬件和软件介绍

本次博客将详细介绍上篇博客中提到的ROS小车的硬件和软件部分。
由于十一实验室不开门,所以部分代码还没有上传到Github。

下位机

下位机使用Arduino(因为大一上刚学完用Arduino做循迹小车),其实Arduino作为ROS小车的下位机已经够用了,毕竟主要功能都是在上位机上跑的。

在这里推荐使用Arduino mega2560,具有6路中断,以后想做3轮小车也可以使用。淘宝50~300元左右:
在这里插入图片描述
在这里插入图片描述至于选择正版还是盗版那就仁者见仁智者见智了,我买的正版,因为感觉正版稳定一点,而且可以报销。

Arduino主要作用是读取编码器信息传给树莓派,并且接受树莓派的速度信息提供L298N驱动电机。我做的小车有点重,感觉快赶上小型AGV了,电机功率也相应很大,所以找到一款大概的L298N:
在这里插入图片描述
代码部分可参考Github上的项目ros_arduino_bridge自行修改,大概修改部分有端口和PID个数等,因为电机原因,如果对两个电机都用同一个PID可能会导致走不了直线。当然也可以参考我的Github:Magical-E(后期会把PC、树莓派、Nano的代码都放上去)。

代码主要架构为通过串口通讯树莓派和Arduino互相发送字符串来获取信息,大家可以自己看看,很简单的。

上位机

树莓派

最开始是单纯打算用树莓派+Arduino做的,但后来发现树莓派性能有点差,就用的PC跑SLAM和导航,又想用深度摄像头玩目标检测和VSLAM,就买了个Jetson Nano。三个设备通过ROS_IP进行主从机通信。相关教程以ROS主从机通讯为关键词百度就行。在主从机通讯过程中要记得同步时间,不然有些包会报错,推荐使用ntp来同步时间。

树莓派的主要功能就是通过和Arduino串口通讯获得编码器信息,然后将编码器积分并发布Odom(发布功能在ros_arduino_brdige中实现)。但是由于编码器积分会存在累计误差,所以我还加入了IMU来和Odom扩展卡尔曼滤波来优化位姿信息(在robot_pose_ekf中实现)。具体方法是在ros_arduino_bridge中把Odom的发布取消,并加入一组协方差及判断,然后将IMU信息的topic映射到robot_pose_ekf所需要的话题即可发布新的话题odom_combined。实现效果为机器人走直线的时候主要依赖编码器,转弯时主要依赖IMU。

我使用的IMU是GY951,是ROS小课堂群主推荐的,使用串口通讯协议,可以直接通过USB转TTL模块插在树莓派上,而不是还要加个Arduino之类的处理数据。
在这里插入图片描述
在这里插入图片描述而且碰巧的是它和某品牌出品的IMU芯片一样(手动滑稽),所以可以直接用某品牌的代码来处理数据。GitHub地址,具体操作参考ROS小课堂公众号。

树莓派端的其他功能还有:手柄控制、激光雷达驱动,这些功能百度能很快找到操作步骤,在此就不一一介绍了。只介绍一下我使用的激光雷达和手柄:
在这里插入图片描述
在这里插入图片描述激光雷达使用思岚的rplidar A1,是ROS小车中经常使用的廉价激光雷达。手柄使用罗技的F710,大佬们都用这款,说能用很多年。两个都在ROS中有相关的驱动包。

Jetson Nano

大概是三月份左右Jetson Nano发售了,大家都很激动,我也趁搞立项买了一个?

板子的功能还算强大,具体参数参考淘宝。

Jetson Nano端实现的功能有:驱动深度摄像头、KCF跟踪、YOLO检测。因为时间有限,还有太多想实现的地方没能实现?

使用的深度摄像头是乐视体感摄像头,因为它其实用的是奥比中光Astra Pro的模组,而且因为某些原因现在闲鱼上很便宜。
在这里插入图片描述
但这款摄像头不能直接使用,因为直接用奥比中光的ROS驱动不能同时输出彩色图和深度图,我就用UVC输出的彩色图,具体方法参考我的CSDN博客:【已解决】奥比中光摄像头不能同时显示深度图和彩色图

至于KCF跟踪我用的是大佬写好的项目:tracker_kcf_ros,但是做了一些修改,因为大佬用的是Kinect V1。具体怎么修改就不详细说明了,大家读读源码就知道了。

YOLO检测部分用的darknet_ros,darknet框架还是很方便啊,几乎不用怎么操作就能搭建好环境。首先要确保装好显卡驱动、CUDA和CUDNN,Nano中自带好了CUDA和CUDNN,只需要在bashrc中开启即可。

PC

电脑端开始是做仿真,后来发现树莓派性能不太行后也跑SLAM和导航等。

仿真用过Stdr和Gazebo,一个二维一个三维。其实如果只做导航方面的仿真Stdr已经够用了,而且可以添加多个机器人还有超声波等传感器。Gazebo大家应该很熟悉了,是一款很强大的仿真软件,但比较吃内存。至于需要哪一个就看需求了。

小结

硬件及软件部分大概就是上面这么多,看起来挺少的,但其实花在上面的时间并不少?因为从装虚拟机、装ROS(虚拟机崩)到装双系统、装显卡驱动、再次装ROS、apt-get包的依赖错误、ROS中各种编译错误、各种库的安装、cmake语法……算了不列举了。。。反正有太多太多的坑要爬了,除了软件,硬件也有很多坑要爬。所以其实我建议如果没这么多时间而且足够有钱,可以直接买一个小车,这样可以把更多精力花在更重要的知识上。当然如果刚入门,想要从机械、电控到软件全方位地了解制作一个机器人的步骤,做一台ROS小车也未尝不是一个合适的选择。

资源

整理好树莓派、Jetson Nano以及PC的源码后,我会放在我的Github上面,大家有需要可以自取。

另外在学习ROS的过程中,我搜集了一些资料,包括ROS、机械臂、激光SLAM、视觉SLAM的教学视频,可以免费提供给大家,如有需要私信我即可。

另外在学习ROS的过程中,我搜集了一些资料,包括ROS、机械臂、激光SLAM、视觉SLAM的教学视频,可以免费提供给大家,如有需要加百度网盘:无处灯火

  • 57
    点赞
  • 277
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值