机器人制作开源方案 | 桌面级机械臂--本体说明+驱动及控制

一、本体说明 

 

 1. 机械臂整体描述

      该桌面级机械臂为模块化设计,包含主机模块1个、转台模块1个、二级摆动模块1个、可编程示教盒1个、2种末端执行器、高清摄像头,以及适配器、组装工具、备用零件等。可将模块快速组合为一个带被动关节的串联3自由度机械臂,亦可进一步加装、更换执行器、传感器来完成各类控制实验。

 1.1 机械臂清单介绍

序号

名称

备注

1

本体

包括转台、小臂、大臂、执行机构

2

执行机构

如:手爪执行器、气动执行器

3

主机

包括树莓派、Arduino 主控板等相关的配置

4

显示屏

5

电子部件

如:摄像头、遥控模块

机械臂的主要配置清单

1.2 产品配置

机械臂的主要硬件图如下所示:

主要硬件图

组成的主要硬件参数如下表所示:

2. 机械臂结构说明

该机械臂结构是一个带被动关节的3自由度,包含一个1自由度的转台和带被动关节的2自由度关节。

      其中2自由度关节模块分为大臂和小臂:大臂通过1.76减速比的齿轮箱进行传动,小臂通过二级带传动实现传动和被动关节设计。被动关节可以保证执行器末端运动时指向保持一个方向,其中一级带传动控制小臂转动,另一级带传动使末端方向保持一致。

如下所示是装有手爪、摄像头的实物图:

装有手爪和摄像头的实物图

其中的执行机构部分(即现在装手爪执行器的地方)还可以灵活的替换为气动部件(见下图)。

装有气动部件的实物图

3. 机械臂的电路连接

       在进行电路连接前,先来了解一下主机的布局及引脚图。下图是主机的布局实物图,本实验中主要用到总线、PWM(D4)、TX2/RX2。

主机正面图  
主机电路引脚图(从右向左与主机对应)

按下图所示进行机械臂的电路连接:

机械臂与主机外设的接线图
显示屏、鼠标、键盘与主机进行连接

开机注意事项

      机械臂的状态主要包含非复位状态、复位状态(其中复位状态指的是:大臂转动到垂直状态、小臂转动到水平状态)。只有开机看到机械臂能够从非复位状态转到复位状态,后续实验才能正常进行;否则可能会出现烧录程序,但机械臂不按预期运动的现象。

机械臂非复位状态
机械臂的复位状态

4. 软硬件环境配置及使用

4.1软硬件环境介绍

机器人可利用视觉识别技术,进行识别、追踪目标、定位等功能。我们可以利用上位机来控制机器人的大脑,用下位机控制设备。  

上位机是指:

      人可以直接发出操控命令的计算机,一般是PC或者计算机的屏幕上显示各种信号变化(液压,水位,温度等),本实验将利用树莓派屏幕上显示视觉识别的结果。

树莓派及Ros系统

下位机是指:

      直接控制设备获取设备状况的的计算机,一般是PLC/单片机之类的,本实验将利用Arduino开源主控板充当下位机进行开发。

Arduino主控板及编程IDE

      上位机发出的命令首先传给下位机,下位机再根据此命令解释成相应时序信号,直接控制相应设备。下位机读取设备状态数据(一般模拟量),转化成数字信号反馈给上位机。选择合适的平台及编程环境、函数库,就可以进行机器人结构、运动控制、视觉开发等多方面的应用,控制机器人的行为。

4.2在树莓派上安装Ros及功能包

      为了便于使用,本实验中已把树莓派和Arduino板子进行了组合,设计出主控盒子(又叫主机),方便使用。主控盒子已预装好操作系统、编程环境以及需要用到的功能包。

主控盒子(主机)

      对树莓派上的环境配置主要包括:安装Raspberry Pi OS (32-bit) with desktop操作系统、ROS、配置ROS环境、Arduino IDE、功能包。其中本实验需要的功能包包括视觉识别库(OpenCV2.4.9)、二维码识别库(zbar)。为了方便使用,本实验已做好了树莓派镜像文件,已经预安装好上述开发环境,电路连接好后可直接使用。当把主机与显示屏连接后,找到文末资料下载中的color_experiment_ws文件夹即可。

5. 资料下载

样机3D文件及程序源代码资料详见 桌面级机械臂-本体说明

