ABB机器人复习

2023-05-16

        • 1、工业机器人最显著的特点:
        • 2、工业气人的5种典型的结构:
        • 3、认识示教器:
        • 4、ABB机器人坐标系:
        • 5、轴运动与线性运动:
            • 1.轴运动:
            • 2.线性运动:
        • 6、重定位:
        • 7、转数计数器更新:
        • 8、ABB标准I/O板:
            • 1、板卡地址:
            • 2、do地址:
            • 3、di地址:
            • 4、ao地址:
            • 5.定义di、do的方法:
        • 9、程序数据的建立:
        • 10、程序数据的存储类型:
        • 11、3个关键程序数据及其设定:
            • 1.工具数据tooldata:
            • 2.工件坐标数据wobjdata
            • 3.有效载荷数据loaddata
        • 12、任务、程序模块、例行程序
          • 1.Rapid程序架构、
          • 2.常用Rapid指令
            • 1.紧凑型条件判断
            • 2.IF条件判断指令
            • 3.FOR重复执行判断指令
            • 4.WHILE 条件判断指令
            • 5.TRAP中断程序
            • 6.带参数的例行程序
            • 7.功能FUNCTION的使用
        • 13、ABB机器人的典型应用
          • 1.涂胶机器人需求分析:
          • 2.U形槽
          • 3.圆形轨迹
          • 4.码垛程序
            • **初始化流程图;**
            • **拾取程序的流程图:**
            • **放置程序的流程图:**
            • 完整程序:

1、工业机器人最显著的特点:

  1. 可编程
  2. 拟人化
  3. 通用性

2、工业气人的5种典型的结构:

  1. 直角坐标工业机器人
  2. 平面关节型工业机器人
  3. 并联工业机器人
  4. 串联工业机器人
  5. 协作工业机器人

3、认识示教器:

Page27

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4、ABB机器人坐标系:

在这里插入图片描述

5、轴运动与线性运动:

1.轴运动:

​ 调姿态,粗精度,单轴运动

2.线性运动:

​ 调加工轨迹,高精度,多轴协作运动,会遇到奇异点问题

6、重定位:

​ 工业机器人的重定位运动是指工业机器人第六轴法兰盘上的工具TCP点在空间中绕着坐标轴旋转的运动,也可以理解为工业机器人绕着工具TCP点做姿态调整的运动。(焊接)

重定位的实现:

​ 1.RobotStudio中手动重定位

​ 2.示教器手动重定位

​ 3.编写程序:

7、转数计数器更新:

​ ABB工业机器人留个关节轴都有一个机械原点的位置,在下列情况下,需要对机械原点的位置进行转数计数器更新操作:

  1. 更换伺服电机转数计数器电池后;
  2. 当转数计数器发生故障,修复后;
  3. 转数计数器与SMB测量板之间断开以后;
  4. 断电后,工业机器人关节轴发生了位移;
  5. 当系统报警提示“10036转数计数器未更新”时。

8、ABB标准I/O板:

​ DSQC651:di8\do8\ao2

​ DSQC652:di16\do16

1、板卡地址:

DSQC挂在DeviceNet网络上,端子X5(这些端子是板卡的接口,不是控制柜的X1-X11端子)的6~12跳线用来确定模块的地址

6:公共地

7-12: 6位地址 bit0-bit5 001010(5-0)即表示地址10(这是硬件上的连接,还需要在示教器中添加板卡,设置它的地址)

定义DSQC651板步骤:

  1. 控制面板——配置——DeviceNet Device——添加

  2. 来自模板的值,选择DSQC651…

  3. 修改name

  4. Address设置为10

  5. 点击“是”

2、do地址:

接在X1端子上

地址分配:32-39

3、di地址:

接在X3端子上

地址分配:0-7

4、ao地址:

接在X6端子上

地址分配 :AO1:0-15

​ AO2:16-32

5.定义di、do的方法:
  1. 控制面板——配置——Signal——添加
  2. Name,di1
  3. 选择Type
  4. 绑定板卡 Assigned to Device
  5. Device Mapping (do是0,di是32,ao1是0-15,ao2是16-32,gi是32-**,ao还要设置最大逻辑值、最大物理值、最大逻辑位值等信息)

9、程序数据的建立:

  1. 在示教器中的程序数据界面建立程序数据;
  2. 在建立程序指令时,同时自动生成对应的程序数据。

