一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

3天內(nèi)不再提示

怎樣用Tactigon通過(guò)BLE控制Arduino驅(qū)動(dòng)的機(jī)器人

454398 ? 來(lái)源:工程師吳畏 ? 2019-08-01 09:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我們需要什么

配置了Arduino IDE的Tactigon

機(jī)器人。我們使用帶有Arduino板的2輪機(jī)器人和與UART接口的BLE無(wú)線電。其他類型的機(jī)器人或定制機(jī)器人也可以正常工作。

機(jī)器人BLE MAC地址和特征

趣味

收集BLE MAC地址和特征

配置好環(huán)境并且我們的電路板開(kāi)啟后,我們需要收集BLE MAC地址和特征。為此,我們使用了一個(gè)名為BLE Scanner的免費(fèi)Android應(yīng)用程序。

應(yīng)用程序顯示后幾秒鐘機(jī)器人的BLE:

如我們所見(jiàn),我們周?chē)乃蠦LE設(shè)備都在本節(jié)中展示。我們需要記下Waveshare_BLE MAC地址:在這個(gè)例子中它是:00:0E:0B:0C:4A:00

通過(guò)點(diǎn)擊CONNECT按鈕,我們可以訪問(wèn)設(shè)備的信息作為屬性,服務(wù)和自定義特征。

這里我們需要寫(xiě)下CUSTOM CHARACTERISTIC UUID,在這種情況下:0000ffe1-0000 -1000-8000-00805f9b34fb。

通過(guò)這些項(xiàng)目,我們可以將Tactigon BLE設(shè)置為代碼的setup()部分中的BLE Central。

Tactigon Sketch

循環(huán)

在本節(jié)中,我們有草圖的核心。在頻率為50Hz時(shí),我們更新四元數(shù)和歐拉角。

由Tactigon庫(kù)提供的Analizyng俯仰角,我們可以通過(guò)減速來(lái)確定轉(zhuǎn)向半徑內(nèi)輪和加速外輪。

Analizying roll,我們可以確定機(jī)器人的行進(jìn)速度。

使用sprintf我們準(zhǔn)備緩沖區(qū)以寫(xiě)入特征。

機(jī)器人草圖

由于我們的藍(lán)牙通過(guò)UART發(fā)送接收數(shù)據(jù),因此我們可以直接在串行緩沖器中獲得輪速。

我們將機(jī)器人引腳設(shè)置如下,全部作為輸出:

要解析命令,我們首先讀取所有串行緩沖區(qū)并驗(yàn)證它是否長(zhǎng)于0:

如果命令包含“Wh”,我們可以解析字符串并收集leftSpeed和rightSpeed。

direct_motor函數(shù)將Tactigon傳輸?shù)乃俣确峙浣o機(jī)器人的每個(gè)車(chē)輪。通過(guò)這樣做Tactigon將充當(dāng)虛擬方向盤(pán)!

最終注意事項(xiàng)

此草圖顯示了Tactigon的潛在應(yīng)用,BLE Central模式可以連接到現(xiàn)有的BLE設(shè)備并收集信息或控制它們。

請(qǐng)繼續(xù)關(guān)注更多Tactigon的代碼!

Alphabot2代碼

Tactigon代碼

#include

#include

#include

extern int ButtonPressed;

T_Led rLed, bLed, gLed;

T_QUAT qMeter;

T_QData qData;

T_BLE bleManager;

UUID targetUUID;

uint8_t targetMAC[6] = {0x00,0x0e,0x0b,0x0c,0x4a,0x00};

T_BLE_Characteristic accChar, gyroChar, magChar, qChar;

int ticks, ticksLed, stp, cnt, printCnt;

float roll, pitch, yaw;

