×

自主扫雪机开源构建

消耗积分:0 | 格式:zip | 大小:0.01 MB | 2023-07-06

王平

分享资料个

描述

第一步:问“为什么?”

没有逃避它。在一年中的大部分时间里,加拿大都会遭受极度寒冷和强降雪。许多人从事的是城市低端工人操作除雪设备的工作。与此同时,房主的任务是自己铲土、支付服务费用或依赖邻居,这在任何情况下都会导致花费大量时间和受伤风险,尤其是对老年人而言。

我们相信,我们可以更好地利用我们可用的人工智能,并通过自动化加拿大的除雪过程来改善人们的生活。

我们没有凭空制造自动扫雪机。首先,我们利用我们的电子和软件知识构建了小型工作原型,我们将从中学习并将其应用到我们的全尺寸产品中。

poYBAGOIORWAMRxaABEcU2rbRuM442.jpg
我们利用我们的电子和软件知识构建了小型工作原型
 

第 2 步:绘制大图

pYYBAGOIORqAXiVrAAGAkeevSZw230.png
Jetson Nano 和 Snowplow 如何感知、规划和行动的高级概述
 

简而言之,我们的设计分为四个阶段:

1) 安全——我们如何预防紧急情况并实施故障保险?

2) 机械和建筑——我们要怎么做?

3) 电机控制——我们如何控制电机?

4) 同时定位和路径导航——它如何知道它在哪里以及要去哪里?

第一阶段 - 安全

至于安全措施,我们希望确保有三种机制可以在紧急情况下关闭扫雪机:

1) 通过急停按钮机械关闭

2) 监控系统的人员远程关闭

3) 如果系统检测到需要关闭软件的情况

poYBAGOIOSCAUJF1AAv-pspA-1s027.jpg
我们上面显示的急停控制扫雪机的机械关闭
 

第 2 阶段 - 机械设计和组装

费用说明:

当我们最初构思这个项目时,我们希望在不做出不必要的牺牲的情况下尽可能降低成本。我们的赞助商问我们的自动扫雪机要花多少钱,我们口头估计“税后 2000-3000加元(或大约 2000 美元)”。

我们希望我们的扫雪机性能良好且具有成本效益。因此,虽然大部分项目材料来自加拿大,但我们也从美国、中国和台湾采购零件。

有关项目成本的明细,请参见此处

框架概念:

我们想设计一个简单、坚固、易于构建、具有成本效益且可调节的框架。首先,我们知道我们的框架需要支撑电机以及很大的重量(这是扫雪机获得足够牵引力所必需的)。

poYBAGOIOSOAH884AAJf6UuYunE607.png
扫雪机底盘的初步 SolidWorks 草图。保留了很多设计,有些改变了。
 

动力传动系统概念:固定齿轮自行车(四倍)

在决定我们的扫雪机的最佳动力传动系统时,我们从可追溯到 1800 年代的设计中汲取了灵感:固定齿轮自行车。

我们的动力传动系统决定取决于几个因素,包括成本、制造的难易程度以及我们构思和可视化其工作方式的能力。

我们选择不使用轮椅电机,因为我们不希望增加成本、速度不灵活(在仅使用轮椅电机输出的情况下)以及难以安装在我们构想的框架上。

pYYBAGOIORqAXiVrAAGAkeevSZw230.png
Jetson Nano 和 Snowplow 如何感知、规划和行动的高级概述
 

第 3 阶段 - 电机控制

该团队决定使用四个BTS7960电机驱动器。对于那些做过小型机器人项目的人(包括团队中的一些成员)来说,L298N是一种常见的电机驱动器。BTS7960 没有太大区别,但额定电流高达 40 安培,非常适合我们的大电流应用。

第 4 阶段-同时定位和路径导航

以下两张图片展示了我们的扫雪机清洁概念的高级视图

poYBAGOIOSuAJbXcAABkGYrX9wE771.png
 
pYYBAGOIOS2AXyBeAAFJLITQ8Kw871.png
 

第 3 步:开始构建

在我们决定花钱建造全尺寸原型之前,我们决定建造一个较小尺寸的概念车来证明我们的想法。我们从铝型材和六个 9V 直流电机开始,它们的控制方式与上一步中的框图相同。

poYBAGOIOTOAKN9mAAsT7rOnvow898.jpg
展示较小原型的构造,我们将在其中证明我们的概念
 
pYYBAGOIOTiAVDA4AAnoO9_Em7Y672.jpg
原型的更完整版本,是全尺寸扫雪机的便捷试验台
 

一旦我们向自己证明我们可以在更小的底盘上实现我们的一些项目目标,我们就决定是时候开始构建全尺寸原型了。

第一阶段 - 安全

全尺寸扫雪机使用了汽车保险丝盒,这需要断开急停按钮才能打开所有继电器并允许电流从电池流出,并流向电机驱动器和电机(取决于在控制信号上)。