10、程序数据的存储类型:

​ 程序数据的类型有100多种,但其存储类型只有如下3种(就比如数据结构的存储方式只有数组个链表两种,而数据结构有图、树等多种):

  1. 变量VAR:程序执行、停止时会保持当前值,但程序指针复位后悔恢复为初值
  2. 可变量PERS:无论程序指针如何变化,都会保持最后赋予的值
  3. 常量CONST:不能在程序中进行修改,只能修改生命时的值

11、3个关键程序数据及其设定:

1.工具数据tooldata:

​ 描述安装在工业机器人第六轴上的工具的TCP、质量、重心等参数数据。

​ tooldata组成:[robot hold,tool frame ,tool load]

​ robot hold:类型bool,TRUE表示法兰安装工具

​ tool frame:类型pose,包含:TCP相对于腕坐标系的位置,工具坐标系的方向,如:[[1,2,3],[0.924,0,0,0]]

​ tool load:工具的负载,类型loaddata,包括:工具的质量、工具负载的重心、工具负载主惯性轴的方位、围绕力矩惯性轴的惯性矩

​ 示例:

PERS tooldata gripper :=[TRUE,[[97.4,0,223.1],[0.9,0,0.3,0]],[5,[23,0,75],[1,0,0,0],0,0,0]];

tooldata的设定:

  1. 手动操作——工具坐标系——新建
  2. 设定属性——确定
  3. 编辑——定义
  4. TCP和Z、X,四点法
  5. 选择适当的手动操作模式
  6. 使工具参考点考上固定点——修改位置,重复操作
  7. 朝X方向反方向移动…
  8. Z轴
  9. 确定
  10. 查看误差,越小越好
  11. 设置tool的重心、质量
  12. 保存后,使用重定位查看效果
2.工件坐标数据wobjdata

​ 工件坐标数据对应工件,它定义工件相对于大地坐标系的位置。

​ 示例:

`PERS wobjdata wobj1 :=[FALSE,TRUE,[[],[]],[[],[]]];`

​ 说明:是否夹持工件,是否使用固定的用户坐标系,用户坐标系(当前工作面的位置,包括位置和姿态),目标坐标系(当前工件的位置,包含位置和姿态)

wobjdata的设定:

  1. 手动操作——工件坐标——新建
  2. 设置相关属性——确定
  3. 编辑——定义
  4. 用户方法:3点发
  5. X1、X2、Y1,修改位置
  6. 确定。。。
3.有效载荷数据loaddata

​ lodadata用于设置工业机器人轴6上安装法兰的负载的负载载荷数据。

​ 示例:

​ PERS loddata piece :=[5,[50,0,50],[1,0,0,0],0,0,0];

​ 说明:负载质量,重心位置,方向姿态,负载围绕3个轴的转动惯量

loddata的设定:

  1. 手动操纵——有效载荷——新建
  2. 设定相关属性
  3. 单击初始值,进行设定
  4. okkk

12、任务、程序模块、例行程序

1.Rapid程序架构、
  1. 任务由一系列模块组成,模块有程序模块与系统模块
  2. 可以根据不同用途创建多个程序模块
  3. 每个程序模块可以包含:程序数据、例行程序、中断程序、功能
  4. 只有一个main程序

在这里插入图片描述

2.常用Rapid指令
  1. MoveC:圆弧运动指令
  2. MoveJ:关节运动指令,对路径精度要求不高
  3. MoveL:线性运动指令,对路径要求较高的场合,如焊接

示例:

MoveJ p10, v150, z50, my_tool\WObj:=my_wobj;

MoveL p20, v150, z50, my_tool\WObj:=my_wobj;

MoveC p40, p50, v150, z10, my_tool\WObj:=my_wobj;  !(第一个点事当前位置,第二个点事p40.。。。)

fine:是否预读,z**越大,路径越圆滑与流畅

3.条件逻辑判断指令

1.紧凑型条件判断
PROC Test()
	IF flag1=TRUE Set do1;
ENDPROC
2.IF条件判断指令
PROC Test1()
	IF num1=1 THEN
		flag1:=TRUE;
	ELSEIF num1=2 THEN
		flag1:=FALSE
	ELSE
		Set do1;
	ENDIF
ENDPROC
3.FOR重复执行判断指令
PROC Test2()
	FOR i FROM 1 TO 10 DO 
		Routine1;
	ENDFOR
