吴忠躺衫网络科技有限公司

電子發(fā)燒友App

硬聲App

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

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

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

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

2023-01-03 | zip | 0.04 MB | 次下載 | 免費

資料介紹

描述

系列介紹

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

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

指數(shù)

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

關(guān)于硬件

為了能夠閱讀本文,您可能至少需要對面向?qū)ο蠓独兴私猓绻赡艿脑挘褂?C++但我對 C++ 了解不多,但仍然這樣做,所以我認為你也能做到。

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

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

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

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

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

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

“服務(wù)”基類

首先,我們要記住,我們希望能夠為您添加到項目中的每個硬件模塊添加一個服務(wù)。那么,什么是一個好的服務(wù)主類?我們希望能夠:

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

現(xiàn)在,僅此而已。將根據(jù)我們正在構(gòu)建的服務(wù)類型添加更多詳細信息所以基礎(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; 
	}; 
}; 

它的實現(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ù)強制我們?yōu)榉?wù)設(shè)置啟用和詳細配置:Service(bool isEnabled, bool isVerbose); 然后你可以看到獲取或設(shè)置這兩個屬性的方法。

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

這意味著:

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

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

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

結(jié)論

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

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


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

評論

查看更多

下載排行

本周

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

本月

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

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
百家乐官网规则博彩正网| 百家乐投注最好方法| 澳门百家乐官网真人娱乐城| 天上人间娱乐城| 大发888网页| 百家乐澳门规矩| 运城百家乐官网蓝盾| 百家乐官网是多少个庄闲| 饶河县| 网上最好赌博网站| 天上人间娱乐城| 新利国际开户| 博九娱乐网| 百家乐的奥秘| 百家乐娱乐皇冠世界杯| 网上百家乐官网赌法| 网上百家乐官网如何打水| 百家乐官网总厂在哪里| 百家乐官网赌术揭秘| 百家乐官网单跳双跳| 百家乐官网10法则| 百家乐官网最常见的路子| E乐博百家乐官网现金网| 真人百家乐官网是啥游戏| 百家乐娱乐备用网址| 新锦江百家乐娱乐平台| 巴西百家乐的玩法技巧和规则| 网络百家乐公式打法| 丽景湾百家乐的玩法技巧和规则| 有钱人百家乐的玩法技巧和规则 | 百家乐官网视频游戏挖坑| 百家乐官网网址皇冠现金网| 百家乐官网技巧看路| 誉博百家乐官网开户导航| 成都百家乐官网的玩法技巧和规则 | 百家乐官网真人百家乐官网赌博| 什么叫百家乐官网的玩法技巧和规则 | 百家乐官网棋牌游戏开发| 太阳城百家乐看牌| 百家乐棋| 棋牌小游戏下载|