12:遨博机器人SDK二次开发

article/2025/8/28 16:51:27

一、流程步骤


1.获取当前点关节坐标

2.走当前点关节坐标



1.获取目标点x,y,z(位置坐标,以m为单位,需要*1000变成mm)和四元素(位姿坐标)

2.四元素→欧拉角(弧度制)

3.欧拉角(弧度制)→(角度制)

4.得到x,y,z+欧拉角坐标(法兰盘坐标)

5.法兰盘坐标→工具末端坐标

5.保存该点

换一个位置

1.读取该点:工具末端坐标→法兰盘坐标

2.法兰盘坐标:x,y,z + 欧拉角(角度制→弧度制)→目标点四元素

3.获取当前点坐标  + 法兰盘转化后的 x,y,z +  目标点四元素

4.逆解得到目标点的关节坐标,然后走点。



二、程序

.pro

INCLUDEPATH += $$PWD/include/HalconX20
INCLUDEPATH += $$PWD/include/HalconX20/halconcppLIBS += -L$$PWD/lib/HalconX20 -lhalcon
LIBS += -L$$PWD/lib/HalconX20 -lhalconcppINCLUDEPATH += $$PWD/include/AuboX64
LIBS += -L$$PWD/lib/AuboX64 -llibserviceinterface

.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include "rsdef.h"
#include "HalconCpp.h"using namespace  HalconCpp;namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();//机械臂控制上下文句柄RSHD g_rshd = -1;bool example_login(RSHD &rshd, const char * addr, int port);  //登录int GetCurrentWayPoint();                                     //获取坐标bool example_moveJ(RSHD rshd);                                //走关节角void GetPoseFromWayPoint(wayPoint_S wayPoint,  HTuple  &Point1);  //路点 转  halcon posevoid WriteHalconPose(HTuple Point1);                              //保存halcon posevoid ChangeFlangerToToolPose(HTuple FlangerCenterPoint,HTuple &ToolInBasePose); //法兰盘转工具//读取 坐标 并且走点void ReadLocalToolPose(HTuple &Point13);    //读取  工具坐标void ChangeToolPoseToFlangerPose(HTuple ToolInBasePose,HTuple &FlangerCenterPoseX);//工具转法兰盘void GetOrientationPoseFromHalconPose(HTuple Point13,Pos &pos,wayPoint_S &wayPoint2);//换算4元素与pose,从halconPosevoid RunInverseKinPoint(Pos pos,wayPoint_S wayPoint2);  //逆解与走点bool result = false;
private slots:void on_pB_ConnectRobtics_clicked();void on_pB_GetCurrentWayPoint_clicked();void on_pB_GetJointPos_clicked();void on_pB_MoveGJJ_clicked();void on_pB_MoveFlangerCenterPose_clicked();void on_RobSpeed_valueChanged(double arg1);private:Ui::MainWindow *ui;
};#endif // MAINWINDOW_H

.cpp头文件

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "qdebug.h"
#include "qfile.h"
#define ROBOT_ADDR "192.168.2.60"
#define ROBOT_PORT 8899
#define M_PI 3.14159265358979323846
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);
}MainWindow::~MainWindow()
{delete ui;
}

1.连接机器人

void MainWindow::on_pB_ConnectRobtics_clicked()
{if(result){return;}example_login(g_rshd, ROBOT_ADDR, ROBOT_PORT);
}bool MainWindow::example_login(RSHD &rshd, const char * addr, int port)
{rshd = RS_FAILED;//初始化接口库if (rs_initialize() == RS_SUCC){//创建上下文if (rs_create_context(&rshd)  == RS_SUCC ){//登陆机械臂服务器if (rs_login(rshd, addr, port) == RS_SUCC){result = true;//登陆成功ui->textBrowser->append(QString::fromLocal8Bit("连接机器人成功"));std::cout<<"login succ"<<std::endl;}else{//登陆失败std::cerr<<"login failed"<<std::endl;ui->textBrowser->append(QString::fromLocal8Bit("连接机器人失败"));}}else{//创建上下文失败std::cerr<<"rs_create_context error"<<std::endl;ui->textBrowser->append(QString::fromLocal8Bit("连接机器人失败"));}}else{//初始化接口库失败std::cerr<<"rs_initialize error"<<std::endl;ui->textBrowser->append(QString::fromLocal8Bit("连接机器人失败"));}return result;
}