void setup() {

// put your setup code here, to run once:

ticks = 0;

ticksLed = 0;

stp = 0;

cnt = 0;

//init leds

rLed.init(T_Led::RED);

gLed.init(T_Led::GREEN);

bLed.init(T_Led::BLUE);

rLed.off();

gLed.off();

bLed.off();

//init BLE

bleManager.setName(“Tactigon”);

bleManager.InitRole(TACTIGON_BLE_CENTRAL); //role: CENTRAL

targetUUID.set(“0000ffe1-0000-1000-8000-00805f9b34fb”); //target characteristic

bleManager.setTarget(targetMAC, targetUUID); //target: mac device and its char UUID

}

void loop() {

char buffData[24];

int deltaWheel, speedWheel;

int pitchThreshold, rollThreshold, th1, th2;

//update BLE characteristics @ 50Hz (20msec)

if(GetCurrentMilli() 》= (ticks +(1000 / 50)))

{

ticks = GetCurrentMilli();

//get quaternions and Euler angles

qData = qMeter.getQs();

//Euler angles: rad/sec --》 degrees/sec

roll = qData.roll * 360/6.28;

pitch = qData.pitch * 360/6.28;

yaw = qData.yaw * 360/6.28;

//build command to rover depending on Euler angles

//left/right

pitchThreshold = 15;

if(pitch 《 -pitchThreshold || pitch 》 pitchThreshold)

{

if(pitch《-pitchThreshold)

{

deltaWheel =- (fabs(pitch) - pitchThreshold)*3;

}

else

{

deltaWheel =+ (fabs(pitch) - pitchThreshold)*3;

}

}

else

{

deltaWheel=0;

}

//forward/backword

rollThreshold = 15;

th1 = 90 + rollThreshold;

th2 = 90 - rollThreshold;

roll = fabs(roll);

if(roll 》 th1)

{

speedWheel = (roll - th1) * 3;

}

else if(roll 《 th2)

{

speedWheel = (roll - th2) * 3;

}

else

{

speedWheel = 0;

}

//command in buffData

sprintf(buffData,“Wh(%d)(%d)”, speedWheel-(-deltaWheel/2), speedWheel+(-deltaWheel/2));

//if connected and attached to peripheral characteristic write in it

if(bleManager.getStatus() == 3)

{

//signal that connection is on

bLed.on();

//send command every 100msec

rLed.off();

cnt++;

if(cnt 》 5)

{

cnt = 0;

bleManager.writeToPeripheral((unsigned char *)buffData, strlen(buffData));

rLed.on();

}

}

//say hello on serial monitor every second and blink green led

printCnt++;

rLed.off();

if(printCnt 》 50)

{

//Serial.println(“Hello!”);

//Serial.println(roll);

printCnt = 0;

rLed.on();

}

}

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    213

    文章

    29748

    瀏覽量

    212889
  • BLE
    BLE
    +關(guān)注

    關(guān)注

    12

    文章

    701

    瀏覽量

    60811
  • Arduino
    +關(guān)注

    關(guān)注

    190

    文章

    6498

    瀏覽量

    192180
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    輪式移動(dòng)機(jī)器人電機(jī)驅(qū)動(dòng)系統(tǒng)的研究與開(kāi)發(fā)

    【摘 要】以嵌入式運(yùn)動(dòng)控制體系為基礎(chǔ),以移動(dòng)機(jī)器人為研究對(duì)象,結(jié)合三輪結(jié)構(gòu)輪式移動(dòng)機(jī)器人,對(duì)二輪差速驅(qū)動(dòng)轉(zhuǎn)向自主移動(dòng)機(jī)器人運(yùn)動(dòng)學(xué)和動(dòng)力學(xué)空間
    發(fā)表于 06-11 14:30

    盤(pán)點(diǎn)#機(jī)器人開(kāi)發(fā)平臺(tái)

    地瓜機(jī)器人RDK X5開(kāi)發(fā)套件地瓜機(jī)器人RDK X5開(kāi)發(fā)套件產(chǎn)品介紹 旭日5芯片10TOPs算力-電子發(fā)燒友網(wǎng)機(jī)器人開(kāi)發(fā)套件 Kria KR260機(jī)器人開(kāi)發(fā)套件 Kria KR260-
    發(fā)表于 05-13 15:02

    詳細(xì)介紹機(jī)場(chǎng)智能指路機(jī)器人的工作原理

    帶)定位、Wi - Fi 定位等。藍(lán)牙定位可以通過(guò)與機(jī)場(chǎng)內(nèi)部署的藍(lán)牙信標(biāo)進(jìn)行通信,獲取機(jī)器人的大致位置信息。UWB 定位則利用超寬帶信號(hào)實(shí)現(xiàn)更精確的定位,能夠在復(fù)雜的室內(nèi)環(huán)境中達(dá)到較高的定位精度,誤差可控制
    發(fā)表于 05-10 18:26

    【「# ROS 2智能機(jī)器人開(kāi)發(fā)實(shí)踐」閱讀體驗(yàn)】機(jī)器人入門(mén)的引路書(shū)

    ROS的全稱:Robot Operating System 機(jī)器人操作系統(tǒng) ROS的 目的 :ROS支持通用庫(kù),是通信總線,協(xié)調(diào)多個(gè)傳感器 為了解決機(jī)器人里各廠商模塊不通用的問(wèn)題,讓機(jī)器人快速開(kāi)發(fā)
    發(fā)表于 04-30 01:05

    【「# ROS 2智能機(jī)器人開(kāi)發(fā)實(shí)踐」閱讀體驗(yàn)】+內(nèi)容初識(shí)

    講解了如何在 ROS 2 中實(shí)現(xiàn)機(jī)器人的運(yùn)動(dòng)控制,包括速度控制、位置控制等。通過(guò)編寫(xiě)運(yùn)動(dòng)控制節(jié)點(diǎn)
    發(fā)表于 04-27 11:24

    雅特力科技助力宇樹(shù)科技推動(dòng)智慧機(jī)器人創(chuàng)新應(yīng)用:深入布局機(jī)器人電機(jī)控制核心

    年前突破千億美元規(guī)模,其中仿生型與多自由度機(jī)器人將為成長(zhǎng)速度最快的細(xì)分領(lǐng)域。智能機(jī)器人控制系統(tǒng)主要由控制單元、感測(cè)單元與驅(qū)動(dòng)單元三大模塊組成
    的頭像 發(fā)表于 03-31 18:57 ?816次閱讀
    雅特力科技助力宇樹(shù)科技推動(dòng)智慧<b class='flag-5'>機(jī)器人</b>創(chuàng)新應(yīng)用:深入布局<b class='flag-5'>機(jī)器人</b>電機(jī)<b class='flag-5'>控制</b>核心

    開(kāi)源項(xiàng)目!基于Arduino控制的六足機(jī)器人

    清單詳見(jiàn)下方PDF附件: *附件:Parts-List.pdf *附件:Hardware-Usage.pdf 步驟1:CAD建模 通過(guò)Fusion 360完成六足機(jī)器人建模(見(jiàn)上圖),定義腿部編號(hào)(前
    發(fā)表于 03-03 11:25

    伺服電動(dòng)缸在人形機(jī)器人中的應(yīng)用

    將伺服電機(jī)自身優(yōu)勢(shì)轉(zhuǎn)變成精確速度控制、精確位置控制和精確推力控制,從而實(shí)現(xiàn)高精度直線運(yùn)動(dòng)。這種特性使其成為人形機(jī)器人的核心運(yùn)動(dòng)部件,特別是在關(guān)節(jié)驅(qū)動(dòng)
    發(fā)表于 02-06 09:04

    【「具身智能機(jī)器人系統(tǒng)」閱讀體驗(yàn)】2.具身智能機(jī)器人的基礎(chǔ)模塊

    具身智能機(jī)器人的基礎(chǔ)模塊,這個(gè)是本書(shū)的第二部分內(nèi)容,主要分為四個(gè)部分:機(jī)器人計(jì)算系統(tǒng),自主機(jī)器人的感知系統(tǒng),自主機(jī)器人的定位系統(tǒng),自主機(jī)器人
    發(fā)表于 01-04 19:22

    【「具身智能機(jī)器人系統(tǒng)」閱讀體驗(yàn)】2.具身智能機(jī)器人大模型

    。 多模態(tài)融合的創(chuàng)新與突破 機(jī)器人控制技術(shù)的另一個(gè)重要突破在于多模態(tài)大模型的應(yīng)用。相比于僅通過(guò)文字進(jìn)行人機(jī)交互的傳統(tǒng)方法,現(xiàn)代機(jī)器人能夠融合視覺(jué)、聲音、定位等多模態(tài)輸入信息,為任務(wù)執(zhí)行
    發(fā)表于 12-29 23:04

    【「具身智能機(jī)器人系統(tǒng)」閱讀體驗(yàn)】1.初步理解具身智能

    與未來(lái),涵蓋如基于行為的人工智能、生物啟發(fā)的進(jìn)化人工智能及認(rèn)知機(jī)器人技術(shù)的發(fā)展。這一歷史背景為隨后的大模型驅(qū)動(dòng)的具身智能討論奠定了基礎(chǔ),隨著人工智能模型復(fù)雜性和能力的不斷提升,這一主題也變得愈加
    發(fā)表于 12-28 21:12

    構(gòu)建語(yǔ)音控制機(jī)器人 - 線性模型和機(jī)器學(xué)習(xí)

    2024-07-31 |Annabel Ng 在該項(xiàng)目的[上一篇博客文章]中,我介紹了運(yùn)行機(jī)器人電機(jī)、處理音頻信號(hào)和調(diào)節(jié)電壓所需的電路的基礎(chǔ)知識(shí)。然而,機(jī)器人還沒(méi)有完全完成!盡管機(jī)器人可以正確移動(dòng)
    的頭像 發(fā)表于 10-02 16:31 ?578次閱讀
    構(gòu)建語(yǔ)音<b class='flag-5'>控制</b><b class='flag-5'>機(jī)器人</b> - 線性模型和<b class='flag-5'>機(jī)器</b>學(xué)習(xí)

    伺服控制機(jī)器人控制方式有哪些

    伺服控制機(jī)器人是一種高度精確的自動(dòng)化設(shè)備,它能夠執(zhí)行復(fù)雜的任務(wù),如精確定位、重復(fù)運(yùn)動(dòng)和力控制。伺服控制系統(tǒng)是機(jī)器人技術(shù)中的核心部分,它負(fù)責(zé)接
    的頭像 發(fā)表于 09-04 09:16 ?1053次閱讀

    開(kāi)源項(xiàng)目!ESP32做一個(gè)可愛(ài)的無(wú)用機(jī)器人

    簡(jiǎn)介 作者在完成碩士論文答辯后,利用空閑時(shí)間制作了一個(gè)他一直想做的機(jī)器人——可愛(ài)無(wú)用機(jī)器人。 無(wú)用機(jī)器人原理是一個(gè)連接到開(kāi)關(guān)的電機(jī),通過(guò)邏輯門(mén)
    發(fā)表于 09-03 09:34

    開(kāi)源項(xiàng)目!ESP32做一個(gè)可愛(ài)的無(wú)用機(jī)器人

    簡(jiǎn)介 作者在完成碩士論文答辯后,利用空閑時(shí)間制作了一個(gè)他一直想做的機(jī)器人——可愛(ài)無(wú)用機(jī)器人。 無(wú)用機(jī)器人原理是一個(gè)連接到開(kāi)關(guān)的電機(jī),通過(guò)邏輯門(mén)
    發(fā)表于 08-30 14:50