第 2 阶段 - 机械设计和组装

单击此处查看我们机械材料的完整分类

我们的任务是组装传动系统。这需要以机械合理(直轮、平行轴)且易于维修(链条可以轻松更换,轮子可以拆卸)的方式完成。我们决定采用四轮驱动系统,配备四个独立电机。这样做有几个原因。首先,全轮驱动是必须的,因为我们需要能够向地面传递尽可能多的力。这是通过最大化与驱动轮上的法向力成比例的摩擦力来实现的。如果只有前两个或后两个轮子有动力,那么地面上推雪的力就会更小。其次,我们是不是也想要一个独立的左右驱动,我们不需要像汽车那样的带有扭轮的转向系统,而是我们有坦克式的转向,左轮和右轮以相反的方向转动。只有四个独立的电机可以实现这些目标,除非我们使用履带而不是轮胎。

最后,我们将链轮安装在电机和轮轴上,将链轮焊接到轮毂上,然后将轮胎安装在一组板上,该板可以容纳轮毂。最初的目的是将链轮也焊接到这些轮毂上,然后将板用螺栓固定到链轮上。但是,我们生产的焊缝不符合要求,车轮是直的,链轮是歪的。我们没有尝试再次进行焊接,而是选择加工定制的铝制轮毂适配器。这样可以更轻松地拆卸车轮,并且是购买更多轮毂和链轮的低成本解决方案。总而言之,我们的驱动系统实现了它的目标,车轮笔直且同心,我们可以轻松维修链条和车轮,并有效地高效地提供动力。

poYBAGOIOUCAXEUaABN5m-hHHoI789.jpg
 

电机将用链条连接到轮子上。或者我们可以使用皮带或齿轮,齿轮很难对齐,而且要复杂得多,它们需要润滑,间距很重要,它们会产生推力等。选择链条而不是皮带,因为它们很容易从当地的五金店,而且在设计上比皮带更灵活,我们可以缩短或延长链条。为了提供张力,所使用的轴承安装在枕块中。枕块有槽,可以进行一些调整。此外,我们的电机安装在我们可以平移的板上,以确保链条笔直并调节张力。我们用切槽加工板,这样我们就可以将电机滑动大约 0.125 英寸,允许在我们 0.5 英寸长的链节上进行 0.25 英寸的调整,

第 3 阶段 - 电机控制

我们选择使用两个 12 V 120 Ah 深循环船用电池为扫雪机供电。考虑到没有重量限制,这些电池是一种理想的具有成本效益的选择。串联连接的电池提供 24 V 电压,最适合为 500 W 24 V 有刷直流电机供电。我们将四个电机驱动器中的每一个分别与两个电池串联,从而为每个驱动器提供 24 V 电压。在连接到驱动器之前,四根正极电缆中的每根电缆首先通过其自身的 25 A 保险丝和继电器。我们选择了 25 A 保险丝,因为该电流在 24 V 时会产生 600 W 的功率,假设电机能够在短时间内提供该功率。四个继电器连接在一个简单的串联威廉希尔官方网站 中,由主开关和一个由其中一个电池供电的紧急停止装置组成。当两个开关都闭合时,为四个继电器中的每一个提供 12 V 电压,从而打开它们并为每个电机驱动器供电。当紧急停止或主开关打开时,所有继电器都关闭,驱动器的电源被切断。每个电机驱动器也连接到各自的电机。每个电机驱动器从电池接收 24 V 电压,并可以使用该电源驱动电机前进、后退以及以软件确定的不同速度。每个电机驱动器均由来自 ESP32 的信号控制。ESP32 由 5 V 供电,我们使用连接到 12 V 电池之一的 5 V 降压转换器实现了这一点。为 ESP32 供电的威廉希尔官方网站 也与主开关串联,因此当主开关打开时 ESP32 关闭。从而打开它们并为每个电机驱动器供电。当紧急停止或主开关打开时,所有继电器都关闭,驱动器的电源被切断。每个电机驱动器也连接到各自的电机。每个电机驱动器从电池接收 24 V 电压,并可以使用该电源驱动电机前进、后退以及以软件确定的不同速度。每个电机驱动器均由来自 ESP32 的信号控制。ESP32 由 5 V 供电,我们使用连接到 12 V 电池之一的 5 V 降压转换器实现了这一点。为 ESP32 供电的威廉希尔官方网站 也与主开关串联,因此当主开关打开时 ESP32 关闭。从而打开它们并为每个电机驱动器供电。当紧急停止或主开关打开时,所有继电器都关闭,驱动器的电源被切断。每个电机驱动器也连接到各自的电机。每个电机驱动器从电池接收 24 V 电压,并可以使用该电源驱动电机前进、后退以及以软件确定的不同速度。每个电机驱动器均由来自 ESP32 的信号控制。ESP32 由 5 V 供电,我们使用连接到 12 V 电池之一的 5 V 降压转换器实现了这一点。为 ESP32 供电的威廉希尔官方网站 也与主开关串联,因此当主开关打开时 ESP32 关闭。当紧急停止或主开关打开时,所有继电器都关闭,驱动器的电源被切断。每个电机驱动器也连接到各自的电机。每个电机驱动器从电池接收 24 V 电压,并可以使用该电源驱动电机前进、后退以及以软件确定的不同速度。每个电机驱动器均由来自 ESP32 的信号控制。ESP32 由 5 V 供电,我们使用连接到 12 V 电池之一的 5 V 降压转换器实现了这一点。为 ESP32 供电的威廉希尔官方网站 也与主开关串联,因此当主开关打开时 ESP32 关闭。当紧急停止或主开关打开时,所有继电器都关闭,驱动器的电源被切断。每个电机驱动器也连接到各自的电机。每个电机驱动器从电池接收 24 V 电压,并可以使用该电源驱动电机前进、后退以及以软件确定的不同速度。每个电机驱动器均由来自 ESP32 的信号控制。ESP32 由 5 V 供电,我们使用连接到 12 V 电池之一的 5 V 降压转换器实现了这一点。为 ESP32 供电的威廉希尔官方网站 也与主开关串联,因此当主开关打开时 ESP32 关闭。每个电机驱动器从电池接收 24 V 电压,并可以使用该电源驱动电机前进、后退以及以软件确定的不同速度。每个电机驱动器均由来自 ESP32 的信号控制。ESP32 由 5 V 供电,我们使用连接到 12 V 电池之一的 5 V 降压转换器实现了这一点。为 ESP32 供电的威廉希尔官方网站 也与主开关串联,因此当主开关打开时 ESP32 关闭。每个电机驱动器从电池接收 24 V 电压,并可以使用该电源驱动电机前进、后退以及以软件确定的不同速度。每个电机驱动器均由来自 ESP32 的信号控制。ESP32 由 5 V 供电,我们使用连接到 12 V 电池之一的 5 V 降压转换器实现了这一点。为 ESP32 供电的威廉希尔官方网站 也与主开关串联,因此当主开关打开时 ESP32 关闭。

