RM新时代网站-首页

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>Arduino機(jī)器人面向服務(wù)的架構(gòu)

Arduino機(jī)器人面向服務(wù)的架構(gòu)

2023-01-03 | zip | 0.04 MB | 次下載 | 免費(fèi)

資料介紹

描述

系列介紹

本系列文章的重點(diǎn)是基于可在所有機(jī)器人中重復(fù)使用的服務(wù)創(chuàng)建可擴(kuò)展的面向?qū)ο蟮哪K化軟件架構(gòu),而無需在每次創(chuàng)建新機(jī)器人時(shí)都從頭開始。

也許開始使用機(jī)器人技術(shù)的最具成本效益的方法是使用您可以在任何電子商務(wù)(全球速賣通、banggood等)上購買的智能機(jī)器人汽車。但當(dāng)然,購買它是最簡單的部分......您不需要專門購買,即使有了智能機(jī)器人汽車的描述,您也會(huì)發(fā)現(xiàn)許多不同的變體。我將為您使用此套件獲得的所有最常見模塊創(chuàng)建“服務(wù)”,因此您可以選擇您需要的服務(wù),并將它們一起使用來創(chuàng)建您自己的智能機(jī)器人,而無需從頭開始對(duì)每個(gè)機(jī)器人進(jìn)行操作你做。

指數(shù)

這是我將要?jiǎng)?chuàng)建的泰博機(jī)器人服務(wù)系列或文章的索引。

關(guān)于硬件

為了能夠閱讀本文,您可能至少需要對(duì)面向?qū)ο蠓独兴私?,如果可能的話,使?C++但我對(duì) C++ 了解不多,但仍然這樣做,所以我認(rèn)為你也能做到。

我將以您可以從任何電子商務(wù)獲得的廉價(jià)硬件為基礎(chǔ)提供服務(wù)。你會(huì)看到我提到了 Arduino 智能機(jī)器人汽車。不過,我現(xiàn)在不使用該機(jī)器人進(jìn)行測試(我將來可能會(huì)),但 RoboSoul TK-100 更堅(jiān)固一些,但另一方面,當(dāng)它撞到某物時(shí),結(jié)果更破壞性的。

該軟件被認(rèn)為是盡可能可擴(kuò)展的,這就是為什么您應(yīng)該能夠使用任何可用的硬件。對(duì)于其中一些,您會(huì)在這里找到可以重用的服務(wù),而對(duì)于其他一些,您可能需要為您的特定硬件實(shí)現(xiàn)特定服務(wù)。這將非常容易,如果您決定在那之后更改硬件,您需要對(duì)機(jī)器人的主要代碼進(jìn)行的更改將是最小的。

關(guān)于架構(gòu)

我會(huì)盡量用最新的類圖更新這篇文章,因此它可以作為代碼中每個(gè)可用服務(wù)的參考。您會(huì)發(fā)現(xiàn)它附在本文中。

創(chuàng)建基礎(chǔ)服務(wù)

由于主要思想是基于相同的面向?qū)ο蠹軜?gòu)創(chuàng)建許多服務(wù),因此我們首先需要定義該架構(gòu)是什么。

“服務(wù)”基類

首先,我們要記住,我們希望能夠?yàn)槟砑拥巾?xiàng)目中的每個(gè)硬件模塊添加一個(gè)服務(wù)。那么,什么是一個(gè)好的服務(wù)主類?我們希望能夠:

  • 啟用/禁用任何服務(wù)
  • 使其冗長(以了解其中發(fā)生了什么以進(jìn)行調(diào)試)
  • 允許服務(wù)做一些設(shè)置
  • 允許服務(wù)在每次循環(huán)迭代時(shí)運(yùn)行一些更新代碼

現(xiàn)在,僅此而已。將根據(jù)我們正在構(gòu)建的服務(wù)類型添加更多詳細(xì)信息。所以基礎(chǔ)服務(wù)類的頭文件(Service.h)將是這樣的:

#pragma once   
#include "arduino.h" 
namespace Taibot 
{ 
	class Service 
	{ 
	public: 
		// isEnabled: Enables/Disables the Service   
		// isVerbose: Activates the logging output to Serial   
		Service(bool isEnabled, bool isVerbose); 
		// Use this method to know if the driver is enabled or not 
		bool IsEnabled(); 
		// Use this method to know if the logging is is enabled or not before writing logs 
		bool IsVerbose(); 
		// Enables/Disables the driver 
		void SetEnabled(bool isEnabled); 
		// Enables/Disables the logging 
		void SetVerbose(bool isVerbose); 
		// Needs to be implemented by every service, so we keep a convention 
		virtual void Setup() = 0; 
		// Needs to be implemented by every service, so we keep a convention 
		virtual void Update() = 0; 
	private: 
		// Enable/Disable the service   
		bool _isEnabled = false; 
		// Enable/Disable serial output for debugging  
		bool _isVerbose = false; 
	}; 
}; 

它的實(shí)現(xiàn)(Service.cpp)是這樣的:

#include "Service.h" 
using namespace Taibot; 
Service::Service(bool isEnabled, bool isVerbose) 
{ 
	_isEnabled = isEnabled; 
	_isVerbose = isVerbose; 
} 
bool Service::IsEnabled() 
{ 
	return _isEnabled; 
} 
bool Service::IsVerbose() 
{ 
	return _isVerbose; 
} 
void Service::SetEnabled(bool isEnabled) 
{ 
	_isEnabled = isEnabled; 
} 
void Service::SetVerbose(bool isVerbose) 
{ 
	_isVerbose = isVerbose; 
} 

Service 基類的構(gòu)造函數(shù)強(qiáng)制我們?yōu)榉?wù)設(shè)置啟用和詳細(xì)配置:Service(bool isEnabled, bool isVerbose); 然后你可以看到獲取或設(shè)置這兩個(gè)屬性的方法。

方法Setup()Update()在這里沒有實(shí)現(xiàn),因?yàn)樗鼈冃枰衫^承自該基類的服務(wù)實(shí)現(xiàn)。在許多情況下,此方法可能什么都不做,但由于我們的想法是允許服務(wù)在沒有任何外部要求的情況下工作和更新自身,我們應(yīng)該允許每個(gè)服務(wù)執(zhí)行它從 mane 草圖文件中要求的任何事情。

這意味著:

  • 在草圖的 setup() 文件中,您將從您正在使用的服務(wù)中調(diào)用所有 Setup() 方法。
  • 在草圖的 loop() 文件中,您將從您正在使用的服務(wù)中調(diào)用所有 Update() 方法。

一旦我們有自己的實(shí)際服務(wù)實(shí)施工作,我將展示一個(gè)例子。

回到服務(wù)類非常簡單。如您所見,我們正在使用 Taibot 命名空間,只是為了避免與您可能擁有的其他代碼發(fā)生沖突。

結(jié)論

現(xiàn)在,這段代碼看起來非常簡單,并沒有多大用處,但如果您按照其余文章進(jìn)行操作,您將能夠讓您的機(jī)器人工作,并且擁有一個(gè)漂亮的、可擴(kuò)展的、先進(jìn)的架構(gòu),這對(duì)我比有無盡的意大利面條代碼。

如果您不理解本文的任何部分、無法使此代碼工作、發(fā)現(xiàn)錯(cuò)誤或有任何建議,請(qǐng)告訴我,我愿意改進(jìn)它并使其成為任何人的干凈代碼庫想要重用它。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
RM新时代网站-首页