手把手教你自制六足仿生机器人

大鱼机器人 2023-06-28 16:51

摘要:经过大一那次失败之后,我决定暂时停止该项目的开发,转而先去学习那些有关嵌入式开发的基础知识,等以后有能力的时候再去独立完成这个六足机器人。很幸运的是在我大学本科即将结束的时候,我已掌握了足够的知识来完成那个曾经困扰我已久的机器人项目,于是我花了几周的时间完成了这个六足机器人,算是了却了自己的一个心愿吧。

一、前言

这个六足机器人是我在大四做的,是我大学本科生涯的最后一个个人项目。至于为什么我要做六足机器人,还要从高考完之后说起:当时刚考完的我一直想做一些有意思的事情,直到有一天我发现了一个叫PVCBOT的网站,里面记录了很多如何使用PVC材料来制作简单机器人的教程,其中有一款叫做PVC六足机器昆虫的机器人彻底震撼了我,当时看完教程之后我就下定决心也要做一个类似的六足机器人,于是我便从懒猫侠前辈那里购买了六足机器人套件(目前应该已经绝版了),并打算按照提供的教程完成自己的六足机器人,但无奈当时的我所掌握的知识太少,什么单片机、串口通信、舵机PWM、电源管理、传感器、舵机控制板等都不懂,特别是机械结构方面我更是一窍不通,所以大一那会儿我还闹出了笑话:用硬纸板做六足机器人的肢体,在安装好舵机并通电测试后,眼睁睁地看着自己的“纸板六足”在舵机的震动下不断地解体。。。

二、概述

六足仿生机器人是一个拥有十八个关节自由度的迷你多足机器人,它可以实现红外遥控、超声波避障等基本功能。机器人的硬件核心为Arduino Nano,并采用串口通信的方式与24路舵机控制板进行数据交互,从而间接完成对所有舵机旋转角度的精确控制,最终使机器人能够以各种不同的步态进行移动。当然,这个机器人项目的软件依旧开源,具体代码可以从我的GitHub仓库上获得。

三、制作

六足机器人的整个制作过程主要分为机械和电子两部分,由于教程中每一步的图片都非常清楚,所以机械这部分没花费我太多的时间和精力。而电子部分则全部是我自己设计的,虽然原理难度不大,但是要根据机器人的机械结构来选择洞洞板的摆放位置并且要完成其上电子元件的布局和焊接工作确实也比较费功夫,而且有的时候如果处理的不好还要返工,不过所幸自己在焊电路前就已经规划好了,所以电路部分的制作也还算顺利。

在接下来的篇幅中,我会尽可能详细地讲解机器人制作过程中的一些具体步骤和细节,如果你对机器人的原理和最后的效果更感兴趣的话,可以跳过本小节直接阅读原理和效果章节。

3.1 机械

六足小腿

如下图所示,六足的小腿部分主要由两片PVC材质的肢体通过叠加而成,而关节部分则使用的是9G金属齿舵机,只要两个自攻螺丝便可将PVC肢体牢牢固定在舵机上,从而保证六足小腿在与地面接触时可以有足够的力量来支撑整个躯体。

因为是六足机器人,所以同样结构的小腿要再做五个出来。注意:机器人的躯体每边有三个小腿,左右两两对称,所以在组装的时候肢体和舵机安装的位置是有讲究的,要保证结构对称且不能装反。

六足大腿

关节

六足大腿的关节结构比之前介绍过的小腿关节要略微复杂一些,因为大腿的关节包含了机器人足体上下和前后两个维度的运动,所以需要两个舵机来实现。如下图所示,首先我们使用螺丝将一个舵机固定在方形的关节肢体里。

接着我们要重复以上的安装步骤再制作出六个类似的肢体结构。不过在制作的过程中也要注意机器人左右两侧各三个肢体结构要保持对称。

然后我们需要将六个舵机分别插入到之前预留好的肢体空槽里,并保证每组的两个舵机在位置上是互相垂直的,即下图中舵机圆形旋转轴的朝向要一前一上。

接下来安装六足大腿关节的固定片,即将固定片卡到下图中正面那个舵机的圆形旋转轴上。固定片,顾名思义是用来固定的,用在这里主要是防止关节处的两个舵机因足体的震动而彼此之间出现位置上的偏移。

