chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

怎樣用機(jī)器學(xué)習(xí)和openFrameworks控制伺服電機(jī)

454398 ? 來源:工程師吳畏 ? 2019-08-02 17:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

電路圖

伺服電機(jī)Arduino之間建立以下連接:

黃色線是信號線。將其連接到Arduino上的數(shù)字引腳2。

棕色線是地線。將它連接到Arduino上的GND 。

紅色線是電源線。將其連接到Arduino上的 5V 引腳。

怎樣用機(jī)器學(xué)習(xí)和openFrameworks控制伺服電機(jī)

根據(jù)上面的電路圖在伺服電機(jī)和Arduino UNO之間建立連接。

編程Arduino

在Arduino代碼中,我們首先包含了伺服庫并為伺服初始化了一些變量。

然后在設(shè)置函數(shù)中,我們將伺服連接到Arduino的引腳2并開始串行通信。

在循環(huán)功能中,我們查找了輸入數(shù)據(jù),如果有任何數(shù)據(jù)可用,我們將讀取它并根據(jù)此值伺服電機(jī)將移動。

// Code to control servo motor from openframeworks using wekinator

#include //including the servo library

Servo sg90; //including a variable for servo named sg90

int servo_pin = 2;

void setup() {

sg90.attach(servo_pin); //Giving the command to arduino to control pin 2 for servo

// Start the serial communication

Serial.begin(9600);

}

void loop() {

if (Serial.available()) { // If there is any data available

int inByte = Serial.read(); // Get the incoming data

sg90.write(inByte);

}

}

編程openFrameworks

在openFrameworks方面,我們有三個用于發(fā)送和的文件從Wekinator接收數(shù)據(jù),也將幫助我們將數(shù)據(jù)發(fā)送到Arduino。

Main.cpp

Main .cpp運(yùn)行應(yīng)用程序并打開輸出窗口。

以下代碼適用于Main.cpp:

#include “ofMain.h”

#include “ofApp.h”

//========================================================================

int main( ){

ofSetupOpenGL(600, 480, OF_WINDOW); // 《-------- setup the GL context

// this kicks off the running of my app

// can be OF_WINDOW or OF_FULLSCREEN

// pass in width and height too:

ofRunApp(new ofApp());

}

OfApp.cpp

OfApp.cpp代碼是Arduino和openFrameworks之間存在串行通信的地方。它也是openFrameworks和Wekinator之間的OSC通信。

#include “ofApp.h”

#include “ofxOsc.h”

//--------------------------------------------------------------

void ofApp::setup(){

sender.setup(HOST, SENDPORT);

receiver.setup(RECEIVEPORT);

ofSetFrameRate(60);

serial.listDevices();

vector deviceList = serial.getDeviceList();

// this should be set to whatever com port your serial device is connected to.

// (ie, COM4 on a pc, /dev/tty.。.. on linux, /dev/tty.。. on a mac)

// arduino users check in arduino app.。..

int baud = 9600;

serial.setup(0, baud);

//open the first device

// windows example

//serial.setup(“COM10”, baud);

// mac osx example

//serial.setup(“/dev/tty.usbserial-A4001JEC”, baud);

//linux example

//serial.setup(“/dev/ttyUSB0”, baud);

}

//--------------------------------------------------------------

void ofApp::update(){

// Sending data to the wekinator

ofxOscMessage m;

m.setAddress(string(SENDMESSAGE));

m.addFloatArg((float)mouseX);

m.addFloatArg((float)mouseY);

sender.sendMessage(m, false);

// looking for incoming messages from wekinator

while (receiver.hasWaitingMessages()) {

ofxOscMessage msg;

receiver.getNextMessage(&msg); // Get Message

if (msg.getAddress() == RECEIVEMESSAGE) {

outputData = msg.getArgAsFloat(0); // Stored it

}

}

serial.writeByte(outputData); // sending the data to arduino

}

//--------------------------------------------------------------

void ofApp::draw(){

ofSetColor(255, 0, 0);

string buf = “Sending message ” + string(SENDMESSAGE) + “ to ” + string(HOST) + “ on port ” + ofToString(SENDPORT);

ofDrawBitmapString(buf, 10, 20);

buf = “X=” + ofToString(mouseX) + “, Y=” + ofToString(mouseY);

ofDrawBitmapString(buf, 10, 50);

ofSetColor(0, 255, 0);

ofDrawRectangle(mouseX, mouseY, boxSize, boxSize);

}

//--------------------------------------------------------------

void ofApp::mouseDragged(int x, int y, int button){

mouseX = x;

mouseY = y;

}

在設(shè)置功能中,我們首先設(shè)置發(fā)送器和接收器,然后查找串口。一旦找到,它將自動連接。

在更新功能中,我們首先將滑塊的X和Y值發(fā)送到Wekinator。然后,我們從接收器中查找傳入的消息。當(dāng)任何數(shù)據(jù)可用時,它將存儲它并將其發(fā)送到Arduino。