ENDPROC
4.WHILE 条件判断指令
PROC Test3()
	WHILE num1>num2 DO
		num1:=num1-1;
	ENDWHILE
ENDPROC
5.TRAP中断程序
  1. 建立例行程序,类型为“中断”,并编写相关的中断处理程序
  2. 在需要调用TRAP程序的例行程序中进行中断设置:
  3. IDelete,取消指定的中断(没有就新建)
  4. CONNECT,连接一个中断标识符到中断程序
  5. 然后设置中断触发条件,调用中断程序

示例:

IDelete inton1;
CONNECT inton1 WITH myinterrupt;
ISignalDI\Signal,di1,1,inton1;  (Signal表示只响应一次)
6.带参数的例行程序

​ 创建例行程序的时候,添加参数选项即可

7.功能FUNCTION的使用

​ 可以看做是带返回值的例行程序。

13、ABB机器人的典型应用

1.涂胶机器人需求分析:
  1. 轨迹要符合要求
  2. 涂胶质量要符合要求
  3. 防止出现出现意外
2.U形槽

与之类似:

PROC Path_10()
    MoveL Target_30,v150,z100,MyTool\WObj:=wobj0;
    MoveL Target_40,v150,z100,MyTool\WObj:=wobj0;
	MoveC Target_50,Target_60,v150,z100,MyTool\WObj:=wobj0;
	MoveL Target_70,v150,z100,MyTool\WObj:=wobj0;
	MoveL Target_80,v150,z100,MyTool\WObj:=wobj0;
ENDPROC

在这里插入图片描述

书上的:(完整椭圆)

PROC Path_10()
	MoveJ Offs(Path1_10,0,0200),v2000,z50,MyTool\WObj:=wobj0;
	MoveL Path1_10,v200,fine,MyTool\WObj:=wobj0;
	Set doGunon;    !打开胶枪
	WaitTime 0.5;
    MoveL Path1_20,v200,z1,MyTool\WObj:=wobj0;
	MoveC Path1_30,Path1_40,v200,z1,MyTool\WObj:=wobj0;
	MoveL Path1_50,v200,在,MyTool\WObj:=wobj0;
	MoveC Path1_60,Path1_10,v200,fine,MyTool\WObj:=wobj0;
	Reset doGunn;
	WaitTime 0.5;
	MoveL Offs(Path1_10,0,0200),v2000,z50,MyTool\WObj:=wobj0;
ENDPROC
3.圆形轨迹

基于圆心进行偏移,RelTool().

示例:

PROC circle()
	MoveJ RelTool(Path2_10,100,0,-200),v2000,z50,MyTool\WObj:=wobj0;
	MoveL RelTool(Path2_10,100,0,0),v200,fine,MyTool\WObj:=wobj0;
	Set doGunon;
	WaitTime 0.5;
	MoveC RelTool(Path2_10,0,-100,0),RelTool(Path2_10,-100,0,0),v2000,fine,MyTool\WObj:=wobj0;
	MoveC RelTool(Path2_10,0,100,0),RelTool(Path2_10,100,0,0),v2000,fine,MyTool\WObj:=wobj0;
	Reset doGunon;
	WaitTime 0.5;
	MoveL RelTool(Path2_10,100,0,-200),v200,z50,MyTool\WObj:=wobj0;
ENDPROC

Path1_10需要在程序数据中进行设置。

4.码垛程序

需求:

  1. 安全稳定
  2. 速度节拍适中
  3. 良品率

各个点位的作用(以1号工位为例):

pHome:机器人工作原位即初始位置;

pActualPos:机器人当前停止位置目标点数据;

pPick1:机器人在1号工位传输带末端物料的位置;

pPlace: 机器人在1号工位托盘上放置物料的位置数据;

pBase1_0和pBase1_90:机器人在托盘上放置物料基准位置数据,分别表示物料沿托盘长边、短边放置,程序中通过计数器,在此基准上计算每一块物料的放置位置。

此外,pick和place例行程序中的MoveL Offs表示每次拾起或者放置完成后机器人抬高的位置(抬高避免碰撞)。

初始化流程图;

在这里插入图片描述

拾取程序的流程图:

在这里插入图片描述

放置程序的流程图:

在这里插入图片描述

完整程序:
MODULE MainMoudle

PERS tooldata tGrip:=[TRUE,[[0,0,200],[1,0,0,0]],[25,[0,0.00109327,116.889],[1,0,0,0],0,0,0]];

