電子發(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)然,購買它是最簡(jiǎn)單的部分......您不需要專門購買,即使有了智能機(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)行測(cè)試(我將來可能會(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ù)
  • 使其冗長(zhǎng)(以了解其中發(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ù)類非常簡(jiǎn)單。如您所見,我們正在使用 Taibot 命名空間,只是為了避免與您可能擁有的其他代碼發(fā)生沖突。

結(jié)論

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

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


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

評(píng)論

查看更多

下載排行

本周

  1. 1無鉛焊接的可靠性
  2. 1.03 MB   |  5次下載  |  1 積分
  3. 2GBT1094.11-2022電力變壓器第11部分:干式變壓器
  4. 14.12 MB   |  3次下載  |  免費(fèi)
  5. 3PT500齒輪傳動(dòng)動(dòng)力學(xué)綜合測(cè)試實(shí)驗(yàn)臺(tái)
  6. 0.16 MB   |  3次下載  |  免費(fèi)
  7. 4爬電距離和電氣間隙計(jì)算
  8. 0.75 MB   |  2次下載  |  1 積分
  9. 5SX1308應(yīng)用電路圖與SX1308升壓電路圖
  10. 0.18 MB   |  1次下載  |  免費(fèi)
  11. 6ADC參數(shù)單位換算
  12. 761.94KB   |  1次下載  |  免費(fèi)
  13. 7串口工具UartAssist5.0.exe
  14. 0.60 MB   |  1次下載  |  免費(fèi)
  15. 8UCC38C42 25瓦自諧振復(fù)位正激變換器
  16. 320.6KB   |  1次下載  |  免費(fèi)

本月

  1. 1ACDC變換器的原理圖免費(fèi)下載
  2. 0.26 MB   |  65次下載  |  免費(fèi)
  3. 2無刷電機(jī)控制方案設(shè)計(jì)合作
  4. 1.05 MB   |  22次下載  |  免費(fèi)
  5. 3美的超薄電磁爐TM-S1-09B主板原理圖
  6. 0.08 MB   |  20次下載  |  免費(fèi)
  7. 4純電動(dòng)汽?的主要部件及?作原理
  8. 5.76 MB   |  12次下載  |  5 積分
  9. 5GP328和GP88S對(duì)講機(jī)的維修實(shí)列資料合集免費(fèi)下載
  10. 0.03 MB   |  10次下載  |  10 積分
  11. 6舒爾SLX4無線話筒接收機(jī)原理圖:二次變頻超外差部分
  12. 0.27 MB   |  8次下載  |  免費(fèi)
  13. 7IP5385_DEMO開發(fā)資料
  14. 1.96 MB   |  7次下載  |  2 積分
  15. 8i.MX Linux開發(fā)實(shí)戰(zhàn)指南—基于野火i.MX系列開發(fā)板
  16. 17.86 MB   |  7次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935115次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420061次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191363次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  10. 158M  |  183329次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73805次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65985次下載  |  10 積分