二、驱动及控制

1. 总线舵机模式的设置

      机械臂驱动采用总线式电机驱动,该总线式电机具有多种模式,如360°圆周模式、270°逆时针模式、270°顺时针模式等。总线舵机采用单总线通信方式,与传统舵机相比,最大特点就是舵机之间可串联,最多可级联255个舵机。

      打开文末资料内的“总线舵机ID及模式更改资料”,为总线舵机设置模式,包括转台、大臂、小臂三部分,需要分别为总线舵机设置ID、工作模式。关于总线舵机ID设置如下图所示:

机械臂的各舵机ID图

接下来开始为机械臂的各部分设置相应的舵机模式:

各部分

总线舵机ID

计划设置舵机模式

代表含义

转台

000

#000PMOD2!

舵机模式,角度最大范围270 度,方向逆时针

大臂

001

#001PMOD2!

同上

小臂

002

#002PMOD2!

同上

器材准备:PC机或笔记本电脑(windows操作系统、Arduino IDE)、以及下图所示的器材。

操作过程:分别为机械臂的转台、大臂、小臂设置舵机模式,并能设置其初始角度。

1.1设置转台的舵机模式

第一步:按下图所示连接电路。

第二步:打开文末资料内的”总线舵机ID及模式更改资料\串口调试助手\sscom5.13.1.exe”(如下图所示)。

第三步:选择端口号、波特率,并打开串口。

先在菜单栏:串口设置-打开串口设置,选择端口号、波特率,点击“ok”即可。

接着点击“打开串口”,并点击“扩展”。

这里已经把命令设置好了,只需要依次点击描红的命令(如下图所示),就可以完成转台模式的设置,即可观察到转台转动到指定角度。

1.2 设置大臂的舵机模式

第一步:按下图所示把大臂的舵机线与小模块进行电路连接(注意:请先把小模块断电)。

第二步:在串口调试助手里,选择端口号、波特率并打开串口。

第三步:依次点击下边描红的命令,就可完成大臂模式的设置,同时可观察到大臂转动。

1.3设置小臂的舵机模式

第一步:按下图所示把小臂的舵机线与小模块进行电路连接(注意:请先把小模块断电)。

第二步:在串口调试助手里,选择端口号、波特率并打开串口。

第三步:依次点击下边描红的命令,就可完成小臂模式的设置,同时可观察到小臂转动。

这样就完成了总线舵机模式的设置工作,接下来的实验都是基于这种舵机模式来完成的。

2. 机械臂的单关节控制

实现思路:串口发送命令,控制单关节控制(提示:需要先设置好舵机模式)

器材准备:机械臂本体、主控盒、显示屏、键盘、鼠标(如下图所示)

装有手爪和摄像头的实物图

操作步骤:

① 下载文末资料内的参考程序color_experiment_ws\src\Contril_Single_Joint\arm_driver\arm_driver.ino:

/*------------------------------------------------------------------------------------版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.Distributed under MIT license.See file LICENSE for detail or copy athttps://opensource.org/licenses/MITby 机器谱 2023-08-02 https://www.robotway.com/------------------------------*//*-----------------------------------------------------------------------------------------------------------------实验功能:实现单关节控制机械臂控制。实验思路:通过串口发送命令,控制机械臂单关节控制。首先程序实现读取串口发送的数据,接着处理串口发送的数据,最后程序将处理好的数据通过Serial1发送给机械臂达到控制机械臂的效果。注意:串口发送命令格式为[机械臂部件pwm](pwm范围是[500~2500])。例如:rm 1500 底盘转到1500um 1500 大臂转到1500lm 1500 小臂转到1500实验接线:(主要接线)机械臂通信口-------------(机械臂)电控箱机械爪(舵机)---------------(执行器)电控箱其他线路按照教材图片连接。Created 2020.7.16     By:Boris.yuan-----------------------------------------------------------------------------------------------------------------*/#include <Servo.h>#define CTL_BAUDRATE 115200 //总线舵机波特率#define SERIAL_PRINTLN Serial1#define SerialBaudrate 115200#define RM "rm"#define UM "um"#define LM "lm"String receive_string = "";int catch_red_numbers=0;int catch_blue_numbers=0;int current_angle=0;void setup() {// put your setup code here, to run once:delay(1100);Serial.begin(SerialBaudrate);SERIAL_PRINTLN.begin(CTL_BAUDRATE);Bus_servo_angle_init();delay(2000);Serial.println("Please input your commond......");}void loop() {while(Serial.available()>0){String commond = "";long n_step = 0;int index = 0;commond = Serial.readStringUntil('\n');index = commond.indexOf(' ');n_step = commond.substring(index+1).toInt();commond = commond.substring(0,index);Serial.print(commond);Serial.print('\t');Serial.println(n_step);if(commond==RM){if( (n_step<500) || (n_step>2500) ){Serial.println("Sorry,the angle is out of range!");}else{ArmSingleServoTo(0,n_step);}n_step=0;commond="";}if(commond==UM){if( (n_step<500) || (n_step>2500) ){Serial.println("Sorry,the angle is out of range!");}else{     ArmSingleServoTo(1,n_step);}n_step=0;commond="";}if(commond==LM){if( (n_step<500) || (n_step>2500) ){Serial.println("Sorry,the angle is out of range!");}else{     ArmSingleServoTo(2,n_step);}n_step=0;commond="";}Serial.println();Serial.println("------------------------------------");}}