2.获取关节角坐标

void MainWindow::on_pB_GetJointPos_clicked()
{wayPoint_S wayPoint;  //AOBO  自身定位 数据类型if (RS_SUCC==rs_get_current_waypoint(g_rshd, &wayPoint)){//保存 poseHTuple  Point1;Point1.Clear();Point1[0] = wayPoint.jointpos[0];Point1[1] = wayPoint.jointpos[1];Point1[2] = wayPoint.jointpos[2];Point1[3] = wayPoint.jointpos[3];Point1[4] = wayPoint.jointpos[4];Point1[5] = wayPoint.jointpos[5];Point1[6] = 0; //旋转轴 : --- 机器人  2   , halcon  0int Num=ui->PointNum->value();QString FileName="./Image/JointPose"+QString::number(Num)+".dat";HTuple  FileName1=HTuple(FileName.toLatin1().data());  //QString类型  转换到HTuple 方法WritePose(Point1, FileName1);ui->textBrowser->append("jointpos[0]:"+QString::number(Point1[0].D()));ui->textBrowser->append(QString::fromLocal8Bit("坐标保存在:")+FileName);}else{ui->textBrowser->append(QString::fromLocal8Bit("坐标获取失败"));}
}

3.走关节角坐标

//走关节角
void MainWindow::on_pB_MoveGJJ_clicked()
{example_moveJ(g_rshd);
}bool MainWindow::example_moveJ(RSHD rshd)
{bool result = false;RobotRecongnitionParam param;rs_get_robot_recognition_param(rshd, 1, &param);//该位置为机械臂的初始位置(提供6个关节角的关节信息(单位:弧度))//加载点HTuple Point13;int Num=ui->PointNum->value();QString FileName="./Image/JointPose"+QString::number(Num)+".dat";HTuple  FileName1=HTuple(FileName.toLatin1().data());  //QString类型  转换到HTuple 方法try{ReadPose(FileName1, &Point13);}catch(...){ui->textBrowser->append(QString::fromLocal8Bit("读取路点成功"));return false;}double initPos[6]={Point13[0].D(),Point13[1].D(),Point13[2].D(),Point13[3].D(),Point13[4].D(),Point13[5].D()};//首先运动到初始位置if (rs_move_joint(rshd, initPos) == RS_SUCC){result = true;std::cout<<"movej succ"<<std::endl;ui->textBrowser->append(QString::fromLocal8Bit("机器人走路点成功"));}else{std::cerr<<"movej failed!"<<std::endl;ui->textBrowser->append(QString::fromLocal8Bit("机器人走路点失败"));}return result;
}



4.获取X,Y,Z和四元素坐标

   1.获取xyz和四元素

   2.四元素→欧拉角(得到xyz和欧拉角(法兰盘坐标))

   3.法兰盘坐标→工具末端坐标

   4.保存坐标

