0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样用openFrameworks人脸跟踪器模式控制电机

454398 来源:工程师吴畏 2019-08-02 11:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在本指南中,我们将记录四个输出的样本:

对于出现在相机前面的面部。

对于出现在相机右侧的脸部。

对于距相机一定距离的脸部。

对于出现在相机前面的物体。

安装openFrameworks人脸跟踪器模式

openFrameworks的安装文件,以及面部追踪功能,可在Wekinator网站上找到。

怎样用openFrameworks人脸跟踪器模式控制电机

图像显示Wekinator网站上面部跟踪下载文件的位置ite

下载面部跟踪文件后,解压缩并运行程序。它应激活计算机网络摄像头以跟踪用户的面部。

使用计算机网络摄像头识别面部的面部跟踪器程序的示例图像。

处理指令

在处理方面,本指南将要求使用草图,该草图将从Wekinator软件接收输出数据并将其转发给Arduino

import vsync.*; // Importing the library that will help us in sending and receiving the values from the Arduino

import processing.serial.*; // Importing the serial library

// Below libraries will connect and send, receive the values from wekinator

import oscP5.*;

import netP5.*;

// Creating the instances

OscP5 oscP5;

NetAddress dest;

ValueSender sender;

// These variables will be syncronized with the Arduino and they should be same on the Arduino side.

public int output;

void setup()

{

// Starting the serial communication, the baudrate and the com port should be same as on the Arduino side.

Serial serial = new Serial(this, “COM10”, 115200);

sender = new ValueSender(this, serial);

// Synchronizing the variables as on the Arduino side. The order should be same.

sender.observe(“output”);

// Starting the communication with wekinator. listen on port 12000, return messages on port 6448

oscP5 = new OscP5(this, 12000);

dest = new NetAddress(“127.0.0.1”, 6448);

}

// Recieve OSC messages from Wekinator

void oscEvent(OscMessage theOscMessage) {

if (theOscMessage.checkAddrPattern(“/wek/outputs”) == true) {

// Receiving the output from wekinator

float value = theOscMessage.get(0).floatValue();

// Converting the output to int type

output = int(value);

}

}

void draw()

{

// Nothing to be drawn for this example

}

连接直流电机到Arduino

处理草图将从Wekinator发送输出数据到Arduino,它将相应地控制电机。

为了将电机连接到Arduino,请按照下图中的位置。

查看我们的文章详细说明如何通过openFramework发送和接收数据平台使用Arduinoto更好地了解openFrameworks如何与Arduino通信

连接到Arduino UNO的电机示意图。

Arduino代码

#include //Including the library that will help us in receiving and sending the values from processing

ValueReceiver《1》 receiver; /*Creating the receiver that will receive only one value.

Put the number of values to synchronize in the brackets */

/* The below variable will be synchronized in the processing

and it should be same on both sides. */

int output;

//Motor Pins

int EN_A = 11;

int IN1 = 9;

int IN2 = 8;

int IN3 = 7;

int IN4 = 6;

int EN_B = 10;

void setup()

{

/* Starting the serial communication because we are communicating with the

Processing through serial. The baudrate should be same as on the processing side. */

Serial.begin(115200);

//Initializing the motor pins as output

pinMode(EN_A, OUTPUT);

pinMode(IN1, OUTPUT);

pinMode(IN2, OUTPUT);

pinMode(IN3, OUTPUT);

pinMode(IN4, OUTPUT);

pinMode(EN_B, OUTPUT);

digitalWrite(EN_A, HIGH);

digitalWrite(EN_B, HIGH);

// Synchronizing the variable with the processing. The variable must be int type.

receiver.observe(output);

}

void loop()

