日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

電路圖

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

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

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

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

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

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

編程Arduino

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

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

在循環(huán)功能中,我們查找了輸入數(shù)據(jù),如果有任何數(shù)據(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運行應用程序并打開輸出窗口。

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

}

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

在更新功能中,我們首先將滑塊的X和Y值發(fā)送到Wekinator。然后,我們從接收器中查找傳入的消息。當任何數(shù)據(jù)可用時,它將存儲它并將其發(fā)送到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中的項目生成器創(chuàng)建一個新項目。此項目需要‘Ofxosc’插件。

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

openFrameworks中的輸出窗口。

在Wekinator中設置項目

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    關注

    88

    文章

    2202

    瀏覽量

    61603
  • 機器學習
    +關注

    關注

    67

    文章

    8567

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于MCU主控芯片的高性能伺服電機方案

    在工業(yè)自動化設備中,伺服電機系統(tǒng)是實現(xiàn)精密運動控制的關鍵環(huán)節(jié)。無論是工業(yè)機器人還是數(shù)控加工中心,都離不開穩(wěn)定、高效的驅動控制核心——而MCU
    的頭像 發(fā)表于 04-28 15:32 ?66次閱讀
    基于MCU主控芯片的高性能<b class='flag-5'>伺服</b><b class='flag-5'>電機</b>方案

    在 VisionFive 2 上實現(xiàn)機器伺服控制

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

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

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

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

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

    伺服電機控制方式簡述

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

    派克Parker防爆伺服電機與普通伺服電機的區(qū)別

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

    伺服電機控制系統(tǒng)的高寬帶電流環(huán)參數(shù)設計

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

    伺服電機和步進電機的核心區(qū)別

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

    舵機與伺服電機的區(qū)別是什么?

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

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

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

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

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

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

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

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

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

    伺服電機中的回原點方式

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

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

    伺服電機(英文:servomotor),在機器人、制造設備以及汽車等眾多領域有著廣泛應用。
    的頭像 發(fā)表于 07-18 15:11 ?4787次閱讀
    <b class='flag-5'>伺服</b><b class='flag-5'>電機</b>的工作原理、構成以及應用
    滦平县| 衡阳市| 旬邑县| 龙陵县| 廊坊市| 松桃| 稷山县| 德令哈市| 永昌县| 五莲县| 凉城县| 凤庆县| 长春市| 桃江县| 布尔津县| 乡城县| 辛集市| 拜泉县| 平度市| 绥宁县| 景洪市| 吉木乃县| 闸北区| 龙川县| 丰都县| 双桥区| 灵川县| 昭通市| 东莞市| 樟树市| 磐安县| 盘锦市| 北票市| 疏勒县| 中江县| 闸北区| 罗甸县| 乌兰浩特市| 那坡县| 陵川县| 舟山市|