亲爱的小伙伴们你们好。今天开始给大家分享我来学习ROS的技术和心得。在ROS方面我只能说是个半吊子,我的专业是物联网工程,他是和嵌入式相关的一个专业。后来AI的爆火和机器人的爆火让我之间转变了自己的方向,也开始慢慢地接触ROS这个领域的使用。

        那为什么说我是半吊子呢?其实是代码方面的退化,23年我才大一,那个时候学习C语言很认真很刻苦,也没AI能够帮助生成,在此之后的时间里AI快速闯入我们的生活,代码基本依赖AI帮忙了。现在若是说节点、话题、服务,我能说出大概的联系(无非是订阅发布,请求响应),但是真的要手敲代码,emmm,这真的是一个考验,尤其是看到招聘上都写着“精通Python,精通C++”,作为学生真是汗颜😓。但是我觉得AI本身视作一种工具,上述情况也应该属于正常情况,作为开发者我们还是应该学会看懂代码和调试代码(当然很多时候也靠AI)。

        我之前学习嵌入式,准备走硬件方向的,所以今天开始我们先来学习硬件部分的设计。

                                                                                                                                        ——引子

    1.介绍理论

         首先还是说说理论吧,不然我也无从下手教学。ROS是什么呢?翻译后叫做机器人操作系统,事实上也不是一个操作系统,毕竟大多数时候看到的都是在Ubuntu系统上的ROS。我们现在学的都是ROS2,原来的ROS不如ROS2(简单的说,老版ROS有个主节点,它崩了其他就崩了,所以不好用),现在说的ROS基本上就是ROS2。

        ROS有五层框架:操作系统层,DDS(数据分发服务)实现层,DDS抽象层,客户端层,应用层。具体去看看其他资料了解吧。

        一般而言常规的机器人主控板是树莓派或者RK3588香橙派之类的昂贵的板子,他们上面可以搭载Ubuntu系统跑ROS(用的是他们板子自己的资源)。我们的情况是在上位机(电脑上的虚拟机,跑的是电脑的资源)完成代码运行和控制,通过端口、网络连接下位机ESP32的MicroROS,这样移花接木,就可以用你电脑的资源跑ROS了。

     2.芯片布局和选型

        我用ESP32-S3-WROOM-1-N16R8,芯片就不介绍了,学嵌入式的知道,都是老熟人了。

主控的电路

如图所示,这是个主控,也就是把引脚引出来,3.3V供电加了几个去耦电容,极其的简单。

接下来是基本电路:

Type-C,不必多说,烧录你得要,CH340,自动烧录的芯片,也是必须要的。ESP32的IO0是设置成启动模式按钮,EN,是使能复位按钮。

降压:12V降5V,5V降3.3V。

电压检测(看电池有没有电),LSM6DS3TR-C是IMU惯性单元芯片,ROS机器车建图、导航什么的通常需要雷达、IMU、里程计,除此之外预留几个IIC接口。

电源和开关

预留两个串口

根据实习时老板的要求,开了一个CAN总线通信的接口。

两个电机的驱动芯片,四个舵机线,如果你不知道哪个对哪个,去了解一下编码器减速电机和舵机的接线口顺序,对照着看。

摄像头,是的我还加了个摄像头,不知道能不能用。

这个电路板的电路图就这些,PCB设计如下:

3D看预期:

PCB设计这个真的没法手把手教,需要练习,过段时间再开源这个板子吧。反正最后的预期效果是这个小车子有:两个电机、一个雷达、一个摄像头、一个12V电池供电。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