{

// Receiving the output from the processing.

receiver.sync();

// Matching the received output to light up led‘s

if (output == 1)

{

//Forward

digitalWrite(IN1, LOW);

digitalWrite(IN2, HIGH);

digitalWrite(IN3, LOW);

digitalWrite(IN4, HIGH);

}

else if (output == 2)

{

//Right

digitalWrite(IN1, HIGH);

digitalWrite(IN2, LOW);

digitalWrite(IN3, LOW);

digitalWrite(IN4, LOW);

}

else if (output == 3)

{

//Left

digitalWrite(IN1, LOW);

digitalWrite(IN2, LOW);

digitalWrite(IN3, HIGH);

digitalWrite(IN4, LOW);

}

else if (output == 4)

{

//Stop

digitalWrite(IN1, LOW);

digitalWrite(IN2, LOW);

digitalWrite(IN3, LOW);

digitalWrite(IN4, LOW);

}

}

在Wekinator中使用人脸检测

第一步是启动Wekinator平台并更改设置以反映下图中的设置。

将输入值设置为3.

将输出值设置为1.

将输出类型指定为“all continuous”

将所有其他设置保留为默认格式。

为了启用Wekinator和openFrameworks平台之间的通信,您需要下载ChucK编程语言,你可以在查克官方网站上这样做。

了解更多信息在安装和使用Wekinator程序时,请查看我们的如何开始使用Wekinator的指南。

Wekinator将从openFrameworks应用程序接收3个输入,然后向ChucK程序发送5个不同的输出,这会提示它产生不同的声音。

Wekinator软件程序中的“创建新项目”窗口。

单击“下一步”,将显示“新建项目”窗口,如下所示。

Wekinator软件程序中的“New Project”窗口。

将脸靠近相机记录一些测试。将分类器输出值指定为“1”。您还需要记录此移动的简短示例。

显示面部追踪器功能如何识别靠近相机的面部的示例图像。

接下来,将您的脸移到屏幕右侧,将分类输出值更改为“2”。再一次,记录运动。

显示脸部追踪器功能如何识别相机右侧脸部的示例图像。

然后将您的脸部从相机中进一步向后移动并将分类器输出更改为“3”。

人脸跟踪器功能如何识别远离相机的脸部的示例图像。

最后一步是完全退出相机视图。将分类器输出分配给’4。‘

脸部追踪器功能的示例图像未在相机视图中识别脸部。

