資料介紹
描述
系列介紹
本系列文章的重點(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)它并使其成為任何人的干凈代碼庫想要重用它。
- Arduino機(jī)器人
- ARMD機(jī)器人面具檢測器開源分享
- 中國商用服務(wù)機(jī)器人行業(yè)簡析 0次下載
- Arduino機(jī)器人螞蟻
- ARLOK arduino機(jī)器人
- 基于Arduino系統(tǒng)拉線墻畫機(jī)器人設(shè)計(jì)制作 10次下載
- 魔方機(jī)器人(三)Arduino
- 面向機(jī)器人的三維形狀多層次局部匹配算法 18次下載
- 機(jī)場視覺移動(dòng)服務(wù)機(jī)器人的設(shè)計(jì)方案 27次下載
- 主從異構(gòu)手術(shù)機(jī)器人的運(yùn)動(dòng)誤差如何進(jìn)行分析 3次下載
- Arduino教學(xué)機(jī)器人的使用教程免費(fèi)下載 37次下載
- Arduino開發(fā)機(jī)器人經(jīng)典書籍推薦Arduino開發(fā)實(shí)戰(zhàn)指南:機(jī)器人卷
- 機(jī)器人設(shè)計(jì)教程之機(jī)器人控制和決策子系統(tǒng) 23次下載
- 機(jī)器人自適應(yīng)監(jiān)控架構(gòu)與服務(wù)方法 0次下載
- 面向服務(wù)架構(gòu)在SCADA中的應(yīng)用 22次下載
- 面向信號(hào)與面向服務(wù)SOA混合架構(gòu)設(shè)計(jì)方法 546次閱讀
- 面向信號(hào)與面向服務(wù)SOA混合架構(gòu)設(shè)計(jì)方法 655次閱讀
- 玩嗨OpenHarmony:基于OpenHarmony的智能助老服務(wù)機(jī)器人 1779次閱讀
- SOA面向服務(wù)架構(gòu)介紹 1180次閱讀
- 如何使用Arduino制造一個(gè)自動(dòng)平衡機(jī)器人 4429次閱讀
- 面對(duì)疫情 醫(yī)療機(jī)器人能幫上什么忙? 2126次閱讀
- dfrobotDevastator履帶機(jī)器人移動(dòng)平臺(tái)簡介 1515次閱讀
- 服務(wù)機(jī)器人市場需求及前景分析 8310次閱讀
- 服務(wù)機(jī)器人的應(yīng)用及市場規(guī)模 1950次閱讀
- 一文看懂服務(wù)機(jī)器人發(fā)展前景 2519次閱讀
- 服務(wù)機(jī)器人功能有哪些 6106次閱讀
- 服務(wù)機(jī)器人的種類及未來的發(fā)展趨勢 3725次閱讀
- 焊接機(jī)器人編程好學(xué)嗎_前景怎么樣 1.6w次閱讀
- 基于STM32的家庭服務(wù)機(jī)器人系統(tǒng)工作原理及設(shè)計(jì) 1.3w次閱讀
- 盤點(diǎn)服務(wù)機(jī)器人行業(yè)的九大關(guān)鍵技術(shù)! 4278次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多