色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

怎樣用機器學習和openFrameworks控制伺服電機

454398 ? 來源:工程師吳畏 ? 2019-08-02 17:52 ? 次閱讀

電路圖

伺服電機Arduino之間建立以下連接:

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

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

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

怎樣用機器學習和openFrameworks控制伺服電機

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

編程Arduino

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

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

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

// 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方面,我們有三個用于發送和的文件從Wekinator接收數據,也將幫助我們將數據發送到Arduino。

Main.cpp

Main .cpp運行應用程序并打開輸出窗口。

以下代碼適用于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;

}

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

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

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

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;

};

如何運行openFrameworks草圖

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

將上一節中給出的代碼復制到相應的文件中并構建項目。構建項目后,您將看到如下所示的輸出窗口。

openFrameworks中的輸出窗口。

在Wekinator中設置項目

設置openFrameworks后,打開Wekinator并調整設置以匹配下圖所示的設置。

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

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

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

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

點擊“下一步”,將出現“新建項目”窗口。

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

將處理窗口中的綠色框拖動到屏幕左側的中心,然后單擊“隨機化” ”。開始錄制一秒鐘,讓Wekinator記錄一些樣本。

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

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

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

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

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

為Wekinator制作了三組樣本后,點擊“ train”,然后點擊“運行”。

現在,當您在openFrameworks窗口中拖動滑塊時,它將控制并移動連接到Arduino的伺服。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 伺服電機
    +關注

    關注

    85

    文章

    2051

    瀏覽量

    57964
  • 機器學習
    +關注

    關注

    66

    文章

    8424

    瀏覽量

    132766
收藏 人收藏

    評論

    相關推薦

    伺服電機機器人中的應用有哪些

    伺服電機作為現代工業自動化領域的核心組件,其精確控制和高效性能在機器人技術中扮演著至關重要的角色。 伺服
    的頭像 發表于 11-20 09:53 ?705次閱讀

    伺服電機原理及控制應用

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

    伺服電機有什么,伺服電機可以當普通電機

    一、伺服電機的作用與特點 伺服電機(Servo motor),作為伺服系統中的關鍵組件,扮演著控制
    的頭像 發表于 10-22 16:16 ?464次閱讀

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

    伺服電機是一種高精度的電機,廣泛應用于工業自動化、機器人、精密機械等領域。伺服電機
    的頭像 發表于 10-22 11:13 ?485次閱讀

    什么是伺服電機伺服電機的工作原理是什么?

    伺服電機是一種高精度的電機,廣泛應用于自動化控制機器人、精密機械等領域。它能夠根據輸入的控制
    的頭像 發表于 10-22 10:58 ?613次閱讀

    步進電機伺服控制系統的作用

    步進電機伺服控制系統是一種精密的電機控制系統,它通過精確控制
    的頭像 發表于 09-04 09:46 ?692次閱讀

    PLSY指令怎樣控制伺服正反轉

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

    伺服電機轉速調整方法

    引言 伺服電機是一種將電能轉換為機械能的裝置,具有高精度、高響應速度、高穩定性等特點。在工業自動化、機器人、航空航天等領域,伺服電機被廣泛應
    的頭像 發表于 07-14 10:44 ?1457次閱讀

    伺服電機也是脈沖控制嗎為什么

    伺服電機是一種高精度、高響應速度的電機,廣泛應用于工業自動化、機器人、航空航天等領域。伺服電機
    的頭像 發表于 07-14 10:37 ?939次閱讀

    伺服電機矢量控制原理詳解

    伺服電機矢量控制作為現代電機控制技術的重要分支,廣泛應用于工業自動化、精密加工、機器人技術等領域
    的頭像 發表于 06-18 17:58 ?1087次閱讀

    伺服電機最簡單控制方法是什么

    伺服電機是一種高精度、高響應速度的電機,廣泛應用于工業自動化、機器人、航空航天等領域。伺服電機
    的頭像 發表于 06-05 15:49 ?817次閱讀

    伺服電機控制器怎么調參數

    的基本原理 1. 伺服電機控制器概述 伺服電機控制器是一種高精度、高性能的
    的頭像 發表于 06-05 15:47 ?1991次閱讀

    直流伺服電機控制方式的基本形式是什么

    引言 直流伺服電機以其高響應速度、高精度、高可靠性等優點,在工業自動化、機器人、航空航天等領域得到了廣泛應用。直流伺服電機
    的頭像 發表于 06-05 14:14 ?829次閱讀

    交流伺服電機工作原理 交流伺服電機控制方式

    交流伺服電機是一種通過閉環反饋控制系統實現精確位置、速度和轉矩控制電機。它在工業自動化、機械加工、機器
    的頭像 發表于 02-18 14:59 ?2571次閱讀

    如何使用Arduino UNO板和電位器控制伺服電機

    在本Arduino伺服電機教程中,您將學習如何使用Arduino UNO板和電位器控制伺服電機
    的頭像 發表于 02-11 10:11 ?2868次閱讀
    如何使用Arduino UNO板和電位器<b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>電機</b>
    主站蜘蛛池模板: 国产原创剧情麻豆在线| 国产国语在线播放视频| 芳草地社区在线视频| 奶头从情趣内衣下露了出来AV| 亚洲中文无码亚洲人在线观看-| 国产三级91| 亚洲精品国产乱码AV在线观看| 国产麻豆剧果冻传媒免费网站| 色多多涩涩屋下载软件| 高h乱一受多攻男男| 视频成人app永久在线观看| 国产AV一区二区三区传媒| 我的漂亮朋友在线观看全集免费| 国产福利视频在线观看福利| 熟妇久久无码人妻AV蜜桃| 国产精品成人不卡在线观看 | 草民电影网午夜伦理电影网| 胖老太与人牲交BBWBBW高潮| xxnx日本| 十分钟免费观看大全视频| 国产精品人妻无码久久久2022 | 国产亚洲日韩在线播放不卡| 亚洲精品沙发午睡系列| 久久高清免费视频| 69精品人妻一区二区三区蜜桃| 男插女高潮一区二区| yellow免费观看直播| 四虎影视国产精品亚洲精品hd| 国产全肉乱妇杂乱视频| 亚洲中文字幕无码一久久区| 久久中文骚妇内射| 超碰超碰视频在线观看| 午夜影院c绿象| 久久精品影院永久网址| hdsex老太婆70| 午夜影院视费x看| 精品夜夜澡人妻无码AV| jizzjizz中国大学生| 无修肉动漫在线观看影片| 久久久久久久伊人电影| 朝鲜女人性猛交|