最后分别使用两条塑料扎带对每组关节进行进一步的加固,其中一条从固定片上方穿过,起到束紧固定片的作用,而另一条则穿过关节侧面的小孔对结构进行固定。

大腿

六足的大腿是由两个PVC材质的长方形连杆组成,从下图中可以很清楚地看到每个连杆的左右两侧均安装有配套的舵盘,它们的作用主要是用于连接六足的小腿关节和大腿关节。

六足足体

如下图所示,使用螺丝将之前已经制作好的六对小腿和大腿肢体对应连接在一起。虽然拧螺丝本身没什么难度,但是在哪个位置用螺丝来固定舵机还是有规定的:即舵机在被肢体连接固定之前要让其旋转轴回归到原始的中点位置上(旋转范围为0~180°的舵机,其中点位置为90°),这样做的目的是让所有的舵机都能够拥有最合适的运动范围,从而防止机器人在移动时出现足体运动不对称的情况。至于如何让舵机回归中点,一种办法是使用现成的舵机调试板,只要移动旋钮便可调节舵机的位置;另一种是编写Arduino程序,让舵机在上电后自动归中。我用的是第二种方法,感觉效果还不错。

接下来,我们要把六足的足体全部安装到其顶部躯体上。同理,在安装前要确保需要连接固定的舵机已经回归到中点位置,除此之外还要提前规定好躯体的哪一侧是机器人的头部,哪一端是机器人的尾部,不要在安装的时候把足体装反了。

如图所示,我们首先可以找一个稍微有点高度的物品将机器人顶部垫高,然后使用扎带依次将每个足体的三条舵机线捆绑起来,这样不仅看上去更加美观,便于之后的整理和连线,而且也可以有效阻止舵机线与运动中的足体发生缠绕甚至被扯断等情况的出现,毕竟自己大学在机器人基地的时候就曾亲身经历过电机线在机械臂移动的过程中被狠狠地扯断的悲剧。。。

最后,我们只需要把锂电池用扎带固定在底部躯体的尾部,然后将供电线和充电线分别引出,再把所有已经扎好的舵机线按照顺序塞到躯体当中,并用螺丝将顶部和底部两个躯体拧紧合二为一便大功告成了(由于这部分没有拍照,所以就用文字叙述了orz)。

3.2 电子

电源管理

下图是机器人的电源管理模块。电源管理模块主要包含电源、降压电路和控制电路等,具体的原理部分请看下面原理中的电源管理章节。

下图是电源管理模块的背面。为了让焊接后的电路保持整齐、美观,我尽可能采用锡接走线的方式来完成各元件的电气连接,而没办法走线的地方才使用传统的飞线进行连接。尽管锡接走线的优点很明显,但是它的缺点也比较突出:一个是浪费焊锡,另一个就是容易短路,其中短路问题对机器人的影响还是挺严重的,我记得自己之前就有一次不小心把已经上电的电源管理模块随意放在六足机器人的顶部躯体上,令我没想到的是固定躯体的螺丝的头部正好卡在电路背面电源正负极锡接走线的中间,结果可想而知。

所以,在上电测试之前,大家要先用万能表对焊接过的电路进行短路测试,一定要确保没有多余的焊锡渣残留在电路板上,而且对于使用锡接走线方式焊接的电路板,一定不要让其背面直接与潜在具有导电功能的介质进行接触,可以适当地使用铜柱将板子架高或者用热熔胶把板子背面全都覆盖住,以防止短路问题的发生。

在确保电路不存在任何可能潜在的短路问题后,可像下图所示的那样,对电路模块进行上电测试。测试主要检测电源降压是否达到预期设定的数值,开关的通断逻辑是否正确等。

控制单元

下图是机器人的控制单元模块。该控制单元模块主要由Arduino Nano控制板、HMC58883L电子罗盘传感器、MPU6050惯性测量传感器(图中的底座上未插入)、HC-SR04超声波传感器和红外接收管等组成,为了方便在模块出现问题时能够对其进行更换,我在洞洞板上焊接了一些棑母底座,这样模块就可以直接插在棑母底座上,拆卸很方便。此外,有关电路原理部分的详细介绍可以阅读下面的原理章节。