在繪圖功能中,我們制作了一個滑塊,當(dāng)我們拖動它時它會移動。

OfApp.h

OfApp.h文件是頭文件。

#pragma once

#include “ofMain.h”

#include “ofxOsc.h”

//Defaults for OSC:

#define HOST “127.0.0.1”

#define SENDPORT 6448

#define RECEIVEPORT 12000

#define SENDMESSAGE “/wek/inputs”

#define RECEIVEMESSAGE “/wek/outputs”

class ofApp : public ofBaseApp{

public:

void setup();

void update();

void draw();

void mouseDragged(int x, int y, int button);

ofxOscSender sender;

ofxOscReceiver receiver;

ofSerial serial;

int mouseX = 0;

int mouseY = 0;

int boxSize = 30;

char outputData;

};

如何運(yùn)行openFrameworks草圖

使用openFrameworks中的項(xiàng)目生成器創(chuàng)建一個新項(xiàng)目。此項(xiàng)目需要‘Ofxosc’插件。

將上一節(jié)中給出的代碼復(fù)制到相應(yīng)的文件中并構(gòu)建項(xiàng)目。構(gòu)建項(xiàng)目后,您將看到如下所示的輸出窗口。

openFrameworks中的輸出窗口。

在Wekinator中設(shè)置項(xiàng)目

設(shè)置openFrameworks后,打開Wekinator并調(diào)整設(shè)置以匹配下圖所示的設(shè)置。

將輸入設(shè)置為2,輸出設(shè)置為1.選擇輸出類型為“custom”,然后單擊“configure”。

在Wekinator中設(shè)置輸入,輸出和類型字段以匹配上面顯示的字段。

接下來,將最小值設(shè)置為0,將最大值設(shè)置為180,然后單擊“完成”。

自定義輸出類型至少為0和a最多180個。

點(diǎn)擊“下一步”,將出現(xiàn)“新建項(xiàng)目”窗口。

按照上面列出的步驟并單擊下一步后,您將進(jìn)入Wekinator的New Project窗口。

將處理窗口中的綠色框拖動到屏幕左側(cè)的中心,然后單擊“隨機(jī)化” ”。開始錄制一秒鐘,讓W(xué)ekinator記錄一些樣本。

將綠色框拖到屏幕左側(cè)以記錄您的第一個輸出。

現(xiàn)在將處理窗口中的綠框拖到窗口中心,然后單擊“隨機(jī)化”。開始錄制半秒。

將綠色框移動到中心以允許Wekinator記錄更多樣本。

最后,將處理窗口中的綠色框拖動到右側(cè)中心,然后單擊隨機(jī)化。開始錄制半秒。

將綠色框移動到窗口的右側(cè),以允許Wekinator制作第三組樣本。

為Wekinator制作了三組樣本后,點(diǎn)擊“ train”,然后點(diǎn)擊“運(yùn)行”。