与制造机械部件所涉及的问题相比,构建电气系统时遇到的问题微乎其微。内置电压表在测试电气系统时会提前停止工作,但这个组件不是必需的,因为我们可以使用手头的电压表测试电压。最主要的问题是一些安装的电机驱动器有故障,但通过一些故障排除和更换坏驱动器解决了这个问题。

电气系统的下一步主要是简化所有电缆并为其增加保护。在目前的状态下,扫雪机使用了过多的电缆,并且这些电缆的安装方式没有组织。串联电池的多根跨接电缆可以换成一根合适的跨接电缆,并且可以焊接所有连接器以确保可靠连接。连接到电池的众多跳线也可以与单个高规格跳线交换,并且块连接器可用于在需要分配电源的点将它们分成更小的电缆。任何捆绑的电线都可以用套管包裹以确保使用寿命。各个电机驱动器也可以直接重新连接到 ESP32,而不是通过中间板。

第 4 阶段-同时定位和路径导航

我们使用了来自 NavSpark NS-HP-GN2的最新双频(或多波段)RTK ,它支持 GPS L1/L2C、北斗 B1I/B2I、Galileo E1/E5b、GLONASS L1/L2。更多的卫星 = 更高的准确性和对信号阻塞的更大容忍度。我们使用 2 个Heltec Lora 32在基站和扫雪机中的 GPS 接收器之间进行纠错通信。我们在北美使用LoRa (远程)915Mhz 版本。LoRaWAN 非常适合开放空间和 Wi-Fi 或蜂窝网络未覆盖的区域。它可以超过30公里的范围。但是,它的主要不便在于它具有 27 kbps 的低数据传输限制。我们需要将通信波特率降低到 19200。RTK 接收器可以毫无问题地发送 10Hz 的纠错信号。NMEAnd RTCM只需要 9600 波特。Heltec Lora32 具有 Wi-Fi 和 LoRaWAN 两种通信方式。我们可以根据操作区域进行配置。

RTK 解决方案(差分 GPS)已在测量领域使用多年;但是,此类系统的成本通常非常高(在 5 位数范围内)。我们今天实施的系统采用市场上最新的经济高效技术,基站和 Rover(扫雪机)的价格仅为 300 美元。

pYYBAGOIOUOAEpDqAAOFumFwvuU975.jpg
我们笔记本中的路径导航示例
 
pYYBAGOIOUiAVYZdAAdcP4ScMq4370.jpg
RTK GPS 印刷威廉希尔官方网站 板和 Heltec LoRa ESP32
 

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"//m.obk20.com/www/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'自主扫雪机开源构建',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"https://www.elecfans.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);