国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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的伺服。

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

    關注

    88

    文章

    2186

    瀏覽量

    61307
  • 機器學習
    +關注

    關注

    66

    文章

    8554

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    在 VisionFive 2 上實現機器伺服控制

    control 在本演示中,PCA9685用于控制機器伺服伺服的核心是直流電機。通過電位器和齒輪,當輸入不同的PWM(脈寬調制)信
    發表于 03-05 07:09

    PLC怎么控制多臺交流伺服電機達到同步工作

    在現代工業自動化控制系統中,多臺交流伺服電機的同步控制是實現高精度運動控制的關鍵技術之一。PLC(可編程邏輯
    的頭像 發表于 02-27 17:04 ?336次閱讀
    PLC怎么<b class='flag-5'>控制</b>多臺交流<b class='flag-5'>伺服</b><b class='flag-5'>電機</b>達到同步工作

    三菱FX3U PLC控制伺服電機的高速脈沖模式解析

    三菱FX3U做為一款入門級PLC,應用很廣泛,其實學習PLC就幾點,開關量的輸入、輸出,就是我們平常所說的IO、伺服(或者步進電機)的控制、Modbus通信、模擬量輸入輸出,掌握了這些
    的頭像 發表于 01-27 15:51 ?1291次閱讀
    三菱FX3U PLC<b class='flag-5'>控制</b><b class='flag-5'>伺服</b><b class='flag-5'>電機</b>的高速脈沖模式解析

    伺服電機控制方式簡述

    伺服電機作為自動化控制系統的核心執行元件,其控制方式直接決定了設備的動態響應、定位精度和運行效率。隨著工業4.0和智能制造的發展,伺服
    的頭像 發表于 12-01 07:37 ?786次閱讀
    <b class='flag-5'>伺服</b><b class='flag-5'>電機</b>的<b class='flag-5'>控制</b>方式簡述

    派克Parker防爆伺服電機與普通伺服電機的區別

    Parker提供了多款不同的伺服電機,性能各有不同,針對特定易燃易爆場所使用的防爆伺服電機,與普通通用伺服
    的頭像 發表于 11-20 13:36 ?416次閱讀
    派克Parker防爆<b class='flag-5'>伺服</b><b class='flag-5'>電機</b>與普通<b class='flag-5'>伺服</b><b class='flag-5'>電機</b>的區別

    伺服電機控制系統的高寬帶電流環參數設計

    上回我們介紹了EtherCAT是如何利用SSC產生的sync信號,與電機控制系統完成同步的,如此我們即可保證整個控制系統的同步性能伺服控制。
    的頭像 發表于 11-17 09:53 ?7649次閱讀
    <b class='flag-5'>伺服</b><b class='flag-5'>電機</b><b class='flag-5'>控制</b>系統的高寬帶電流環參數設計

    伺服電機和步進電機的核心區別

    大家在運動控制的時候是伺服電機的還是步進電機做定位控制
    的頭像 發表于 10-15 14:32 ?1788次閱讀
    <b class='flag-5'>伺服</b><b class='flag-5'>電機</b>和步進<b class='flag-5'>電機</b>的核心區別

    舵機與伺服電機的區別是什么?

    舵機與伺服電機都屬于 可精確控制的驅動裝置 ,但二者在定義范圍、結構組成、控制方式和應用場景上存在顯著差異,并非完全等同(舵機是伺服
    的頭像 發表于 10-13 10:21 ?1856次閱讀

    精準控制,高效運行:永銘電容器在工業機器伺服電機驅動器中的重要角色

    隨著工業自動化需求的提升,工業機器人已經廣泛應用于各個生產環節,成為提升自動化水平和生產效率的重要工具。伺服電機作為工業機器人的核心部件,通過控制
    的頭像 發表于 09-01 10:01 ?465次閱讀
    精準<b class='flag-5'>控制</b>,高效運行:永銘電容器在工業<b class='flag-5'>機器</b>人<b class='flag-5'>伺服</b><b class='flag-5'>電機</b>驅動器中的重要角色

    人形機器伺服電機驅動器新動力:高性能電容器的協同作用

    PART1人形機器人心臟:伺服電機驅動器隨著人工智能和機器人技術的飛速發展,人形機器人正逐步成為智能制造和未來生活的新伙伴。在這一領域,
    的頭像 發表于 08-30 10:57 ?765次閱讀
    人形<b class='flag-5'>機器</b>人<b class='flag-5'>伺服</b><b class='flag-5'>電機</b>驅動器新動力:高性能電容器的協同作用

    基于MT6835磁編碼器IC的步進電機全閉環伺服控制策略

    步進電機作為一種常見的執行元件,因其結構簡單、控制方便等優點被廣泛應用于工業自動化、機器人、醫療設備等領域。然而,傳統的開環控制方式存在失步、振蕩等問題,難以滿足高精度應用場景的需求。
    的頭像 發表于 08-27 17:55 ?1169次閱讀

    MT6825磁編芯片為伺服電機控制系統帶來全角度測量能力

    在工業自動化、機器人技術以及新能源汽車等眾多領域,伺服電機控制系統都扮演著至關重要的角色。而測量電機的旋轉角度,對于實現精確的運動
    的頭像 發表于 07-29 16:40 ?696次閱讀

    MT6825磁編芯片如何突破伺服電機控制精度瓶頸

    伺服電機作為工業自動化、機器人、數控機床等高端裝備的核心執行部件,其控制精度直接影響設備性能。傳統光電編碼器受限于機械結構易磨損、抗干擾能力弱等問題,難以滿足高精度場景需求。而MT68
    的頭像 發表于 07-28 17:20 ?765次閱讀
    MT6825磁編芯片如何突破<b class='flag-5'>伺服</b><b class='flag-5'>電機</b><b class='flag-5'>控制</b>精度瓶頸

    伺服電機中的回原點方式

    伺服電機的運行需要一個參考點,這個參考點就是原點。原點通常是由光電開關或機械開關來確定的,其位置是固定的。當伺服電機運行時,控制器會根據原點
    的頭像 發表于 07-26 09:43 ?3435次閱讀
    <b class='flag-5'>伺服</b><b class='flag-5'>電機</b>中的回原點方式

    伺服電機的工作原理、構成以及應用

    伺服電機(英文:servomotor),在機器人、制造設備以及汽車等眾多領域有著廣泛應用。
    的頭像 發表于 07-18 15:11 ?4452次閱讀
    <b class='flag-5'>伺服</b><b class='flag-5'>電機</b>的工作原理、構成以及應用