現(xiàn)在,當(dāng)您在openFrameworks窗口中拖動滑塊時,它將控制并移動連接到Arduino的伺服。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

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

    其利天下技術(shù)·伺服電機(jī)機(jī)器人技術(shù)中的應(yīng)用

    伺服電機(jī)作為機(jī)器人運(yùn)動控制的核心部件,其高精度、高響應(yīng)速度和高負(fù)載能力等特點(diǎn),為機(jī)器人的精確運(yùn)動提供了有力保障。在工業(yè)
    的頭像 發(fā)表于 03-07 16:38 ?1245次閱讀
    其利天下技術(shù)·<b class='flag-5'>伺服</b><b class='flag-5'>電機(jī)</b>在<b class='flag-5'>機(jī)器</b>人技術(shù)中的應(yīng)用

    電機(jī)控制器與伺服系統(tǒng)的關(guān)系

    在自動化控制系統(tǒng)中,電機(jī)控制器和伺服系統(tǒng)是實(shí)現(xiàn)精確運(yùn)動控制的關(guān)鍵組件。電機(jī)
    的頭像 發(fā)表于 01-22 09:35 ?848次閱讀

    伺服電機(jī)機(jī)器人中的應(yīng)用有哪些

    伺服電機(jī)作為現(xiàn)代工業(yè)自動化領(lǐng)域的核心組件,其精確控制和高效性能在機(jī)器人技術(shù)中扮演著至關(guān)重要的角色。 伺服
    的頭像 發(fā)表于 11-20 09:53 ?2224次閱讀

    其利天下技術(shù)·伺服電機(jī)編碼器的作用及工作原理·低壓伺服電機(jī)驅(qū)動方案開發(fā)

    電機(jī)系統(tǒng)中起著至關(guān)重要的作用,是實(shí)現(xiàn)高效、穩(wěn)定和精確控制的核心組件。編碼器的作用是什么呢?它的工作原理又是怎樣的?其利天下·伺服電機(jī)驅(qū)動方案
    的頭像 發(fā)表于 11-02 10:38 ?1013次閱讀
    其利天下技術(shù)·<b class='flag-5'>伺服</b><b class='flag-5'>電機(jī)</b>編碼器的作用及工作原理·低壓<b class='flag-5'>伺服</b><b class='flag-5'>電機(jī)</b>驅(qū)動方案開發(fā)

    伺服電機(jī)原理及控制應(yīng)用

    伺服電機(jī)(Servo Motor)是一種高精度、高性能的電動機(jī)系統(tǒng),廣泛應(yīng)用于需要精確控制位置、速度和加速度的場合。 一、伺服電機(jī)的工作原理
    的頭像 發(fā)表于 10-22 16:58 ?2643次閱讀

    伺服電機(jī)有什么,伺服電機(jī)可以當(dāng)普通電機(jī)

    一、伺服電機(jī)的作用與特點(diǎn) 伺服電機(jī)(Servo motor),作為伺服系統(tǒng)中的關(guān)鍵組件,扮演著控制
    的頭像 發(fā)表于 10-22 16:16 ?1641次閱讀

    伺服電機(jī)控制方式有哪些?舉例分析

    伺服電機(jī)是一種高精度的電機(jī),廣泛應(yīng)用于工業(yè)自動化、機(jī)器人、精密機(jī)械等領(lǐng)域。伺服電機(jī)
    的頭像 發(fā)表于 10-22 11:13 ?1402次閱讀

    什么是伺服電機(jī)?伺服電機(jī)的工作原理是什么?

    伺服電機(jī)是一種高精度的電機(jī),廣泛應(yīng)用于自動化控制機(jī)器人、精密機(jī)械等領(lǐng)域。它能夠根據(jù)輸入的控制
    的頭像 發(fā)表于 10-22 10:58 ?2121次閱讀

    步進(jìn)電機(jī)伺服控制方法有哪些

    步進(jìn)電機(jī)伺服控制方法主要包括以下幾種: 1. 位置模式 定義 :在位置模式下,步進(jìn)伺服電機(jī)根據(jù)輸入的位置指令,通過閉環(huán)
    的頭像 發(fā)表于 09-04 09:48 ?1157次閱讀

    步進(jìn)電機(jī)伺服控制系統(tǒng)的作用

    步進(jìn)電機(jī)伺服控制系統(tǒng)是一種精密的電機(jī)控制系統(tǒng),它通過精確控制
    的頭像 發(fā)表于 09-04 09:46 ?1212次閱讀

    PLSY指令怎樣控制伺服正反轉(zhuǎn)

    PLSY指令(PLC中的脈沖輸出指令)通常用于控制伺服電機(jī)的正反轉(zhuǎn)和速度。 1. 伺服電機(jī)概述 伺服
    的頭像 發(fā)表于 08-19 14:51 ?3999次閱讀

    伺服電機(jī)怎么選型和計(jì)算(伺服電機(jī)電流環(huán)控制原理)

    在現(xiàn)代工業(yè)自動化領(lǐng)域,伺服電機(jī)扮演著精密控制設(shè)備中不可或缺的角色。其卓越的精度和響應(yīng)速度是實(shí)現(xiàn)精密控制的關(guān)鍵因素。因此,正確的選型和精確的計(jì)算對于保障設(shè)備的性能和系統(tǒng)的穩(wěn)定性具有決定性
    的頭像 發(fā)表于 08-02 08:37 ?977次閱讀
    <b class='flag-5'>伺服</b><b class='flag-5'>電機(jī)</b>怎么選型和計(jì)算(<b class='flag-5'>伺服</b><b class='flag-5'>電機(jī)</b>電流環(huán)<b class='flag-5'>控制</b>原理)

    伺服電機(jī)轉(zhuǎn)速調(diào)整方法

    引言 伺服電機(jī)是一種將電能轉(zhuǎn)換為機(jī)械能的裝置,具有高精度、高響應(yīng)速度、高穩(wěn)定性等特點(diǎn)。在工業(yè)自動化、機(jī)器人、航空航天等領(lǐng)域,伺服電機(jī)被廣泛應(yīng)
    的頭像 發(fā)表于 07-14 10:44 ?2599次閱讀

    伺服電機(jī)脈沖頻率和速度的關(guān)系是什么

    伺服電機(jī)是一種高精度、高性能的電機(jī),廣泛應(yīng)用于工業(yè)自動化、機(jī)器人、數(shù)控機(jī)床等領(lǐng)域。伺服電機(jī)
    的頭像 發(fā)表于 07-14 10:43 ?4880次閱讀

    伺服電機(jī)也是脈沖控制嗎為什么

    伺服電機(jī)是一種高精度、高響應(yīng)速度的電機(jī),廣泛應(yīng)用于工業(yè)自動化、機(jī)器人、航空航天等領(lǐng)域。伺服電機(jī)
    的頭像 發(fā)表于 07-14 10:37 ?1642次閱讀