现在,当您点击“列车”然后“运行”按钮时,电机应会在相机上的位置移动。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 电机
    +关注

    关注

    145

    文章

    9694

    浏览量

    154738
  • 面部追踪
    +关注

    关注

    0

    文章

    5

    浏览量

    10361
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    在 VisionFive 2 上使用线跟踪器

    线跟踪器汽车或机器人用于控制小船或机器人沿着黑色或白色线移动。此外,还可以使用特定的黑白色块来检测特定物品的正确放置。
    发表于 03-05 08:01

    深入解析MAX6877/MAX6878/MAX6879:多电压电源跟踪器/排序/监控

    深入解析MAX6877/MAX6878/MAX6879:多电压电源跟踪器/排序/监控 在电子系统设计中,电源管理是至关重要的一环。对于需要电压跟踪或排序的系统,一款性能出色的电源管
    的头像 发表于 02-28 17:20 1257次阅读

    LTC2927:灵活的单电源跟踪控制器,满足多样电源需求

    LTC2927:灵活的单电源跟踪控制器,满足多样电源需求 在电子设备的设计中,电源管理至关重要,尤其是在需要对多个电源进行跟踪和排序的应用场景中。今天,我们就来深入了解一下 Linear
    的头像 发表于 02-28 15:50 177次阅读

    LTC2926:MOSFET控制的电源跟踪器的全面解析

    LTC2926:MOSFET控制的电源跟踪器的全面解析 在电子设计领域,电源管理是至关重要的一环,尤其是对于需要精确电源跟踪和排序的应用。今天我们要深入探讨的是Linear Technology
    的头像 发表于 02-28 15:45 249次阅读

    LTC2921/LTC2922系列电源跟踪器与输入监视:特性、应用与设计要点

    LTC2921/LTC2922系列电源跟踪器与输入监视:特性、应用与设计要点 在电子设备的设计中,电源管理是至关重要的一环。尤其是在多电源系统中,如何确保各个电源的稳定、可靠运行,以及实现电源之间
    的头像 发表于 02-28 15:45 277次阅读

    低电压三重热插拔控制器/电源排序/电压跟踪器:MAX5930的应用与设计

    低电压三重热插拔控制器/电源排序/电压跟踪器:MAX5930/MAX5931的应用与设计 在电子设备的设计中,热插拔功能对于提高系统的可维护性和可靠性至关重要。今天我们将深入探讨MAXIM公司
    的头像 发表于 02-10 15:55 491次阅读

    基于级联分类人脸检测基本原理

    本次分享的内容是基于级联分类人脸检测基本原理 1) 人脸检测概述 关于人脸检测算法,目前主流方法分为两类,一类是基于知识,主要方法包括模板匹配,
    发表于 10-30 06:14

    TPIC2010 串行接口控制的 9 通道电机驱动数据手册

    TPIC2010是一款适用于超薄型或超薄型ODD的超低噪声型电机驱动IC。 由串行I/F控制的9通道驱动IC最适合驱动主轴电机、雪橇
    的头像 发表于 10-21 09:37 808次阅读
    TPIC2010 串行接口<b class='flag-5'>控制</b>的 9 通道<b class='flag-5'>电机</b>驱动<b class='flag-5'>器</b>数据手册

    ‌DRV8711 步进电机控制器技术文档总结

    DRV8711器件是一个步进电机控制器,它使用外部 N 沟道 MOSFET 驱动一个双极步进电机或两个有刷直流电机。集成了微步进索引,能够
    的头像 发表于 10-17 15:09 1101次阅读
    ‌DRV8711 步进<b class='flag-5'>电机</b><b class='flag-5'>控制器</b>技术文档总结

    替代LM5117同步降压控制器可编程电流限制及跟踪功能

    85V输入电压范围#峰值电流模式控制#自适应死区输出驱动级控制#自由运行或同步运行时钟频率高达750KHz#可选二极管续流模式#可编程电流限制#可编程软启动和
    发表于 08-18 11:27

    手持吸尘模式自适应电机控制与湍流抑制驱动方案

    手持吸尘作为现代家庭清洁的重要工具,其核心性能取决于电机控制技术与气流优化能力。随着用户对清洁效率、噪音控制和续航能力的要求不断提高,多模式
    的头像 发表于 08-12 17:45 1194次阅读
    手持吸尘<b class='flag-5'>器</b>多<b class='flag-5'>模式</b>自适应<b class='flag-5'>电机</b><b class='flag-5'>控制</b>与湍流抑制驱动方案

    TRKRLDOEVM-119通追踪LDO评估模块技术解析

    。TRKRLDOEVM-119模块可适应采用SOT-23(DDA)和SOIC-8(D)封装的LDO跟踪器器件。该模块符合汽车应用要求。TRKRLDOEVM-119模块用于动力总成排气传感、动力总成压力传感、车身
    的头像 发表于 08-11 15:41 1061次阅读
    TRKRLDOEVM-119通<b class='flag-5'>用</b>追踪LDO评估模块技术解析

    基于无刷直流电机的积分变结构控制器抑制转矩脉动

    摘 要:文章基于无刷直流电机设计了一种积分变结构(IVSC)控制器,以抑制转矩脉动。在利用传统电流控制技术中,如果反电动势(EMF)是一种非理想的梯形波,则较易导致转矩脉动。基于此,文章在换流
    发表于 07-29 16:24

    Texas Instruments TPS7B4260-Q1低压差 (LDO) 电压跟踪器数据手册

    Texas Instruments TPS7B4260-Q1低压差 (LDO) 电压跟踪器设计用于通过线束为非板载传感提供可靠的电源,即使在恶劣的汽车环境中也可工作。在这种恶劣的工作条件下,线束中
    的头像 发表于 07-04 10:03 850次阅读
    Texas Instruments TPS7B4260-Q1低压差 (LDO) 电压<b class='flag-5'>跟踪器</b>数据手册

    同步电机在位置随动系统中跟踪误差的分析与研究

    跟踪最终位置过程的不确定性和传统PID控制器超调量大,调节时间长的缺点,设计了Fuzzy-LQR-PD控制算法来提高位置跟踪精度,通过Matlab软件对该算法进行仿真,并由STEP7编
    发表于 06-23 07:07