下图是控制单元模块的背面。跟上面已经介绍过的电源管理模块一样,我使用的依然是锡接走线+飞线的方式对元件进行焊接,由于电气连接比较多,所以焊完之后要对电路进行更加全面和仔细的检查。

如下图所示,由于我的Arduino Nano控制板的USB转串口在之前的寻光小车实验中因短路问题被烧坏了,所以我用的是专门为Arduino最小系统板烧写Bootloader的USBtinyISP编程器来下载程序。经测试,所有模块均能正常工作,那么接下来的工作就只剩下将机器人全部组装好,然后编写和调试代码了。

四、原理

4.1 硬件

以下是该仿生六足机器人的硬件系统连接图:

由上图可知,六足机器人的硬件系统主要由舵机控制、电源管理、核心主控、数据感知和数据通信共五部分组成,接下来进行详细的介绍:

舵机控制

金属齿舵机

本项目六足机器人所配备的舵机具体型号为YZW Y09G,由于该舵机内部电机减速齿轮组使用金属材质打造,所以其价格上要比常见的辉盛SG90塑料齿舵机贵一些,但是性能却相当出色。该舵机标准输入电压范围为4.8v~6.0v(电压稍大于6v也没问题),扭矩范围在1.3kg/cm~1.6kg/cm之间,经测试,十八个舵机共同作用的扭矩可以基本满足支撑机器人躯体以及锂电池等相关负载的需求。当然,由于定位精度有限,所以舵机会存在控制上的死区问题,我的解决办法主要是通过软件补差的方式来消除这个机械结构上的误差,使机器人能够尽可能准确地到达预定的目标位置。

舵机控制板

舵机控制板顾名思义就是能够用于控制多个舵机的电路板,由于传统通过编写程序让单片机输出多路PWM控制信号对于大部分的机器人爱好者来说比较复杂,所以就有高手们将MCU和相关外围电路封装在一起开发了便于使用的舵机控制板。此外,舵机控制板一般都会带有一个PC端的调试软件,只要在建立串口通信的前提下拖动软件界面上的滑块,便能精确且实时地操控舵机的旋转角度,而且还能将调试好的动作组合在一起形成动作组并下载到舵机控制板的芯片中进行保存,为之后核心主控通过串口对其进行调用奠定基础。本项目六足机器人使用的是懒猫侠早期开发的一款24路舵机控制板,具体使用方法见24路舵机控制板板使用说明。

电源管理

电源管理应该算是机器人硬件控制系统里除了核心主控之外最重要的模块了,毕竟传感器坏了机器人还能够四处移动,但是电源部分坏了的话机器人可就只是一个静止的模型了。由于本项目六足机器人采用十八个舵机作为关节执行器,所以尽管9G舵机的耗电量相对标准舵机要小很多,但是十八个舵机加起来所需要的电流大小还是相当惊人的,因此经过一段时间的考量,我最终选择了一款参数为7.4v850mAh的锂电池组作为机器人的电源,其电能满足六足机器人的动力需求。

除了锂电池电源之外,从上面的硬件系统连接图中还可以看到有两个降压电路,其中一个降压电路使用L2596 DC-DC模块将一路电源的电压降到标准的5V,用于给Arduino Nano主控制板供电,而另一路使用的是D25XB80大功率整流桥,它拥有标称800V的最大逆向电压和25A的额定前向电流,在锂电池组充满电的情况下(标称7.4v的锂电池组充满电的电压大概在8.4v左右),连接一片D25XB80可以使电压整体降到大概6.9v,经测试给24路舵机控制板和18个舵机供电是没有问题的。

最后为了方便控制锂电池电源的输入和降压后电源的输出,我并联连接了三个开关,并在并联支路中分别加入了三个LED灯用作电源闭合或断开的显示。关于电源管理的其他内容,大家可以参考一下懒猫侠写的六足机器人动力的分析 这篇博文。

核心主控

核心主控主要负责分析传感器反馈回来的数据,然后给舵机控制板发出动作指令,间接驱动舵机运行到指定角度。在本项目中我使用的核心主控为Arduino Nano,它体型较小,且拥有非常丰富的开发教程和器件驱动库,很容易上手。

数据感知