PERS loaddata LoadEmpty:=[0.01,[0,0,1],[1,0,0,0],0,0,0];
PERS loaddata LoadFull:=[40,[0,0,100],[1,0,0,0],0,0,0];

PERS robtarget pHome:=[[1600.00,0.01,1400],[1.27986E-06,-0.707107,-0.707107,1.27986E-06],[0,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
PERS robtarget pActualPos:=[[1505,0,1400],[1.81E-6,0,-1,0],[0,0,0,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];

PERS robtarget pPick1:=[[1488.007792464,376.826660408,476.964684195],[0,0.707106307,0.707107256,0],[0,0,1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
PERS robtarget pPlace1:=[[428.023,1772.47,55.4492],[0,1,-3.0621E-5,0],[1,0,3,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
PERS robtarget pBase1_0:=[[-292.446294945,1263.272085268,55.449220723],[0,0.707107387,0.707106176,0],[1,0,2,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
PERS robtarget pBase1_90:=[[-391.976797324,1362.469634994,55.449159414],[0,1,-0.000030621,0],[1,0,3,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

PERS robtarget pPick2:=[[1488.013130905,-358.406014736,476.965039287],[0,0.707106307,0.707107256,0],[-1,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
PERS robtarget pPlace2:=[[292.622,-1857.99,55.449],[0,0.707108,0.707106,0],[-2,0,-1,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];
PERS robtarget pBase2_0:=[[-317.378137718,-1857.993871961,55.448967354],[0,0.707107745,0.707105817,0],[-2,0,-1,0],[9E9,9E9,9E9,9E9,9E9,9E9]];
PERS robtarget pBase2_90:=[[-407.525988074,-1755.902485322,55.449282402],[0,1,-0.000031217,0],[-2,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

PERS speeddata MinSpeed:=[1000,300,5000,1000];
PERS speeddata MidSpeed:=[2500,400,5000,1000];
PERS speeddata MaxSpeed:=[4000,500,5000,1000];

PERS bool bPalletFull1:=FALSE;
PERS bool bPalletFull2:=FALSE;

PERS num nCount1:=6;
PERS num nCount2:=1;

VAR intnum iPallet1;
VAR intnum iPallet2;

PROC Main()
    rInitAll;
    WHILE TRUE DO
        IF diBoxInPos1=1 AND diPalletInPos1=1 AND bPalletFull1=FALSE THEN
            rPick1;
            rPlace1;
        ENDIF
        IF diBoxInPos2=1 AND diPalletInPos2=1 AND bPalletFull2=FALSE THEN
            rPick2;
            rPlace2;
        ENDIF
        WaitTime 0.1;
    ENDWHILE
ENDPROC

PROC rInitAll()
    Reset doGrip;

​    pActualPos:=CRobT(\tool:=tGrip);
​    pActualPos.trans.z:=pHome.trans.z;
​    MoveL pActualPos,MinSpeed,fine,tGrip\WObj:=wobj0;
​    MoveJ pHome,MidSpeed,fine,tGrip\WObj:=wobj0;

​    bPalletFull1:=FALSE;
​    nCount1:=1;
​    bPalletFull2:=FALSE;
​    nCount2:=1;

​    IDelete iPallet1;
​    CONNECT iPallet1 WITH tPallet1;
​    ISignalDI diPalletChanged1,1,iPallet1;
​    ISleep iPallet1;

​    IDelete iPallet2;
​    CONNECT iPallet2 WITH tPallet2;
​    ISignalDI diPalletChanged2,1,iPallet2;
​    ISleep iPallet1;
ENDPROC

PROC rPick1()
    MoveJ Offs(pPick1,0,0,800),MaxSpeed,z50,tGrip\WObj:=wobj0;
    MoveL pPick1,MinSpeed,fine,tGrip\WObj:=wobj0;
    Set doGrip;
    WaitTime 0.3;
    GripLoad LoadFull;
    MoveL Offs(pPick1,0,0,800),MinSpeed,z50,tGrip\WObj:=wobj0;
ENDPROC

PROC rPick2()
    MoveJ Offs(pPick2,0,0,800),MaxSpeed,z50,tGrip\WObj:=wobj0;
    MoveL pPick2,MinSpeed,fine,tGrip\WObj:=wobj0;
    Set doGrip;
    WaitTime 0.3;
    GripLoad LoadFull;
    MoveL Offs(pPick2,0,0,800),MinSpeed,z50,tGrip\WObj:=wobj0;
ENDPROC


    PROC rPlace1()
        rPosition1;
        MoveJ Offs(pPlace1,0,0,800),MidSpeed,z50,tGrip\WObj:=wobj0;
        MoveL pPlace1,MinSpeed,fine,tGrip\WObj:=wobj0;
        Reset doGrip;
        WaitTime 0.3;
        GripLoad LoadEmpty;
        MoveL Offs(pPlace1,0,0,800),MidSpeed,z50,tGrip\WObj:=wobj0;
        MoveJ Offs(pPick1,0,0,800),MaxSpeed,z50,tGrip\WObj:=wobj0;
        nCount1:=nCount1+1;
        IF nCount1>20 THEN
            bPalletFull1:=TRUE;
            IWatch iPallet1;
        ENDIF
    ENDPROC
    
    PROC rPlace2()
        rPosition2;
        MoveJ Offs(pPlace2,0,0,800),MaxSpeed,z50,tGrip\WObj:=wobj0;
        MoveL pPlace2,MinSpeed,fine,tGrip\WObj:=wobj0;
        Reset doGrip;
        WaitTime 0.3;
        GripLoad LoadEmpty;
        MoveL Offs(pPlace2,0,0,800),MidSpeed,z50,tGrip\WObj:=wobj0;
        MoveJ Offs(pPick2,0,0,800),MaxSpeed,z50,tGrip\WObj:=wobj0;
        nCount2:=nCount2+1;
        IF nCount2>20 THEN
            bPalletFull2:=TRUE;
            IWatch iPallet2;
        ENDIF
    ENDPROC
    
    PROC rPosition1()
        TEST nCount1
        CASE 1:
            pPlace1:=Offs(pBase1_0,0,0,0);
        CASE 2:
            pPlace1:=Offs(pBase1_0,600+10,0,0);
        CASE 3:
            pPlace1:=Offs(pBase1_90,0,400+10,0);
        CASE 4:
            pPlace1:=Offs(pBase1_90,400+10,400+10,0);
        CASE 5:
            pPlace1:=Offs(pBase1_90,800+20,400+10,0);
        CASE 6:
            pPlace1:=Offs(pBase1_0,0,600+10,200);
        CASE 7:
            pPlace1:=Offs(pBase1_0,600+10,600+10,200);
        CASE 8:
            pPlace1:=Offs(pBase1_90,0,0,200);
        CASE 9:
            pPlace1:=Offs(pBase1_90,400+10,0,200);
        CASE 10:
            pPlace1:=Offs(pBase1_90,800+20,0,200);
        CASE 11:
            pPlace1:=Offs(pBase1_0,0,0,400);
        CASE 12:
            pPlace1:=Offs(pBase1_0,600+10,0,400);
        CASE 13:
            pPlace1:=Offs(pBase1_90,0,400+10,400);
        CASE 14:
            pPlace1:=Offs(pBase1_90,400+10,400+10,400);
        CASE 15:
            pPlace1:=Offs(pBase1_90,800+20,400+10,400);
        CASE 16:
            pPlace1:=Offs(pBase1_0,0,600+10,600);
        CASE 17:
            pPlace1:=Offs(pBase1_0,600+10,600+10,600);
        CASE 18:
            pPlace1:=Offs(pBase1_90,0,0,600);
        CASE 19:
            pPlace1:=Offs(pBase1_90,400+10,0,600);
        CASE 20:
            pPlace1:=Offs(pBase1_90,800+20,0,600);
        DEFAULT:
            TPErase;
            TPWrite "the Counter of line 1 is error,please check it!";
            Stop;
        ENDTEST
    ENDPROC
    
    PROC rPosition2()
        TEST nCount2
        CASE 1:
            pPlace2:=Offs(pBase2_0,0,0,0);
        CASE 2:
            pPlace2:=Offs(pBase2_0,600+10,0,0);
        CASE 3:
            pPlace2:=Offs(pBase2_90,0,400+10,0);
        CASE 4:
            pPlace2:=Offs(pBase2_90,400+10,400+10,0);
        CASE 5:
            pPlace2:=Offs(pBase2_90,800+20,400+10,0);
        CASE 6:
            pPlace2:=Offs(pBase2_0,0,600+10,200);
        CASE 7:
            pPlace2:=Offs(pBase2_0,600+10,600+10,200);
        CASE 8:
            pPlace2:=Offs(pBase2_90,0,0,200);
        CASE 9:
            pPlace2:=Offs(pBase2_90,400+10,0,200);
        CASE 10:
            pPlace2:=Offs(pBase2_90,800+20,0,200);
        CASE 11:
            pPlace2:=Offs(pBase2_0,0,0,400);
        CASE 12:
            pPlace2:=Offs(pBase2_0,600+10,0,400);
        CASE 13:
            pPlace2:=Offs(pBase2_90,0,400+10,400);
        CASE 14:
            pPlace2:=Offs(pBase2_90,400+10,400+10,400);
        CASE 15:
            pPlace2:=Offs(pBase2_90,800+20,400+10,400);
        CASE 16:
            pPlace2:=Offs(pBase2_0,0,600+10,600);
        CASE 17:
            pPlace2:=Offs(pBase2_0,600+10,600+10,600);
        CASE 18:
            pPlace2:=Offs(pBase2_90,0,0,600);
        CASE 19:
            pPlace2:=Offs(pBase2_90,400+10,0,600);
        CASE 20:
            pPlace2:=Offs(pBase2_90,800+20,0,600);
        DEFAULT:
            TPErase;
            TPWrite "the Counter of line 1 is error,please check it!";
            Stop;
        ENDTEST
    ENDPROC
    
    TRAP tPallet1
        bPalletFull1:=FALSE;
        nCount1:=1;
        ISleep iPallet1;
        TPErase;
        TPWrite "The Pallet in line 1 has been changed!";
    ENDTRAP
    
    TRAP tPallet2
        bPalletFull2:=FALSE;
        nCount2:=1;
        ISleep iPallet2;
        TPErase;
        TPWrite "The Pallet in line 2 has been changed!";
    ENDTRAP
    
    PROC rModify()
        MoveJ pHome,MinSpeed,fine,tGrip\WObj:=wobj0;
        MoveJ pPick1,MinSpeed,fine,tGrip\WObj:=wobj0;
        MoveJ pBase1_0,MinSpeed,fine,tGrip\WObj:=wobj0;
        MoveJ pBase1_90,MinSpeed,fine,tGrip\WObj:=wobj0;
    ENDPROC

ENDMODULE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ABB机器人复习 的相关文章

  • Linux用户及权限管理(一)用户和组

    更新时间2020 04 09 1 ubuntu 用户系统概述 ubuntu linux 是一个多用户多任务的分时操作系统 任何一个要使用系统资源的用户 xff0c 都必须先要向系统管理员申请一个账号 xff0c 然后以这个账号的身份进入系统
  • Linux用户及权限管理(二)用户和组管理命令

    更新时间2020 05 12 在第一节中将了图形界面的用户管理 xff0c 本节讲解与用户和组管理相关的shell命令 1 配置文件 第一节中讲到 etc passwd文件 xff0c 它记录了当前操作系统中所有用户的基本信息 xff1a
  • Linux用户及权限管理(三)权限管理

    更新时间2020 05 13 在使用windows的时候关于权限管理的操作不多 xff0c 大家遇到比较多的应该是 xff1a 使用管理员身份才能正常运行某个程序 xff0c 或者删除某个文件 xff1b hosts文件无法修改 xff0c
  • C# 快速入门笔记

    最后更新时间2020 04 10 C 快速入门精简笔记 Chapter 0 前言Chapter 1 基础1 1 简介1 2 环境1 3 程序结构1 4 基本语法1 5 数据类型1 5 1 value types1 5 2 Reference
  • MATLAB的一点小tips

    更新时间2020 04 15 目录 1 matlab运算符2 matlab特殊变量和常量3 matlab保存工作区4 who 和whos5 长任务6 format 1 matlab运算符 运算符目的 43 加 xff1b 加法运算符 减 x
  • MATLAB矩阵和数组相关函数解析

    更新时间2020 04 15 未完结 目录 1 总表2 简单示例2 1 zeros2 2 ones2 3 rand2 4 true and false2 5 eye 1 总表 点击表中函数名可以跳转至官方网站查看精确英文解析 xff0c 也
  • HTTPS、SSL、TLS三者之间的联系和区别

    SSL Secure Socket Layer 安全套接层 是基于HTTPS下的一个协议加密层 xff0c 最初是由网景公司 xff08 Netscape xff09 研发 xff0c 后被IETF xff08 The Internet E
  • Word论文公式的两个格式问题

    更新时间2020 04 16 1 公式居中 xff0c 编号右对齐 solution xff1a 编写一个样式 xff0c 一劳永逸 你要居中 xff0c 你要右对齐 xff0c 先要有个参考 即你居中的 中 是哪里 xff0c 右对齐的
  • HTML- markdown版 江城子·乙卯正月二十日夜记梦

    江城子 乙卯正月二十日夜记梦 宋 苏轼 十年生死两茫茫 xff0c 不思量 xff0c 自难忘 千里孤坟 xff0c 无处话凄凉 纵使相逢应不识 xff0c 尘满面 xff0c 鬓如霜 夜来幽梦忽还乡 xff0c 小轩窗 xff0c 正梳妆
  • Keil μvision已停止工作?

    今天以及几周前我都遇到了这个问题 xff0c 提示消息都是一样的 xff0c Keil vision已停止工作 xff0c 接着keil就自己关闭了 我两次的原因不一样 1 第一次 用的是F407的板子 xff0c 排查了半天错误 xff0
  • 负数取余,取余和取模

    1 圆整 就是把一个小数或者说浮点数按某种规律近似为一个它左边或右边最近的一个整数 比如 xff1a 向负无穷圆整 span class token number 1 8 span span class token operator gt
  • [joint_state_publisher-3] process has died

    我是ROS melodic xff0c 其他版本应该一样的解决方法 去掉urdf xacro launch文件中的中文注释 xff0c 或者改为英文 xff0c 而且第一行不能有中文
  • Ubuntu 18.04安装N卡驱动

    1 原来 xff0c 是英特尔的集显 2 添加N卡驱动 检查是否有GPU显卡 xff0c 我电脑一张集显 xff0c 一张独显 xff0c 很清楚 如果不清楚的可以用 lspci grep i nvidia查看 xff1a linux202
  • ROS Melodic Arbotix报错

    ImportError dynamic module does not define module export function PyInit tf2 xff09 这是我做的内容 xff1a 1 创建一个四轮小车URDF模型 xff0c
  • Matlab画线性规划可行域

    线性规划什么的应该是运筹学的内容 xff0c 虽然数学建模比赛不会考这个 xff0c 但大家日常学习还是会遇到相关的问题 除了用单纯型法 xff0c 也可以用传统的画图法 xff0c 画出可行域 xff0c 再寻求可行解 可行域一般手画更快
  • 浅谈论文目录制作

    先来看咱们CSDN的目录 Markdown语句 xff1a 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 效果如下 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 我们论文中的目录道理也是一样 xff0c 无非就是
  • Linux文件系统(一)文件系统基本概念

    文件系统基本概念 1 文件系统概述2 文件系统的类型 xff08 1 xff09 ext系列 xff08 2 xff09 Reiserfs 3 Ubuntu文件系统的结构 xff08 1 xff09 概述 xff08 2 xff09 路径

随机推荐

  • 47、基于51单片机万年历温度闹钟农历阳历LCD 12864显示系统设计

    摘要 本文介绍了基于STC89C52单片机的多功能电子万年历的硬件结构和软硬件设计方法 本设计由数据显示模块 温度采集模块 时间处理模块和调整设置模块四个模块组成 系统以STC89C52单片机为控制器 xff0c 以串行时钟日历芯片DS13
  • Linux文件系统(二)交换分区

    1 交换分区的概念 2 交换分区的管理
  • Linux文件系统(三)文档压缩及解压缩

    1 文档压缩概述 2 图形化归档工具 3 命令行工具
  • Linux文件系统(四)文件系统管理命令

    1 文件系统的基本操作 2 目录的基本操作 3 查看文件内容 4 文件类型 5 查询文件 6 其他管理命令
  • EndNote文献管理(一)雾里看花

    简介
  • EndNote文献管理(二)基操勿六

    1 创建文献数据库并添加文献1 1创建文献数据库1 2在线检索1 3批量导入1 4导入知网文献 2 文献管理2 1文献标记与排序2 2文献速览与下载全文2 3文献阅读与批注 3 编辑参考文献格式 1 创建文献数据库并添加文献 1 1创建文献
  • SQL Server(2019) 实验一 数据库和表的建立

    数据库和表的建立 一 实验目的二 实验内容和要求2 1 数据库的创建 2 2 表的创建 查看 修改和删除 2 2 1 xff0e 表的创建 2 2 2 xff0e 向创建的表中添加数据记录 2 2 3 xff0e 修改表结构 xff08 找
  • SQL Server 中时间的几种表示

    在SQL Server中 xff0c 点开数据类型 xff0c 单单是时间这一类变量都有着多重数据类型 datetimetimestampdatetimedatetime2datetimeoffset 他们的显示效果如下 xff1a spa
  • SQL Server(2019) 实验二 单表查询

    单表查询 一 实验目的二 实验内容和要求2 1 表结构修改2 1 1 xff0e 在实验三的所建立的数据库中增加Teacher表 xff0c 结构如下 xff1a 2 1 2 xff0e 在实验三的所建立的数据库中增加Teaching表 x
  • SQL Server(2019)导入excel数据

    要导入的excel文件如图所示 xff0c 600个记录 操作步骤 xff1a 1 在要导入的数据库上右键 xff0c 任务 xff0c 导入数据 2 选择数据源为excel xff0c 选择相应excel文件 xff0c 选择excel版
  • SQL Server(2019)导出excel数据

    目标 xff1a 将Grademanager数据库中的test表导出为excel test表内容 xff1a 如图 xff0c 600条记录 操作步骤 xff1a 1 在相应数据库上右键 xff0c 任务 xff0c 导出数据 2 选择数据
  • 机器视觉特征提取介绍:HOG、SIFT、SURF、ORB、LBP、HAAR

    一 概述 这里主要记录自己的一些感悟 xff0c 不是很系统 想要详细系统的理论 xff0c 请参考文末的 图像处理之特征提取 个人不是专业cv工程师 xff0c 很多细节没有深究 xff0c 描述可能不严谨 在总结物体检测算法之前先把基础
  • ROS低调复习总结

    ROS复习 一 考试时间 形式 日期二 题型三 不知道随便写四 课程知识点 难点1 1 3章课后复习题1 1 单元测试一1 2 单元测试二1 3 单元测试三 2 第二章 ROS系统架构2 1 比较Topic与Service通信2 2 关闭一
  • 了解Web前端-1 Http基本原理

    HTTP基本原理 1 HTTP协议2 HTTP与Web服务器3 浏览器中的请求和响应1xx 信息2xx 成功3xx 重定向4xx 客户端错误5xx 服务器错误 1 HTTP协议 Hyper Text Transfer Protocol xf
  • 了解Web前端2-HTML语言

    HTML语言 1 什么是HTML2 了解HTML结构4 HTML的基本标签4 1 不是标签4 2 文件开始标签 96 96 4 3文件头部标签 96 96 4 4文件标题标签 96 96 4 5元信息标签 96 96 4 6页面的主体标签
  • 了解Web前端3-CSS层叠样式表

    CSS样式层叠表 1 CSS 概述2 属性选择器2 1属性选择器2 2属性和值选择器2 3属性和值的选择器 多值 3 类和ID选择器3 1ID选择器3 2类选择器3 3为特定元素使用class 1 CSS 概述 CSS是一种标记语言 xff
  • 了解Web前端4-JavaScript动态脚本语言

    JavaScript 动态脚本语言 1 页面中直接嵌入JavaScript代码2 连接外部JavaScript文件 JavaScript 是 web 开发人员必须学习的 3 门语言中的一门 xff1a HTML 定义了网页的内容CSS 描述
  • 爬虫の简介

    爬虫简介 一 什么是爬虫二 Python爬虫架构 一 什么是爬虫 爬虫 xff1a 一段自动抓取互联网信息的程序 xff0c 从互联网上抓取对于我们有价值的信息 二 Python爬虫架构 Python 爬虫架构主要由五个部分组成 xff0c
  • 一个不错的在线作图网站

    菜鸟教程的一个在线工具 连接 xff1a https c runoob com more shapefly diagram 优点 xff1a 没有广告 xff0c 不用关注微信公众号 xff0c 不用登陆 此外 xff0c 菜鸟还提供了其他
  • ABB机器人复习

    1 工业机器人最显著的特点 xff1a 2 工业气人的5种典型的结构 xff1a 3 认识示教器 xff1a 4 ABB机器人坐标系 xff1a 5 轴运动与线性运动 xff1a 1 轴运动 xff1a 2 线性运动 xff1a 6 重定位