② 打开串口,查看返回的结果值。

注意:串口发送命令格式为[部件 pwm](pwm范围是[500~2500])。

串口发送命令例子

代表含义

rm 1500

底盘转到1500

um 1500

大臂转到1500

lm 1500

小臂转到1500

首先,设置波特率并等待程序初始化,界面如下图所示:

接下来,可以发送控制转台运动的例子,来观看结果。

输入格式如下图所示,就可以看见机械臂的转台运动:

同时也可看见串口显示数据。

下面是本实验中分别针对转台、大臂、小臂转动位置进行测试的结果(如下图所示)。

3. 操作杆方案

实现思路:通过操作杆控制气动盒的开、关; 当气动盒打开后,实现可以吸物块的功能。

实验器材及接线:如下图所示。

操作步骤:

第一步:Basra主控板Bigfish扩展板  Birdmen手柄扩展板 堆叠在一起。

Birdmen手柄扩展板引脚图如下图所示:

第二步:下载文末资料内的参考程序color_experiment_ws\src\Rocker_Control_Sucker\rocker_contril_sucker\rocker_contril_sucker.ino:

/*------------------------------------------------------------------------------------版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.Distributed under MIT license.See file LICENSE for detail or copy athttps://opensource.org/licenses/MITby 机器谱 2023-08-03 https://www.robotway.com/------------------------------*//*实验功能:摇杆模块控制吸盘开关。实验思路:读取摇杆模块数值,判断该数据,进而根据数据选取区间,编写不同区间,吸盘状态。实验操作:将该例程下载到arduino开发版,按照实验教程接线,完成后,给模块上电,试着滑动摇杆模块,控制吸盘开关状态。实验接线:气动箱信号脚连接到Barsa的D12引脚Create 2020.7.17   By:Boris.yuan*/#define Sucker_Pin 12#define Rocker_Pin A1void setup() {// put your setup code here, to run once:delay(1000);Serial.begin(9600);pinMode(Sucker_Pin,OUTPUT);pinMode(Rocker_Pin,INPUT);}void loop() {// put your main code here, to run repeatedly:int receive_Rocker_data = analogRead(Rocker_Pin);Serial.println(receive_Rocker_data);if( (receive_Rocker_data<200) ){digitalWrite(Sucker_Pin,LOW);}else if( (receive_Rocker_data>800) ){digitalWrite(Sucker_Pin,HIGH);}delay(30);}

第三步:左侧的摇杆,当向右按下时,气动盒开关打开,可以吸取物品(如下图所示);当向左按下时,气动盒开关关闭。

4. 机械臂的无线遥控

本实验将通过 蓝牙 结合一个可编程示教器进行无线遥控的学习,包含蓝牙通信设定、无线控制。

4.1 两个蓝牙通信设定

实验目的:测试蓝牙主从模块数据发收。

连接在Birdmen手柄扩展板上的蓝牙模块为主模块;连接在带开关通信扩展坞上的蓝牙模块为从模块。

实现思路:当蓝牙主模块发送数据(如123)时,蓝牙从模块能收到该数据(123),代表通信成功。

实验器材:如下图所示。

蓝牙通信模块及配套线