//获取xyz坐标和四元素
void MainWindow::on_pB_GetCurrentWayPoint_clicked()
{int ret=GetCurrentWayPoint();if(ret==-1){qDebug()<<"read coord faild";}}int MainWindow::GetCurrentWayPoint()
{HTuple FlangerCenterPoint;  //法兰盘坐标HTuple ToolInBasePose;      //工具末端坐标wayPoint_S wayPoint;  //AOBO  自身定位 数据类型//1.获取点--此刻  4元素if (RS_SUCC==rs_get_current_waypoint(g_rshd, &wayPoint)){//为了 后面 图像处理的  计算  ,--xyz  +  欧拉角//2.路点  换算到 pose (xyz  rpy)--法兰盘坐标GetPoseFromWayPoint(wayPoint,FlangerCenterPoint);//3.法兰盘坐标  --换算成为工具坐标  --对照下看看ChangeFlangerToToolPose(FlangerCenterPoint,ToolInBasePose);//4.保存ToolInBasePoseWriteHalconPose(ToolInBasePose);//保存了 工具末端坐标  为了后期 手眼标定的使用return 0;}else{return -1;}}//从路点 换算成 halcon pose 姿态
void  MainWindow::GetPoseFromWayPoint(wayPoint_S wayPoint,  HTuple  &Point1)
{// 1. 得到 xyz 和 四元素,// 2. 四元素 -欧拉角-// 3.-弧度RAD   --角度Deg// 4.--writeposeqDebug()<<"x:"<<wayPoint.cartPos.position.x;  //以米的单位double  x=wayPoint.cartPos.position.x*1000;  //  毫米//转换4元数 到 欧拉角Rpy rpy;HTuple  Rx,Ry,Rz;int ret=rs_quaternion_to_rpy(g_rshd, &wayPoint.orientation , &rpy);//转换下  弧度制 转 角度制TupleDeg(rpy.rx, &Rx);TupleDeg(rpy.ry, &Ry);TupleDeg(rpy.rz, &Rz);//保存 posePoint1.Clear();Point1[0] = wayPoint.cartPos.position.x;Point1[1] = wayPoint.cartPos.position.y;Point1[2] = wayPoint.cartPos.position.z;Point1[3] = Rx;Point1[4] = Ry;Point1[5] = Rz;Point1[6] = 2; //旋转轴 : --- 机器人  2   , halcon  0qDebug()<<QString::fromLocal8Bit("欧拉角 -第1个值:")<<Point1[3].D();}void MainWindow::ChangeFlangerToToolPose(HTuple FlangerCenterPoint,HTuple &ToolInBasePose)
{HTuple TcpPose;          //标定的结果 tool center point ,相对于 法兰盘 的工具中心HTuple I;                //数组下标//看一下  法兰盘 和 工具坐标//偏离值TcpPose.Clear();TcpPose[0] = -0.002479;TcpPose[1] = 0.003514;TcpPose[2] = 0.211092;TcpPose[3] = 0;TcpPose[4] = 0;TcpPose[5] = 0;TcpPose[6] = 2;//法兰盘换算到工具末端//相乘PoseCompose(FlangerCenterPoint, TcpPose, &ToolInBasePose);for (I=3; I<=5; I+=1){if (0 != (int(HTuple(ToolInBasePose[I])>180))){ToolInBasePose[I] = HTuple(ToolInBasePose[I])-360;}}
}void  MainWindow::WriteHalconPose(HTuple Point1)
{//./Image  判断QString str=  "./Image";QFile File00(str);if(!File00.exists()){qDebug()<<"file not exist";return ;}int Num=ui->PointNum->value();QString FileName="./Image/Pose"+QString::number(Num)+".dat";HTuple  FileName1=HTuple(FileName.toLatin1().data());  //QString类型  转换到HTuple 方法//乘以tcp标定结果 就得到工具末端坐标WritePose(Point1, FileName1);ui->textBrowser->append(QString::fromLocal8Bit("坐标保存在:")+FileName);ui->textBrowser->append("x:"+QString::number(Point1[0].D()));ui->textBrowser->append("y:"+QString::number(Point1[1].D()));ui->textBrowser->append("z:"+QString::number(Point1[2].D()));ui->textBrowser->append("Rx:"+QString::number(Point1[3].D()));ui->textBrowser->append("Ry:"+QString::number(Point1[4].D()));ui->textBrowser->append("Rz:"+QString::number(Point1[5].D()));}


5.走xyz rx,ry,rz

1.读取坐标

2.工具坐标→法兰盘坐标

3.欧拉角→四元素

4.逆解关节角坐标

//走  基于base坐标系的 法兰盘坐标
void MainWindow::on_pB_MoveFlangerCenterPose_clicked()
{bool result = false;HTuple ToolInBasePose;  //工具末端坐标HTuple FlangerCenterPose;  //法兰盘坐标RobotRecongnitionParam param;rs_get_robot_recognition_param(g_rshd, 1, &param);//该位置为机械臂的初始位置(提供6个关节角的关节信息(单位:弧度))//1.读取坐标ReadLocalToolPose(ToolInBasePose);//2.工具转法兰盘ChangeToolPoseToFlangerPose(ToolInBasePose,FlangerCenterPose);//3.欧拉角换算4元数 与pos//XYZ  RPY  ---欧拉角--Point13    ---->逆解成 关节角aubo_robot_namespace::wayPoint_S wayPoint2;Pos pos;GetOrientationPoseFromHalconPose(FlangerCenterPose,pos,wayPoint2);// 4.逆解与走点RunInverseKinPoint(pos,wayPoint2);}//加载本地坐标
void MainWindow::ReadLocalToolPose(HTuple &Point13)
{//加载点int Num=ui->PointNum->value();QString FileName="./Image/Pose"+QString::number(Num)+".dat";HTuple  FileName1=HTuple(FileName.toLatin1().data());  //QString类型  转换到HTuple 方法try{ReadPose(FileName1, &Point13);//工具转法兰盘}catch(...){ui->textBrowser->append(QString::fromLocal8Bit("读取路点成功"));return ;}
}void  MainWindow::ChangeToolPoseToFlangerPose(HTuple ToolInBasePose,HTuple &FlangerCenterPoseX)
{//工具末端换算法兰盘HTuple  I, TcpPose,PoseInvert1;//偏离值TcpPose.Clear();TcpPose[0] = -0.002479;TcpPose[1] = 0.003514;TcpPose[2] = 0.211092;TcpPose[3] = 0;TcpPose[4] = 0;TcpPose[5] = 0;TcpPose[6] = 2;//逆变换PoseInvert(TcpPose, &PoseInvert1);PoseCompose(ToolInBasePose, PoseInvert1, &FlangerCenterPoseX);for (I=3; I<=5; I+=1){if (0 != (int(HTuple(FlangerCenterPoseX[I])>180))){FlangerCenterPoseX[I] = HTuple(FlangerCenterPoseX[I])-360;}}
}//欧拉角换算成为4元数
void MainWindow::GetOrientationPoseFromHalconPose(HTuple Point13,Pos &pos,wayPoint_S &wayPoint2)
{//目标位置pos = {Point13[0].D(), Point13[1].D(),Point13[2].D()};Rpy rpy;  //已有 欧拉角 ,目标 得到4元数 --wayPoint.orientationHTuple  Rx,Ry,Rz;  //弧度制TupleRad(Point13[3].D(), &Rx); //角度 换算成为 弧度TupleRad(Point13[4].D(), &Ry);TupleRad(Point13[5].D(), &Rz);rpy.rx=Rx[0].D();  //HTUPLE  换算成为 结构体 double类型rpy.ry=Ry[0].D();rpy.rz=Rz[0].D();//欧拉角换算成为4元数int ret=rs_rpy_to_quaternion(g_rshd, &rpy, &wayPoint2.orientation);
}//逆解位置信息
void MainWindow::RunInverseKinPoint(Pos pos,wayPoint_S wayPoint2)
{//获取当前路点信息aubo_robot_namespace::wayPoint_S wayPoint1;//逆解位置信息aubo_robot_namespace::wayPoint_S targetPoint;//目标位置对应的关节角double targetRadian[ARM_DOF] = {0};if (RS_SUCC == rs_get_current_waypoint(g_rshd, &wayPoint1)){//参考当前姿态逆解得到六个关节角if (RS_SUCC == rs_inverse_kin(g_rshd, wayPoint1.jointpos, &pos, &wayPoint2.orientation, &targetPoint)){//将得到目标位置,将6关节角度设置为用户给定的角度(必须在+-175度)targetRadian[0] = targetPoint.jointpos[0];targetRadian[1] = targetPoint.jointpos[1];targetRadian[2] = targetPoint.jointpos[2];targetRadian[3] = targetPoint.jointpos[3];targetRadian[4] = targetPoint.jointpos[4];targetRadian[5] = targetPoint.jointpos[5];HTuple Pose,Deg1;Pose[0]=targetRadian[0];TupleDeg( Pose[0],&Deg1);ui->textBrowser->append(" joint Deg"+QString::number(Deg1[0].D()));for(int i=0; i<6 ;i++){qDebug()<<" i"<<i  <<" targetRadian"<<targetRadian[i];}//轴动到目标位置if (RS_SUCC == rs_move_line(g_rshd, targetRadian)){std::cout<<"at target"<<std::endl;}else{std::cerr<<"move joint error"<<std::endl;}}else{std::cerr<<"ik failed"<<std::endl;}}else{std::cerr<<"get current waypoint error"<<std::endl;}
}

6.直线速度

void MainWindow::on_RobSpeed_valueChanged(double arg1)
{/** 模拟业务 **//** 接口调用: 初始化运动属性 ***/qDebug()<<"arg1:="<<arg1;rs_init_global_move_profile(g_rshd);/** 接口调用: 设置关节型运动的最大加速度 ***/aubo_robot_namespace::JointVelcAccParam jointMaxAcc;jointMaxAcc.jointPara[0] = 50.0/180.0*M_PI;jointMaxAcc.jointPara[1] = 50.0/180.0*M_PI;jointMaxAcc.jointPara[2] = 50.0/180.0*M_PI;jointMaxAcc.jointPara[3] = 50.0/180.0*M_PI;jointMaxAcc.jointPara[4] = 50.0/180.0*M_PI;jointMaxAcc.jointPara[5] = 50.0/180.0*M_PI;   //接口要求单位是弧度rs_set_global_joint_maxacc(g_rshd, &jointMaxAcc);/** 接口调用: 设置关节型运动的最大速度 ***/aubo_robot_namespace::JointVelcAccParam jointMaxVelc;jointMaxVelc.jointPara[0] = 50.0/180.0*M_PI;jointMaxVelc.jointPara[1] = 50.0/180.0*M_PI;jointMaxVelc.jointPara[2] = 50.0/180.0*M_PI;jointMaxVelc.jointPara[3] = 50.0/180.0*M_PI;jointMaxVelc.jointPara[4] = 50.0/180.0*M_PI;jointMaxVelc.jointPara[5] = 50.0/180.0*M_PI;   //接口要求单位是弧度rs_set_global_joint_maxvelc(g_rshd, &jointMaxVelc);/** 接口调用: 初始化运动属性 ***/rs_init_global_move_profile(g_rshd);qDebug()<<"arg2:="<<arg1;/** 接口调用: 设置末端型运动的最大加速度   直线运动属于末端型运动***/double endMoveMaxAcc;endMoveMaxAcc = 0.2;   //单位米每秒rs_set_global_end_max_line_acc(g_rshd, endMoveMaxAcc);rs_set_global_end_max_angle_acc(g_rshd, endMoveMaxAcc);/** 接口调用: 设置末端型运动的最大速度 直线运动属于末端型运动***/double endMoveMaxVelc;endMoveMaxVelc =ui->RobSpeed->value();   //单位米每秒qDebug()<<"arg3:="<<arg1;ui->textBrowser->append(QString::fromLocal8Bit("当前速度是")+QString::number(endMoveMaxVelc)+"m/s");rs_set_global_end_max_line_velc(g_rshd, endMoveMaxVelc);rs_set_global_end_max_angle_velc(g_rshd, endMoveMaxVelc);}


http://www.hkcw.cn/article/LErnYSKNqx.shtml

相关文章

XPlifeapp:高效打印,便捷生活

在数字化时代&#xff0c;虽然电子设备的使用越来越普遍&#xff0c;但打印的需求依然存在。无论是学生需要打印课表、资料&#xff0c;还是职场人士需要打印名片、报告&#xff0c;一个高效便捷的打印软件都能大大提高工作效率。XPlifeapp就是这样一款超级好用的手机打印软件&…

DeepSeekMath:突破开放式语言模型中数学推理能力的极限

摘要 由于数学推理具有复杂且结构化的特性&#xff0c;这对语言模型构成了重大挑战。在本文中&#xff0c;我们介绍了 DeepSeekMath 7B 模型&#xff0c;该模型在 DeepSeek-Coder-Base-v1.5 7B 模型的基础上&#xff0c;使用从 Common Crawl 获取的 1200 亿个与数学相关的标记…

OpenBayes 教程上新丨谷歌发布 MedGemma,基于 Gemma 3 构建,专攻医学文本与图像理解

在 Google I/O 2025 大会上&#xff0c;公司 CEO Sundar Pichai 在活动首日的主题演讲中便分享了多项创新&#xff0c;例如 Gemini 2.5 的全系列升级&#xff0c;Agent Mode 上线 Chrome&#xff0c;编码智能体 Jules 开启公测&#xff0c;Android XR 正式版亮相等等。而在一众…

【数据结构】栈和队列(下)

目录 一、队列&#xff08;先进先出的特殊结构&#xff09; 队列的概念与结构 二、代码实现 1、定义队列的结构 2、队列的初始化操作 3、判空操作 4、入队操作 5、出队操作 6、取队头、队尾操作 7、队列销毁操作 8、队列中有效数据个数 9、测试代码 10、.h文件 一…

基于卫星遥感数据识别互花米草及原生植被分布及生长的技术原理、关键方法

通过卫星遥感监测生态保护红线&#xff0c;基于卫星遥感数据识别互花米草及原生植被&#xff08;如芦苇&#xff09;的分布、面积及生长状况&#xff0c;主要利用不同植被类型的光谱特征差异、物候周期差异和遥感影像处理技术实现。 上星图地球开放平台获取更多生态保护解决方案…

可视化图解算法47:包含min函数的栈

1. 题目 牛客网 面试笔试 TOP101 | LeetCode 155. 最小栈 描述 定义栈的数据结构&#xff0c;请在该类型中实现一个能够得到栈中所含最小元素的 min 函数&#xff0c;输入操作时保证 pop、top 和 min 函数操作时&#xff0c;栈中一定有元素。 此栈包含的方法有&#x…

windows系统下通过visual studio使用clang tooling

vs吃上clang tooling 通过源码编译clang安装必备软件GnuWin32 Tools&#xff1a; 拉取/下载git仓库编译 在项目中使用clangTool 通过源码编译clang 教程参考安装教程 作者本人亲身使用流程&#xff1a; 安装必备软件 Git&#xff1a;作者已经有了&#xff0c;自己查CMake&am…

路由器、网关和光猫三种设备有啥区别?

无论是家中Wi-Fi信号的覆盖&#xff0c;还是企业网络的高效运行&#xff0c;路由器、网关和光猫这些设备都扮演着不可或缺的角色。然而&#xff0c;对于大多数人来说&#xff0c;这三者的功能和区别却像一团迷雾&#xff0c;似懂非懂。你是否曾疑惑&#xff0c;为什么家里需要光…

攻防世界János-the-Ripper

打开压缩包是一个文件&#xff0c;用010Editor打开可以发现里面有隐藏文件flag.txt 此时想到分离文件&#xff0c;利用binwalk工具 利用binwalk生成出的是一个压缩包&#xff0c;解压缩但是发现竟然解压需要密码 这里就可以开始暴力破解密码了&#xff0c;这里我用的是ARCHPR工…

酷派Cool20/20S/30/40手机安装Play商店-谷歌三件套-GMS方法

酷派Cool系列主打低端市场&#xff0c;系统无任何GMS程序&#xff0c;也不支持直接开启或者安装谷歌服务等功能&#xff0c;对于国内部分经常使用谷歌服务商店的小伙伴非常不友好。涉及机型有酷派Cool20/Cool20S /30/40/50/60等旗下多个设备。好在这些机型运行的系统都是安卓11…

本地部署大模型llm+RAG向量检索问答系统 deepseek chatgpt

项目视频讲解: 本地部署大模型llm+RAG向量检索问答系统 deepseek chatgpt_哔哩哔哩_bilibili 运行结果:

并查集 c++函数的值传递和引用传递 晴神问

目录 学校的班级个数 手推7个班级&#xff0c;答案17&#xff1f;怀疑人生 破案了&#xff0c;应该是6个班。 破案了&#xff0c;原来写的是 unionxy(a, b, father); c if两个数同时为正或为负 简洁写法 可以用位运算&#xff1f; c可以这样赋值吗&#xff1f;ab2 典型…

Dynamics 365 Business Central AI Sales Order Agent Copilot

#AI Copilot# #D365 BC 26 Wave# 最近很多客户都陆续升级到 Dynamics 365 Business Central 26 wave, Microsoft 提供一个基于Copilot 的Sales Order Agent&#xff0c;此文将此功能做个介绍. Explorer: 可以看到26版本上面增加了这样一个新图标。 Configuration: 配置过程…

Webug4.0靶场通关笔记03- 第3关SQL注入之时间盲注(手注法+脚本法 两种方法)

目录 一、源码分析 1.分析闭合 2.分析输出 &#xff08;1&#xff09;查询成功 &#xff08;2&#xff09;查询失败 &#xff08;3&#xff09;SQL语句执行报错 二、第03关 延时注入 1.打开靶场 2.SQL手注 &#xff08;1&#xff09;盲注分析 &#xff08;2&#xf…

NodeJS 基于 Koa, 开发一个读取文件,并返回给客户端文件下载,以及读取文件形成列表和文件删除的代码演示

前言 在上一篇文章 《Nodejs 实现 Mysql 数据库的全量备份的代码演示》 中&#xff0c;我们演示了如何将用户的 Mysql 数据库进行备份的代码。但是&#xff0c;这个备份&#xff0c;只是备份在了服务器上了。 而我们用户的真实需求&#xff0c;是需要将备份文件下载到本地进行…

中国自然灾害影响及损失数据

自然灾害往往会导致大量的人员伤亡和财产损失&#xff0c;数据集详细记载了2014-2020年中国自然灾害影响以及灾害造成的损失情况。其中包括地震、台风、雨雪、阵雨、雪灾、暴雨、旱灾、龙卷风、泥石流、山崩、泥石流、滑坡、洪涝等灾害事件。 数据集主要以excel的格式存储。属性…

UE5.5 pixelstreaming插件打包报错

文章目录 错误内容如下解决方案推流服务器不能使用 错误内容如下 The following files are set to be staged, but contain restricted folder names ("Linux"): CTZ5_5/Samples/PixelStreaming/WebServers/Extras/FrontendTests/dockerfiles/linux/Dockerfile CTZ5…

UE5打包项目设置Project Settings(打包widows exe安装包)

UE5打包项目Project Settings Edit-Project Settings- Packaging-Ini Section Denylist-Advanced 1&#xff1a;打包 2&#xff1a;高级设置 3&#xff1a;勾选创建压缩包 4&#xff1a;添加要打包地图Map的数量 5&#xff1a;选择要打包的地图Maps 6&#xff1a;Project-Bui…

全志F1c200开发笔记——移植Debian文件系统

1.搭建环境 sudo apt install qemu-user-static -y sudo apt install debootstrap -y mkdir rootfs 2.拉取文件系统 这边我参照墨云大神的文档&#xff0c;但是华为镜像已经没有armel了&#xff0c;我找到了官方仓库&#xff0c;还是有的&#xff0c;拉取速度比较慢 sudo d…

多模态大语言模型arxiv论文略读(九十九)

PartGLEE: A Foundation Model for Recognizing and Parsing Any Objects ➡️ 论文标题&#xff1a;PartGLEE: A Foundation Model for Recognizing and Parsing Any Objects ➡️ 论文作者&#xff1a;Junyi Li, Junfeng Wu, Weizhi Zhao, Song Bai, Xiang Bai ➡️ 研究机构…