数据感知模块主要包括HC-04超声波测距传感器、HMC5883L电子罗盘传感器、MPU6050惯性测量传感器和红外接收管,其中超声波测距传感器用来帮助六足机器人避开其正前方的障碍物,而红外接收管则和常见的迷你红外遥控器一同构成了整个六足机器人的遥控系统,红外接收管能够接收经过38kHz载频二次调制生成的红外信号,并将解码后的数据发送给Arduino Nano主控进行相关处理。HMC58883L和MPU6050这两个传感器主要用于六足机器人的运动感知,通过采集它们的数据并进行简单的融合处理便能得到机器人在空间中的位置关系,从而为之后修正机器人在移动过程中的路径偏差提供数据上的保障。不过由于当时开发时间有限,所以这一部分暂未涉及。

数据通信

数据通信包括红外通信、串口通信和蓝牙通信三部分。其中,红外通信在上面的数据感知部分已经进行过简要的介绍了,即采用NEC的编码格式将数据进行相应的编码或解码,并通过红外线的方式完成遥控指令数据的传输;串口通信则主要用在核心主控和舵机控制板之间,根据舵机控制板所规定的数据格式,主控能够发送指令来控制一个舵机或多个舵机旋转到指定的位置;最后的蓝牙通信可以使PC端上的软件与舵机控制板之间建立起无线连接,方便六足机器人动作的调试。

4.2 软件

核心类库

hexapod_bionic_robot.h

该头文件定义了HexapodBionicRobot类,里面声明了机器人避障、处理红外编码信息、处理超声波距离、获取红外编码信息、获取超声波距离和移动机器人躯体等核心函数。

#ifndef HEXAPOD_BIONIC_ROBOT_H
#define HEXAPOD_BIONIC_ROBOT_H

#include 
#include 

#define PIN_IR      2
#define PIN_TX      3
#define PIN_RX      4
#define PIN_TRIG    5
#define PIN_ECHO    6
#define PIN_LED     13
#define DIR_INIT    1
#define DIR_STOP    1
#define DIR_FRONT   2
#define DIR_BACK    3
#define DIR_LEFT    4
#define DIR_RIGHT   5
#define MODE_REMOTE 25
#define MODE_AUTO   26
#define RADIX       10
#define RUNTIME     2400
#define TIMEOUT     30000

class HexapodBionicRobot
{

public:
    HexapodBionicRobot(IRrecv *ir_receiver, decode_results *ir_results);
    void avoidFrontObstacle(void);
    void handleInfraredInformation(void);
    void handleUltrasonicDistance(void);
    void moveRobotBody(uint8_t direction, uint8_t times);
    uint32_t getInfraredInformation(void);
    float getUltrasonicDistance(void);
private:
    int             mode_flag_;
    float           duration_;
    float           distance_;
    IRrecv         *ir_receiver_;
    decode_results *ir_results_;
};

#endif // HEXAPOD_BIONIC_ROBOT_H

hexapod_bionic_robot.cpp

该源文件实现了HexapodBionicRobot类里面所有已经声明的函数,其中getInfraredInformation()函数调用了官方的IRremote库,可以实时获取红外遥控器所发送的红外编码,而handleInfraredInformation()函数则会将获取到的红外编码与已经定义好的进行比对,若符合则跳转入相应的代码块进行处理(机器人前后左右的移动,以及遥控模式或自动模式切换等),当然程序也会通过调用avoidFrontObstacle()函数来判断是否在遥控六足机器人移动的过程中,机器人前方的障碍物距离躯体较近,若距离小于事先设定的阈值,机器人便会自动后退或停止以进行避让。

#include "hexapod_bionic_robot.h"

#define DEBUG 1

HexapodBionicRobot::HexapodBionicRobot(IRrecv *ir_recviver,
                                       decode_results *ir_results)
    : ir_receiver_(ir_recviver),
      ir_results_(ir_results)
{
    pinMode(PIN_LED, OUTPUT);
    pinMode(PIN_TRIG, OUTPUT);
    pinMode(PIN_ECHO, INPUT);

    mode_flag_ = MODE_REMOTE;

    duration_ = 0.0;
    distance_ = 0.0;
}

