创建一个自定义PCB接口板,使接口更干净
扫描二维码
随时随地手机看文章
回顾2022年度ROS机器人
我一直想建立一个定制的3D打印机器人,但它似乎是一个时间密集的过程。当Rafaello在2022年发表他的设计时,我还在学习很多关于ROS2的知识,不确定我是否可以建造一个定制的机器人。
快进到2025年6月,我已经得到了所有的3d打印部件,Pololu电机,oled,滚珠轴承,Adafruit Feather电机控制器和Jetson TX2 NX作为大脑(一个简单的直接升级到原来的Jetson Nano)。少了一样东西,那就是PCB。
定制扩展PCB设计
我本来打算用原来的设计,但觉得它少了一些东西。在那些缺失的东西中,这个板确实需要更好地利用空间——包括实际连接器和组件的空间。由于我手头有一台T962回流炉,我可以放弃通孔组件,直接使用SMD。
我选择在电路板上添加一个ICM20948 I2C IMU,它将与一个OLED显示器一起位于I2C总线上。电机控制接口将保持相似,但我会通过JST-XH添加连接器。I2C连接器将是JST-SH 4引脚连接器。我不再挣扎于廉价的杜邦连接器从引脚头接口断开(没有应变救济!)。
在Kicad设计完成后,我将gerber文件发送到osh park。当我收到木板时,我知道模板是最重要的部分,于是我决定从当地的制造商Tropical stencil那里买一个。它并不便宜,大约是从PCBway获得模板的价格的10倍,但它是一个质量很好的模板,在粘贴应用时派上了用场(稍后会详细介绍)。
在这些组件都到达后,我不能再拖延构建了。
TPU灯丝问题
在构建过程中,我有一些3d打印踏板的问题,因为我使用的TPU太硬了,我需要一个更灵活的TPU。我最终打破了一个胎面支撑支架!
在获得TPU正确后,我有一个部分构建减去修改的扩展PCB
第一次PCB尝试失败
我第一次尝试回流焊失败了:IMU QFN封装很棘手。我最初使用了廉价的纸板切割和备用pcb试图夹心pcb,但这是棘手的,由于奥什公园pcb的有尖的边缘,从面板断开是留下的。我无法将这些与传统的pcb和纸板方法对齐,所以我再次转向3d打印以获得定制的pcb支架,这样我就可以应用焊膏并获得QFN。成功!我已经检测到IMU超过i2c检测和有效读数!
我确实必须将jetson i2c设备时钟速率从400k修改为100k,可能是由于PCB中i2c线路上的上拉电阻尺寸不正确。修复了软件中的一个小问题。
ROS2 IMU处理
接下来的步骤是实现基于Adafruit icm20X库的自定义ROS2驱动程序。
我分叉了一个现有的repo,并用Adafruit的实现取代了底层驱动程序,可以在github上找到。最后,我不得不克隆并构建这个包来获得madgwick过滤器和过程方向,这样我就可以看到rviz2中的方向变化。接下来,我修改了Nanosaur urdf xacro文件,以包含IMU的转换。有一些很酷的ROS2 TF包可以让你在rviz2之外可视化你的转换:
现在我的转换是正确的,我启动rivz2并验证方向。
结论
在2025年,我建议从另一个机器人平台开始,比如Duckiebot,用于简单的差速器驱动套件,或者选择更复杂的Hiwonder或Yahboom套件,这也是基于杰森的。
一般来说,纳米龙的问题是,除非你有3d打印机长丝的知识,否则很难建造。另一个缺点是缺乏用于定位的电机编码器。这将是更好的使设计稍微宽,以适应电机编码器,因为Pololu使这些在成本上略有颠簸。
在编码器之后,该平台确实需要一个2D激光雷达,如Slamtec C1。如果没有这些硬件部件,我们就只能实现Nvidia专有的Elbrus SLAM库来进行定位,它依赖于英特尔Realsense立体相机(例如D455)。我们也依赖于原来的基于Ubuntu 18.04的jetpack上的docker。如果同时使用编码器和2D激光雷达运行ROS2 SLAM工具箱,而不必求助于Visual SLAM +昂贵的Realsense,那就太棒了。
Docker对于初学者来说可能会有问题——在这个项目中,我基于Tegrademo仓库构建了一个自定义的yocto发行版,并且可以本地运行ROS 2。考虑到所有这些问题,这是一个有趣且具有挑战性的构建,我学到了很多!
本文编译自hackster.io