操作步骤:

      第一步:先给Basra主控板下载蓝牙主模块程序。

① 先按下图所示连接好电路(注意:蓝牙通信扩展坞的开关需拨到左侧)。

② 然后下载文末资料内的参考程序color_experiment_ws\src\Bluetooth_communication\Master\Master.ino:

/*------------------------------------------------------------------------------------版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.Distributed under MIT license.See file LICENSE for detail or copy athttps://opensource.org/licenses/MITby 机器谱 2023-08-03 https://www.robotway.com/------------------------------*/
#define Baud 9600
#define SERIAL Serial2void setup() {// put your setup code here, to run once:
delay(1000);
Serial.begin(Baud);
SERIAL.begin(Baud);
}void loop() {// put your main code here, to run repeatedly:while(SERIAL.available()>0){String receive_string = SERIAL.readStringUntil('\n');Serial.println(receive_string);receive_string = " ";}
}

③ 最后拔掉此主控板的USB线,将蓝牙主模块插在Bigfish扩展板的扩展坞上(如下图所示)。打开电源后,若看到蓝牙上的灯一闪一闪的,代表正在等待连接中。

第二步:给主机里的Arduino mega2560控制板下载蓝牙从模块程序。

① 把蓝牙通信模块与主机的Tx2/RX2接口进行连接(如下图所示)。

② 然后下载文末资料内的参考程序color_experiment_ws\src\Bluetooth_communication\Salve\Salve.ino:

/*------------------------------------------------------------------------------------版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.Distributed under MIT license.See file LICENSE for detail or copy athttps://opensource.org/licenses/MITby 机器谱 2023-08-03 https://www.robotway.com/------------------------------*/#define Baud 9600#define SERIAL Serial2void setup() {// put your setup code here, to run once:delay(1000);Serial.begin(Baud);SERIAL.begin(Baud);}void loop() {// put your main code here, to run repeatedly:while(SERIAL.available()>0){String receive_string = SERIAL.readStringUntil('\n');Serial.println(receive_string);receive_string = " ";}}

③ 把蓝牙从模块连接在底座上(如下图所示),然后接在主机的TX2/RX2上,可以看见蓝牙从模块的灯亮,且一闪一闪的。

第三步:观察蓝牙主从模块灯,如果看到蓝牙主从模块上的灯亮着但不闪烁,则表示蓝牙主从模块连接成功。

第四步打开蓝牙(从)模块的Arduino串口监视器,观察是否接受到数据“123”,如果接收到相应的数据(如下图所示),则表示蓝牙主从模块通信成功。

4.2 蓝牙遥控

实验目的:通过控制手柄上的两个摇杆,来实现机械臂气动搬运物块的功能。

实现思路:当按下手柄摇杆的不同方向时,可以控制机械臂的转台、大臂、小臂朝不同方向运动(默认规定手柄左边为左侧摇杆,右边为右侧摇杆)

当左侧摇杆按下后,控制的吸盘、小臂的情况如下图所示:

当右侧摇杆按下后,控制的转台、大臂的情况如下图所示:

实验器材:BLE4.0蓝牙模块 ×2、连接线、Basra控制板×1、与蓝牙连接的底座、机械臂本体、气动盒、连接线、主机、显示屏、鼠标、键盘

操作步骤:

第一步:先给带有摇杆模块的主控板(接蓝牙主模块)下载程序。

① 按下图所示连接电路:

② 然后下载文末资料内的参考程序color_experiment_ws\src\Wireness_Contril\Program_With_Rocker\controller\controller.ino:

/*------------------------------------------------------------------------------------版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.Distributed under MIT license.See file LICENSE for detail or copy athttps://opensource.org/licenses/MITby 机器谱 2023-08-03 https://www.robotway.com/------------------------------*/void setup() {// put your setup code here, to run once:Serial.begin(9600); //蓝牙串口波特率pinMode(A0, INPUT); //左侧上下摇杆引脚pinMode(A1, INPUT); //左侧上下摇杆引脚pinMode(A2, INPUT); //右侧上下摇杆引脚pinMode(A3, INPUT); //右侧上下摇杆引脚}void loop() {// put your main code here, to run repeatedly:if(analogRead(A0) > 1000){Serial.print('u');}if(analogRead(A0) < 25){Serial.print('d');}if(analogRead(A1) > 1000){Serial.print('c');}if(analogRead(A1) < 25){Serial.print('s');}if(analogRead(A2) > 1000){Serial.print('f');}if(analogRead(A2) < 25){Serial.print('b');}if(analogRead(A3) > 1000){Serial.print('r');}if(analogRead(A3) < 25){Serial.print('l');}delay(10);//发送执行周期20ms,可更改,越小机械臂运动越快,但是可能导致机械臂卡顿}

③ 将蓝牙主模块按下图所示插在手柄的扩展坞上。

第二步:给主机里的Arduino mega2560控制板(与蓝牙从模块连接)下载程序。

① 先把蓝牙从模块连接在扩展底座上;并把另一端与主机的TX2/RX2进行连接。

再把气动盒的三芯线与主机的PWM进行连接(如下图所示)。

② 然后下载文末资料内的参考程序color_experiment_ws\src\Wireness_Contril\Program_With_Chassis\Black_Handle_Robot_Arm_New\Black_Handle_Robot_Arm_New.ino:

/*------------------------------------------------------------------------------------版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.Distributed under MIT license.See file LICENSE for detail or copy athttps://opensource.org/licenses/MITby 机器谱 2023-08-03 https://www.robotway.com/------------------------------*///#include <SoftwareSerial.h>#include <stdio.h>#include <string.h>//#define mySerial Serial2 //总线舵机串口,TX2,GND,5V//#define mySerial2 Serial1 //蓝牙遥控串口TX1,RX1,GND,3.3V#define CTL_BAUDRATE 115200 //总线舵机波特率#define NOZZLE_PIN 4 //气动引脚,注意气动供电6v#define INIT_X 1 //假设大臂长度单位为1#define INIT_Y 1 //小臂长度与大臂长一致单位为1#define INIT_R 1500 //底座总线舵机中间位置波特率为1500#define DX 0.01 //每次X方向长的移动距离单位#define DY 0.01 //每次Y方向臂长的移动距离单位#define DR 5 //每次底座转动的单位//SoftwareSerial mySerial(51, 4);//SoftwareSerial mySerial2(10, 11);#define mySerial2 Serial2#define mySerial Serial1float cur_x = INIT_X, cur_y = INIT_Y;int cur_r = INIT_R;int alphaToUpwm(float alpha){return 2732.0-(alpha/M_PI)*2464;/*大臂转动角度的计算公式。2464是大臂摆动180°总线舵机计算后的pwm长度。大臂的减速比是44/25=1.76,测试的motor转动180°需要的pwm长度是1400,1.76×1400=2464;2732是转动90°之后竖直向上对应的实际pwm值,2732=(2464/2)+1500,其中1500是大臂初始化竖直状态是电机的PWM值*/}int betaToLpwm(float beta){return 1500 + (beta/M_PI)*1400; //小臂无减速比,由总线舵机直接驱动,小臂转动角度的计算公式,1400是小臂摆动180°总线舵机需要的PWM长度,1500是小臂保持水平状态的舵机PWM值}int armMoveTo(float x, float y){float alpha, beta;if (!cartesianToAlphaBeta(x, y, alpha, beta)){armServoTo(alphaToUpwm(alpha),betaToLpwm(beta));return 0;}return 1;}void setup() {// put your setup code here, to run once:mySerial.begin(CTL_BAUDRATE);pinMode(NOZZLE_PIN, OUTPUT); //气动引脚定义mySerial2.begin(9600); //蓝牙串口波特率设置nozzle_off(); //初始化气动关闭delay(1000);Serial.begin(9600);armMoveTo(cur_x, cur_y); //初始化机械臂大臂小臂位置cur_r = rotServoTo(cur_r); //初始化机械臂底座位置}void loop() {//   Serial.print(Serial1.parseInt());// put your main code here, to run repeatedly:if (mySerial2.available()){char c = mySerial2.read();float tx, ty;switch(c){case 'u': // upty = cur_y + DY;if (armMoveTo(cur_x, ty) == 0) // success{cur_y = ty;}break;case 'd': // downty = cur_y - DY;if (armMoveTo(cur_x, ty) == 0) // success{cur_y = ty;}break;case 'f': // forwardtx = cur_x + DX;if (armMoveTo(tx, cur_y) == 0) // success{cur_x = tx;}break;case 'b': // backwardtx = cur_x - DX;if (armMoveTo(tx, cur_y) == 0) // success{cur_x = tx;}break;case 'l': // leftcur_r = rotServoTo(cur_r - DR);break;case 'r': // rightcur_r = rotServoTo(cur_r + DR);break;case 'c': // catch//Serial.println('c');nozzle_on();break;case 's': // release//Serial.println('s');nozzle_off();break;}}}

第三步:通过控制手柄上的两个摇杆,来实现机械臂气动搬运物块的功能。

程序源代码及总线舵机ID及模式更改资料详见 桌面级机械臂-驱动及控制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/109077.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven详解

文章目录 一、引言1.1 为什么需要 Maven&#xff1f;1.2 Maven 解决了哪些问题&#xff1f;1.2.1 添加第三方jar包1.2.2 jar包之间的依赖关系1.2.3 处理jar包之间的冲突1.2.4 获取第三方jar包1.2.5 将项目拆分成多个工程模块1.2.6 实现项目的分布式部署 二、介绍三、Maven 的特…

python数组基本使用

使用Numpy进行数组运算 相比 List&#xff0c;NumPy 数组的优势 NumPy 全称为 Numerical Python&#xff0c;是 Python 的一个以矩阵为主的用于科学计算的基础软件包。NumPy 和 Pandas、Matpotlib 经常结合一起使用&#xff0c;所以被人们合称为数据分析三剑客。Numpy 中有功能…

winpe还原windows系统备份

准备工作 用大白菜制作一个启动u盘&#xff0c;里面可以镜系统备份文件 插入电脑&#xff0c;启动&#xff0c;按f11&#xff08;这个快捷键因电脑而异&#xff09;&#xff0c;选择启动u盘&#xff0c;进入winpe 硬盘格式化 选择分区助手软件 选择硬盘&#xff0c;右键选择【…

【Java 中级】一文精通 Spring MVC - 数据验证(七)

&#x1f449;博主介绍&#xff1a; 博主从事应用安全和大数据领域&#xff0c;有8年研发经验&#xff0c;5年面试官经验&#xff0c;Java技术专家&#xff0c;WEB架构师&#xff0c;阿里云专家博主&#xff0c;华为云云享专家&#xff0c;51CTO 专家博主 ⛪️ 个人社区&#x…

算法通关村第8关【黄金】| 寻找祖先问题

思路&#xff1a;递归三部曲 第一步&#xff1a;确定参数和返回值 题目要求找到指定的结点&#xff0c;就需要返回结点。 题目又涉及到p,q就需要传入p,q&#xff0c;需要遍历传入root 第二步&#xff1a;确定终止条件 当遍历到结点为空说明到底没找到返回空 或者遍历到p,…

飞腾平台芯片测试固件(SFW)和开机启动log

一、说两句 最近公司飞腾产品越来越多了&#xff0c;FT-2000/4的D2000的X100的&#xff0c;最近又新出了E2000。越来越多新来的小孩儿开始加入到飞腾的调测试中&#xff0c;那么在他们实际的调试中会遇到很多的问题。在固件启动阶段有的板卡会有一些异常&#xff0c;有时我们需…

ChatGPT 与 Python进行动态可视化分析

Python数据分析目前最为热门的岗位操作。 想使用Python进行可视化分析&#xff0c;但是又不想写代码&#xff0c;测试&#xff0c;验证。可以交给ChatGPT&#xff0c;open AI 来进行操作。 这样的动态图显示&#xff0c;我们只需要给ChatGPT发送一个指令&#xff0c;人工智能就…

用AI + Milvus Cloud搭建着装搭配推荐系统教程

以下函数定义了如何将图像转换为向量并插入到 Milvus Cloud 向量数据库中。代码会循环遍历所有图像。(注意:如果需要开启 Milvus Cloud 全新特性动态 Schema,需要修改代码。) 查询向量数据库 以下代码演示了如何使用输入图像查询 Milvus Cloud 向量数据库,以检索和上传…

新方案unity配表工具

工具下载&#xff1a;网盘链接 工具结构&#xff1a;针对每张表格生成一个表格类&#xff0c;其中默认包含一个list和字典类型参数记录表格数据&#xff0c;初始化项目时将list中的数据转为按id索引的dictionary&#xff0c;用于访问数据。额外包含一个同名Temp后缀的类&#…

docker使用harbor进行镜像仓库管理演示以及部分报错解决

目录 一.安装harbor和docker-compose 1.下载 2.将该文件修改为这样&#xff0c;修改好自己的hostname和port&#xff0c;后文的用户和密码可以不改也可以改&#xff0c;用于登录 3.安装 二.修改daemon.json文件和/etc/hosts文件 三.使用powershell作windows端域名映射 四…

Unity 之transform.LookAt() 调整一个物体的旋转,使其朝向指定的位置

文章目录 总的介绍补充&#xff08;用于摄像机跟随的场景&#xff09; 总的介绍 transform.LookAt 是 Unity 引擎中 Transform 组件的一个方法&#xff0c;用于调整一个物体的旋转&#xff0c;使其朝向指定的位置。通常情况下&#xff0c;它被用来使一个物体&#xff08;如摄像…

无涯教程-PHP - preg_match_all()函数

preg_match_all() - 语法 int preg_match_all (string pattern, string string, array pattern_array [, int order]); preg_match_all()函数匹配字符串中所有出现的模式。 它将按照您使用可选输入参数order指定的顺序将这些匹配项放置在pattern_array数组中。有两种可能的类…

韶音的骨传导耳机怎么样,韶音骨传导耳机值得入手吗

韶音在骨传导耳机中&#xff0c;也存在着一定的影响力&#xff0c;并且目前就款式而言&#xff0c;关于骨传导耳机的产品韶音最新发布的还是去年的OpenRun Pro&#xff0c;从外观上具备了七种颜色可以挑选&#xff0c;颜值上可以说是比较耐打的&#xff0c;配置方面对于现在需求…

java八股文面试[JVM]——类加载器

一、类加载器的概念 类加载器是Java虚拟机用于加载类文件的一种机制。在Java中&#xff0c;每个类都由类加载器加载&#xff0c;并在运行时被创建为一个Class对象。类加载器负责从文件系统、网络或其他来源中加载类的字节码&#xff0c;并将其转换为可执行的Java对象。类加载器…

window如何实时刷新日志文件

1 安装windows git 下载地址&#xff1a;Git - Downloading Package (git-scm.com) 2 打开git bash 输入tail.exe -f 日志文件路径

【集合学习ConcurrentHashMap】ConcurrentHashMap集合学习

ConcurrentHashMap集合学习 一、JDK1.7 和 1.8 版本ConcurrenHashMap对比分析 JDK 1.7版本 在JDK 1.7版本ConcurrentHashMap使用了分段锁的方式&#xff08;对Segment进行加锁&#xff09;&#xff0c;其实际结构为&#xff1a;Segment数组 HashEntry数组 链表。由很多个 …

【科研】-- 如何将Endnote中参考文献格式插入到Word?

文章目录 如何将Endnote中参考文献格式插入到Word&#xff1f; 如何将Endnote中参考文献格式插入到Word&#xff1f; 1、首先确保Endnote和Word安装正确&#xff0c;正常可以从学校官网中下载到正版软件&#xff0c;下载后在word栏目中会出现EndNote的标签&#xff1b; 2、可…

探索音视频出海的无限可能|中企出海领袖班第八期成功举办

​近年来&#xff0c;音视频社交出海赛道的热度吸引了众多企业纷纷进军海外市场。然而&#xff0c;面对复杂多变的海外市场&#xff0c;无论是产品的本地化策略&#xff0c;还是对海外网络环境的适应以及网络安全防御等因素&#xff0c;都成为决定产品能否在海外市场脱颖而出的…

软件工程(十四) 设计模式之结构型模式(二)

1、组合模式 简要说明 将对象组合成树形结构以表示“整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 速记关键字 树形目录结构 类图如下 由类图其实可以看出,组合模式就是将具有父子关系的结构,组装形成一棵树,并且根据规范,树干节点和叶子节…

深入了解OpenStack:创建定制化QCOW2格式镜像的完全指南

OpenStack 创建自定义的QCOW2格式镜像 前言 建议虚机网络配置为 NAT 或 桥接&#xff0c;因为未来 KVM虚机 需要借助 虚机 的外网能力进行联网安装软件包 虚机在启动前&#xff0c;必须在 VMware Workstation 上为其开启虚拟化引擎 虚拟化 Intel VT-x/EPT 或 AMD-V 安装kvm …