void HexapodBionicRobot::avoidFrontObstacle(void)
{
    float distance = getUltrasonicDistance();
    Serial.println(distance);

    if (distance == false) {
        return ;
    }
    else if (distance <= 2.5) {
        moveRobotBody(DIR_STOP, 2);
    }
    else if (distance <= 5.0) {
        moveRobotBody(DIR_BACK, 2);
    }
}

void HexapodBionicRobot::handleUltrasonicDistance(void)
{
    float distance = getUltrasonicDistance();

    if (distance == false) {
        return ;
    }
    else if (distance <= 5.0) {
        digitalWrite(PIN_LED, HIGH);
#if DEBUG
        Serial.println("Warning! Distance is too close!!!");
#endif
    }
    else {
        digitalWrite(PIN_LED, LOW);
    }
#if DEBUG
    Serial.print("Distance: ");
    Serial.print(distance);
    Serial.println("cm");
#endif
    delay(100);
}

void HexapodBionicRobot::handleInfraredInformation(void)
{
    float distance = 0.0;
    uint32_t ir_results = getInfraredInformation();

    if (ir_results == false) {
        return ;
    }
    else {
#if DEBUG
        Serial.print("Infrared code: ");
        Serial.println(ir_results, HEX);
#endif
        if (ir_results == 0XFF629D) {
            mode_flag_ = MODE_REMOTE;
        }
        else if (ir_results == 0XFFE21D) {
            mode_flag_ = MODE_AUTO;
        }

        if (mode_flag_ == MODE_REMOTE) {
            digitalWrite(PIN_LED, LOW);
            if (ir_results == 0xFF02FD) {
                moveRobotBody(DIR_FRONT, 2);
                delay(RUNTIME);
            }
            else if (ir_results == 0xFF9867) {
                moveRobotBody(DIR_BACK, 2);
                delay(RUNTIME);
            }
            else if (ir_results == 0xFFE01F) {
                moveRobotBody(DIR_LEFT, 2);
                delay(RUNTIME);
            }
            else if (ir_results == 0xFF906f) {
                moveRobotBody(DIR_RIGHT, 2);
                delay(RUNTIME);
            }
            else if (ir_results == 0xFFA857) {
                moveRobotBody(DIR_STOP, 2);
                delay(RUNTIME);
            }
            avoidFrontObstacle();
        }
        else if (mode_flag_ == MODE_AUTO) {
            digitalWrite(PIN_LED, HIGH);
            while (ir_results != 0XFF629D) {
                ir_results = getInfraredInformation();
                moveRobotBody(DIR_FRONT, 2);
                delay(RUNTIME);
                avoidFrontObstacle();
            }
            mode_flag_ = MODE_REMOTE;
        }
    }
}

void HexapodBionicRobot::moveRobotBody(uint8_t direction, uint8_t times)
{
    char string_direction[5];
    char string_times[5];

    itoa(direction, string_direction, RADIX);
    itoa(times, string_times, RADIX);

    Serial.print("#");
    Serial.print(string_direction);
    Serial.print("G");
    Serial.print(string_times);
    Serial.println("C");
}

uint32_t HexapodBionicRobot::getInfraredInformation(void)
{
    if (ir_receiver_->decode(ir_results_)) {
        ir_receiver_->resume();
        return ir_results_->value;
    }
    else {
        return false;
    }
}

float HexapodBionicRobot::getUltrasonicDistance(void)
{
    duration_ = 0.0;
    distance_ = 0.0;

    digitalWrite(PIN_TRIG, LOW);
    delayMicroseconds(10);
    digitalWrite(PIN_TRIG, HIGH);
    delayMicroseconds(10);
    digitalWrite(PIN_TRIG, LOW);

    duration_ = pulseIn(PIN_ECHO, HIGH, TIMEOUT);

    if (duration_ == 0.0) {
        return false;
    }
    else {
        distance_ = duration_ * 0.017;
        return distance_;
    }
}

测试代码

hexapod_bionic_robot_test.ino

该测试代码的原理非常简单,首先setup()函数会以115200的波特率初始化并打开串口,然后Arduino Nano会向串口发送#1G2C(1号动作组循环运行2次)让六足机器人站立起来,紧接着程序会使能红外接收管,让其可以接收遥控器发送的红外编码。等初始化结束后,主程序会跳转到loop()函数执行HexapodBionicRobot类对象的handleInfraredInformation()函数完成红外遥控以及超声波避障等功能。

#include 
#include 

IRrecv         g_ir_receiver(PIN_IR);
decode_results g_ir_results;

void setup()
{
    Serial.begin(115200);
    Serial.println("#1G2C");
    g_ir_receiver.enableIRIn();
}

void loop()
{
    HexapodBionicRobot hexapod_bionic_robot(&g_ir_receiver, &g_ir_results);
    hexapod_bionic_robot.handleInfraredInformation();
}

五、成果

以下是制作完成后的成果图和测试视频:

六、总结

回想起当初,自己就是看了六足机器昆虫-你的下一个足式移动机器人这篇教程才开始迷上六足机器人的,没想到大四快毕业的时候自己能有机会完成这个属于自己的六足仿生机器人,说实话当看到六足机器人第一次从团身状态下依靠自己的力量站立起来时,我的内心是无比激动的,尽管由于舵机的力矩偏小导致机器人的足体在支撑地面时会有轻微吱吱的抖动,但是得益于十八个关节自由度,六足机器人可以做出很多机器人都无法做出的复杂动作,我想这也许就是多足机器人的魅力所在吧!

不过话说回来,对于机器人初学者来说,制作一个六足机器人的难度相较于轮式机器人还是非常大的,而且投入的时间和资金成本也比较多。如果你的动手能力和技术水平足够强,且跟我一样认为六足机器人非常酷的话,你也可以尝试去做一台属于自己的六足机器人并为它扩展更多有意思的功能(比如我加入了MPU6050和HMC5883L模块来做机器人运动感知与矫正,可惜因时间有限没能实现)。最后我总结一下能成功自制六足机器人所需要的三个关键因素:1、从始至终发自内心的热爱;2、拥有机械、电子和软件方面的专业知识;3、为实现最终目标而坚持不懈的努力!


文章作者:缪宇飏,myyerrol  
转载于:https://myyerrol.io/zh-cn/2018/05/21/diy_robots_2_hexapod_bionic_robot/
-END-

往期推荐:点击图片即可跳转阅读

其实吧,学嵌入式也不是很难。

我将GuiLite移植到了STM32F4开发板上

手把手教你做一辆迷你平衡摩托车

大鱼机器人 一个专注于机器人技术,单片机,嵌入式系统,智能家居,智能设备,PCB设计,IT最新动态的自媒体。此外,还有海量学习资源等你来领取。作者:张巧龙,个人微信号:well_xiaolong。欢迎关注公众号,名称:大鱼机器人,公众号ID:All_best_xiaolong
评论
  • 本文介绍编译Android13 ROOT权限固件的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。关闭selinux修改此文件("+"号为修改内容)device/rockchip/common/BoardConfig.mkBOARD_BOOT_HEADER_VERSION ?= 2BOARD_MKBOOTIMG_ARGS :=BOARD_PREBUILT_DTB
    Industio_触觉智能 2025-01-08 00:06 100浏览
  •  在全球能源结构加速向清洁、可再生方向转型的今天,风力发电作为一种绿色能源,已成为各国新能源发展的重要组成部分。然而,风力发电系统在复杂的环境中长时间运行,对系统的安全性、稳定性和抗干扰能力提出了极高要求。光耦(光电耦合器)作为一种电气隔离与信号传输器件,凭借其优秀的隔离保护性能和信号传输能力,已成为风力发电系统中不可或缺的关键组件。 风力发电系统对隔离与控制的需求风力发电系统中,包括发电机、变流器、变压器和控制系统等多个部分,通常工作在高压、大功率的环境中。光耦在这里扮演了
    晶台光耦 2025-01-08 16:03 80浏览
  • 故障现象一辆2017款东风风神AX7车,搭载DFMA14T发动机,累计行驶里程约为13.7万km。该车冷起动后怠速运转正常,热机后怠速运转不稳,组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断 用故障检测仪检测,发动机控制单元中无故障代码存储;读取发动机数据流,发现进气歧管绝对压力波动明显,有时能达到69 kPa,明显偏高,推断可能的原因有:进气系统漏气;进气歧管绝对压力传感器信号失真;发动机机械故障。首先从节气门处打烟雾,没有发现进气管周围有漏气的地方;接着拔下进气管上的两个真空
    虹科Pico汽车示波器 2025-01-08 16:51 92浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2025-01-09 09:58 19浏览
  • 「他明明跟我同梯进来,为什么就是升得比我快?」许多人都有这样的疑问:明明就战绩也不比隔壁同事差,升迁之路却比别人苦。其实,之间的差异就在于「领导力」。並非必须当管理者才需要「领导力」,而是散发领导力特质的人,才更容易被晓明。许多领导力和特质,都可以通过努力和学习获得,因此就算不是天生的领导者,也能成为一个具备领导魅力的人,进而被老板看见,向你伸出升迁的橘子枝。领导力是什么?领导力是一种能力或特质,甚至可以说是一种「影响力」。好的领导者通常具备影响和鼓励他人的能力,并导引他们朝着共同的目标和愿景前
    优思学院 2025-01-08 14:54 82浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 115浏览
  • 1月7日-10日,2025年国际消费电子产品展览会(CES 2025)盛大举行,广和通发布Fibocom AI Stack,赋智千行百业端侧应用。Fibocom AI Stack提供集高性能模组、AI工具链、高性能推理引擎、海量模型、支持与服务一体化的端侧AI解决方案,帮助智能设备快速实现AI能力商用。为适应不同端侧场景的应用,AI Stack具备海量端侧AI模型及行业端侧模型,基于不同等级算力的芯片平台或模组,Fibocom AI Stack可将TensorFlow、PyTorch、ONNX、
    物吾悟小通 2025-01-08 18:17 20浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 123浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 150浏览
  • 一个真正的质量工程师(QE)必须将一件产品设计的“意图”与系统的可制造性、可服务性以及资源在现实中实现设计和产品的能力结合起来。所以,可以说,这确实是一种工程学科。我们常开玩笑说,质量工程师是工程领域里的「侦探」、「警察」或「律师」,守护神是"墨菲”,信奉的哲学就是「墨菲定律」。(注:墨菲定律是一种启发性原则,常被表述为:任何可能出错的事情最终都会出错。)做质量工程师的,有时会不受欢迎,也会被忽视,甚至可能遭遇主动或被动的阻碍,而一旦出了问题,责任往往就落在质量工程师的头上。虽然质量工程师并不负
    优思学院 2025-01-09 11:48 25浏览
  • 在智能网联汽车中,各种通信技术如2G/3G/4G/5G、GNSS(全球导航卫星系统)、V2X(车联网通信)等在行业内被广泛使用。这些技术让汽车能够实现紧急呼叫、在线娱乐、导航等多种功能。EMC测试就是为了确保在复杂电磁环境下,汽车的通信系统仍然可以正常工作,保护驾乘者的安全。参考《QCT-基于LTE-V2X直连通信的车载信息交互系统技术要求及试验方法-1》标准10.5电磁兼容试验方法,下面将会从整车功能层面为大家解读V2X整车电磁兼容试验的过程。测试过程揭秘1. 设备准备为了进行电磁兼容试验,技
    北汇信息 2025-01-09 11:24 20浏览
  • 在过去十年中,自动驾驶和高级驾驶辅助系统(AD/ADAS)软件与硬件的快速发展对多传感器数据采集的设计需求提出了更高的要求。然而,目前仍缺乏能够高质量集成多传感器数据采集的解决方案。康谋ADTF正是应运而生,它提供了一个广受认可和广泛引用的软件框架,包含模块化的标准化应用程序和工具,旨在为ADAS功能的开发提供一站式体验。一、ADTF的关键之处!无论是奥迪、大众、宝马还是梅赛德斯-奔驰:他们都依赖我们不断发展的ADTF来开发智能驾驶辅助解决方案,直至实现自动驾驶的目标。从新功能的最初构思到批量生
    康谋 2025-01-09 10:04 21浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球中空长航时无人机产值达到9009百万美元,2024-2030年期间年复合增长率CAGR为8.0%。 环洋市场咨询机构出版了的【全球中空长航时无人机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球中空长航时无人机总体规模,包括产量、产值、消费量、主要生产地区、主要生产商及市场份额,同时分析中空长航时无人机市场主要驱动因素、阻碍因素、市场机遇、挑战、新产品发布等。报告从中空长航时
    GIRtina 2025-01-09 10:35 19浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 211浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 128浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