发明内容
本发明就是针对上述问题,提供了一种存储设备,该存储设备存储有 多条指令,所述指令适于由处理器加载并执行如下步骤:
按照通信周期获取指令轨迹在k时刻的目标位置,并以该目标位置为 原点,该指令轨迹的航向为X轴方向在平面坐标系内建立运动学坐标系;
以k时刻的指令轨迹速度为前馈速度,k-1时刻机器人位置与指令轨迹 在k时刻的目标位置之间沿指令轨迹的航向上的距离为位置偏差量,并结 合PID控制器确定机器人在k-1时刻的控制线速度;
确定指令轨迹在k时刻的目标位置在平面坐标系下的曲率半径;
根据机器人在k-1时刻的控制线速度和曲率半径得到机器人在k-1时 刻的控制角速度;
根据k-1时刻机器人偏离曲率圆的距离、机器人在k-1时刻的控制线速 度并结合PID控制器以得到k-1时刻机器人角速度分量;
利用所述k-1时刻机器人角速度分量对k-1时刻的控制角速度进行调 整以得到k-1时刻机器人的角速度控制量。
可选的,所述指令适于由处理器加载并执行的步骤还包括:
基于所述机器人在k-1时刻的控制线速度和k-1时刻机器人的角速度 控制量确定机器人的两轮电机转速;
以所述两轮电机转速作为指令控制机器人移动。
可选的,所述位置偏差量通过如下公式计算得到:
offset_x(k-1)=target_x(k)*cos(-target_heading(k))-target_y(k)*sin(-targetheading(k))
+robot_y(k-1)*sin(-target_heading(k))-robot_x(k-1)*cos(-target_heading(k))
其中,offset_x(k-1)为k-1时刻机器人位置与指令轨迹在k时刻的目标位 置之间沿指令轨迹的航向上的距离、(target_x(k),target_y(k))为指令轨迹 在k时刻的目标位置、target_heading(k)为该指令轨迹的航向、 (robot_x(k-1),robot_y(k-1))为k-1时刻机器人位置。
可选的,机器人在k-1时刻的控制线速度通过如下公式计算得到:
其中,control_velo(k-1)为机器人在k-1时刻的控制线速度、target_v(k)为k 时刻的指令轨迹速度、offset_x(k-2)为(k-2)时刻的位置偏差量、P1、I1 和D1为PID控制器的参数。
可选的,确定指令轨迹在k时刻的目标位置在平面坐标系下的曲率半 径采用的公式如下:
其中,
heading(k)为k时刻指令轨迹的切向角,heading(k-1)为k-1时刻指令 轨迹的切向角、(target_x(k),target_y(k))为指令轨迹在k时刻的目标位 置、(target_x(k-1),target_y(k-1))为指令轨迹在k-1时刻的目标位置,s(k) 指令轨迹在k时刻与k-1时刻的偏移距离。
可选的,根据k-1时刻机器人位置偏离曲率圆的距离、机器人在k-1 时刻的控制线速度并结合PID控制器以得到k-1时刻机器人角速度分量包 括:
1)建立曲率圆并确定该曲率圆的圆心坐标(center_x(k),center_y(k));
2)依照如下公式确定k-1时刻机器人位置(robot_x(k-1),robot_y(k-1)) 到曲率圆的圆心的距离r_robot(k-1):
3)k-1时刻机器人位置偏离曲率圆的距离offset_r(k-1)=R(k)-r_robot(k-1),其中,R(k)为指令轨迹在k时刻的目标位置在平面坐标系下的曲率半 径;
4)依照如下公式确定k-1时刻机器人角速度分量:
其中,omg_offset_r(k-1)为k-1时刻机器人角速度分量,control_velo(k-1)为机器人在k-1时刻的控制线速度、P2、I2和D2为PID控制器参数。
可选的,利用所述k-1时刻机器人角速度分量对k-1时刻的控制角速 度进行调整以得到k-1时刻机器人的角速度控制量的方式如下:
control_omg(k-1)=omg_R(k-1)+omg_offset_r(k-1)
其中,control_omg(k-1)为k时刻机器人的角速度控制量、omg_R(k-1)为 k-1时刻的控制角速度。
可选的,所述通信周期为10毫秒。
可选的,基于所述机器人在k-1时刻的控制线速度和k-1时刻机器人 的角速度控制量确定机器人的两轮电机转速包括:
左轮电机转速velo_motor_left=
(2*control_velo(k-1)-control_omg(k-1)*WHEEL_DIS)/2.0*reduce_ratio;
右轮电机转速velo_motor_right=
(2*control_velo(k-1)+control_omg(k-1)*WHEEL_DIS)/2.0*reduce_ratio;
其中,control_velo(k-1)为机器人在k时刻的控制线速度、control_omg(k-1)为k-1时刻机器人的角速度控制量、WHEEL_DIS为两轮 间距、reduce_ratio为减速机的减速比。
本发明实施例还提供了一种机器人,包括:
上述存储设备;
处理器,适于处理存储设备存储的各种指令。
与现有技术相比,本发明技术方案至少具有以下有益效果:
通过在平面坐标系中建立运动学坐标系,以k时刻的指令轨迹速度为 前馈速度,k-1时刻(即当前时刻)机器人位置与运动学坐标系的原点(即 指令轨迹在k时刻的目标位置)之间沿指令轨迹的航向(运动学坐标系的 X轴方向)上的距离为位置偏差量,借助PID控制器辅提高了位置控制的 精度并减小了对指令轨迹跟踪的时滞问题。
进一步,引入曲率圆模型,根据k-1时刻机器人偏离曲率圆的距离、 机器人在k-1时刻的控制线速度并结合PID控制器以得到k-1时刻机器人 角速度分量,并利用k-1时刻机器人角速度分量对k-1时刻的控制角速度 进行调整以得到精确的控制角速度,解决了线速度与角速度不匹配的问题。
具体实施方式
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附 图对本发明的具体实施方式做详细的说明。
如图1所示的是本发明实施例的存储设备存储的多条指令由处理器加 载并执行时的步骤流程示意图。参考图1,该步骤流程包括:
步骤S1:按照通信周期获取指令轨迹在k时刻的目标位置,并以该目 标位置为原点,该指令轨迹的航向为X轴方向在平面坐标系内建立运动学 坐标系;
步骤S2:以k时刻的指令轨迹速度为前馈速度,k-1时刻机器人位置 与指令轨迹在k时刻的目标位置之间沿指令轨迹的航向上的距离为位置偏 差量,并结合PID控制器确定机器人在k-1时刻的控制线速度;
步骤S3:确定指令轨迹在k时刻的目标位置在平面坐标系下的曲率半 径;
步骤S4:根据机器人在k-1时刻的控制线速度和k时刻的曲率半径得 到机器人在k-1时刻的控制角速度;
步骤S5:根据k-1时刻机器人偏离曲率圆的距离、机器人在k-1时刻 的控制线速度并结合PID控制器以得到k-1时刻机器人角速度分量;
步骤S6:利用所述k-1时刻机器人角速度分量对k-1时刻的控制角速 度进行调整以得到k-1时刻机器人的角速度控制量。
本实施例提供的存储设备中的指令可用于对机器人的移动轨迹进行控 制,以使机器人根据指令轨迹来移动。机器人根据指令轨迹来移动是指: 机器人按照通信周期在当前时刻接收下某一时刻指令轨迹所要求达到的目 标位置,然后根据机器人当前时刻所在位置与指令轨迹下一时刻所要求达 到的目标位置之间的位置偏差量以及其他相关参数,确定当前时刻对机器 人的控制线速度和角速度控制量,使得在下一时刻时机器人所处位置能够 接近指令轨迹中的下一时刻目标位置(控制精度在10厘米)或者与指令轨 迹的目标位置完全吻合。其中,线速度和角速度是物理学上的概念,线速 度是物体在单位时间内移动的弧长、角速度是物体在单位时间内转过的角 度。机器人的移动轨迹是曲线,通过确定机器人在各个时刻的控制线速度 和角速度控制量,可以控制机器人的移动轨迹。
在实际应用中,机器人在当前时刻接收到下一时刻的指令轨迹的目标 位置后,即根据该指令轨迹的目标位置计算得到对机器人的指令控制量(即 控制线速度和角速度控制量),并依照该指令控制量控制机器人移动。如 果机器人未按照指令轨迹在下一时刻到达目标位置,机器人可以通过调节 PID控制器的参数逐渐收敛到该指令轨迹的目标位置。
其中,针对PID控制器的作用,本领域技术人员理解,PID控制器是 控制工程常用的一种使得被控对象(即本实施例中的机器人)收敛于目标 (即接收到的指令轨迹在下一时刻的目标位置)的一种方法。
PID控制器可以根据系统的误差,利用比例(P)、积分(I)、微分 (D)计算出控制量进行控制的。比例控制是一种最简单的控制方式,其 控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存 在稳态误差。在积分控制中,控制器的输出与输入误差信号的积分成正比 关系。在微分控制中,控制器的输出与输入误差信号的微分(即误差的变 化率)成正比关系。
PID控制器的参数整定是控制系统设计的核心内容。它是根据被控过 程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。
PID控制器参数整定的方法很多,概括起来有两大类:一是理论计算 整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。 这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调 整和修改。二是工程整定方法,它主要依赖工程经验,直接在控制系统的 试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。
PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和 衰减法。三种方法各有其特点,其共同点都是通过试验,然后按照工程经 验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参 数,都需要在实际运行中进行最后调整与完善。现在一般采用的是临界比 例法。
利用该方法进行PID控制器参数的整定步骤如下:
1)首先预选择一个足够短的采样周期让系统工作;
2)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡, 记下这时的比例放大系数和临界振荡周期;
3)在一定的控制度下通过公式计算得到PID控制器的参数。
本实施例中,机器人接收指令轨迹的通信周期与执行指令的执行周期 相同。即在接收到当前时刻的指令轨迹后到接收下一时刻的指令轨迹前, 执行完成对当前时刻的指令轨迹的处理和执行。
下面结合具体实施例对本技术方案详细描述。
如步骤S1所述,按照通信周期获取指令轨迹在k时刻的目标位置,并 以该目标位置为原点,以该指令轨迹的航向(即k时刻的指令轨迹航向) 为X轴方向在平面坐标系内建立运动学坐标系。
具体地,机器人在当前时刻可以按照设定的通信周期以及网络通信协 议从服务器端获取指令轨迹在下一时刻的目标位置。在本实施例中,当前 时刻是k-1时刻,下一时刻是k时刻,通信周期为10毫秒、网络通信协议 为MQTT(Message Queuing TelemetryTransport,消息队列遥测传输)。
机器人在k-1时刻获取到的指令轨迹在k时刻的目标位置,机器人在k 时刻就需要到达(或者接近)该位置,最佳状态是机器人在k时刻所处位 置与指令轨迹在k时刻的目标位置重合。
所述指令轨迹是存储于服务器端的一条曲线轨迹,曲线轨迹上包括多 个目标位置。在本实施例中,通信周期为10毫秒,时间非常短,这些目标 位置非常密集。并且,机器人获取到的指令轨迹在下一时刻的目标位置至 少包括以下参数信息:时刻,k时刻的指令轨迹速度(是指线速度),目 标位置的坐标,k时刻指令轨迹航向。其中,目标位置的坐标是指该时刻 目标位置在平面坐标系内的坐标。所述平面坐标系(即xoy坐标系)是机 器人当前地图的坐标系,可以按照人为设定,所述航向概念上与现有技术 相同。
根据获取到的上述信息,机器人在平面坐标系内建立运动学坐标系。
如图2所示的是本发明实施例在平面坐标系中建立运动学坐标系的示 意图。参考图2,所示平面坐标系(即xoy坐标系)如上文所述,是机器 人当前地图的坐标系,可以按照人为设定。该运动学坐标系是以指令轨迹 在k时刻的目标位置为原点(图中的Q点),该指令轨迹的航向(即图中 target_heading(k)方向)为运动学坐标系的X轴方向,Y轴方向是在以X轴 逆时针90度方向,如图2中所示。在其他实施例中,所述Y轴方向也可 以设置为是以X轴顺时针90度方向。
需要说明的是,本实施例中,公式里的各个坐标都是以平面坐标系中 的坐标来表示和推导的。
如步骤S2所述,以k时刻的指令轨迹速度为前馈速度,k-1时刻机器 人位置与指令轨迹在k时刻的目标位置之间沿指令轨迹的航向上的距离为 位置偏差量,并结合PID控制器确定机器人在k-1时刻的控制线速度。
具体地,所述k时刻的指令轨迹速度是指线速度。继续参考图2,A 点为k-1时刻(即当前时刻)机器人位置,设A点在平面坐标系下的坐标 为(robot_x(k-1),robot_y(k-1)),A点距离运动学坐标系的X轴和Y轴的偏移 量分别为offset_x(k-1)和offset_y(k-1)。此时,以k-1时刻机器人位置与指 令轨迹在k时刻的目标位置之间在沿指令轨迹的航向上的距离offset_x(k-1) 作为位置偏差量,即A点与Y轴的偏移距离。
所述位置偏差量通过如下公式计算得到:
offset_x(k-1)=target_x(k)*cos(-target_heading(k))-target_y(k)*sin(-targetheading(k))
+robot_y(k-1)*sin(-target_heading(k))-robot_x(k-1)*cos(-target_heading(k))
其中,offset_x(k-1)为k-1时刻机器人位置与指令轨迹在k时刻的目标位置 之间沿指令轨迹的航向上的距离、(target_x(k),target_y(k))为指令轨迹在k 时刻的目标位置、target_heading(k)为该指令轨迹的航向、 (robot_x(k-1),robot_y(k-1))为k-1时刻机器人位置。
机器人在k-1时刻的控制线速度通过如下公式计算得到:
其中,control_velo(k-1)为机器人在k-1时刻的控制线速度、target_v(k)为 k时刻的指令轨迹速度、offset_x(k-2)为(k-2)时刻的位置偏差量、P1、I1 和D1为PID控制器的参数。
如步骤S3所述,确定指令轨迹在k时刻的目标位置在平面坐标系下的 曲率半径。
曲率半径计算公式R=lim|Δs/Δα|,当Δs趋向于0时,定义R就是 曲率半径。Δα为当前时刻指令轨迹目标位置的切向角与上一时刻指令轨 迹目标位置的切向角之差。Δs为当前时刻与下一时刻轨迹目标位置的偏 移距离。
由于本实施例中通信周期为10毫秒(即两个时刻之间定义为10毫秒), 两时刻位置点距离足够短,默认为此时Δs为极限值,则R=|Δs/Δα|。
在本实施例中,指令轨迹在k时刻的目标位置在平面坐标系下的曲率 半径采用的公式如下:
其中,
heading(k)为k时刻指令轨迹的切向角,heading(k-1)为k-1时刻指令 轨迹的切向角,(target_x(k),target_y(k))为指令轨迹在k时刻的目标位 置、(target_x(k-1),target_y(k-1))为指令轨迹在k-1时刻的目标位置,s(k) 指令轨迹在k时刻与k-1时刻的偏移距离。其中,
由于k时刻和k-1时刻的指令轨迹的目标位置之间的距离足够短,则 可将指令轨迹的目标位置点的切线方向角等效为k时刻与k-1时刻指令轨 迹上两点连线的方向角。
如步骤S4所述,根据机器人在k-1时刻的控制线速度和曲率半径得到 机器人在k-1时刻的控制角速度。
具体地,根据角速度与线速度的关系可知,机器人在k时刻的控制角 速度的计算公式如下:
omg_R(k-1)=control_velo(k-1)/R(k)
其中,omg_R(k-1)为机器人在k-1时刻的控制角速度、control_velo(k-1)为 机器人在k-1时刻的控制线速度、R(k)为机器人在k时刻的曲率半径。
如步骤S5所述,根据k-1时刻机器人偏离曲率圆的距离、机器人在 k-1时刻的控制线速度并结合PID控制器以得到k-1时刻机器人角速度分 量。
具体地,本步骤包括如下步骤:
1)建立曲率圆并确定该曲率圆的圆心坐标(center_x(k),center_y(k))。
如图3所示的是本发明实施例建立曲率圆和确定曲率圆的圆心的示意 图。参考图3,在曲率圆QR上,用直线分别连接曲率圆上的两点(A1和 A2)到圆心,分别求两条直线L1和L2的方程,结合两个方程求取两条直 线的交点,该交点即为曲率圆QR的圆心。其中,A1和A2分别是k时刻 和k-1时刻指令轨迹的目标位置。
假设tan(heading(k))≠0,根据公式:
根据上述L1和L2的方程可求得x、y,即为圆心坐标(center_x(k), center_y(k))。
2)依照如下公式确定k-1时刻机器人位置(robot_x(k-1),robot_y(k-1)) 到曲率圆的圆心的距离r_robot(k-1):
3)k-1时刻机器人位置偏离曲率圆的距离offset_r(k-1)=R(k)-r_robot(k-1),其中,R(k)为指令轨迹在k时刻的目标位置在平面坐标系下的曲率半 径。
4)依照如下公式确定机器人角速度分量:
其中,omg_offset_r(k-1)为k-1时刻机器人角速度分量,control_velo(k-1)为机器人在k-1时刻的控制线速度、P2、I2和D2为PID控制器参数。
如步骤S6所述,利用所述k-1时刻机器人角速度分量对k-1时刻的控 制角速度进行调整以得到k-1时刻机器人的角速度控制量。
具体地,按照如下公式得到k-1时刻机器人的角速度控制量。
control_omg(k-1)=omg_R(k-1)+omg_offset_r(k-1)
进一步地,在本实施例中,在得到了机器人在k-1时刻的控制线速度 和k-1时刻机器人的角速度控制量后,将其用于控制机器人的两轮电机转 速。
具体地,机器人的两轮电机转速的计算公式如下:
左轮电机转速velo_motor_left=
(2*control_velo(k-1)-control_omg(k-1)*WHEEL_DIS)/2.0*reduce_ratio;
右轮电机转速velo_motor_right=
(2*control_velo(k-1)+control_omg(k-1)*WHEEL_DIS)/2.0*reduce_ratio。
其中,control_velo(k-1)为机器人在k时刻的控制线速度、 control_omg(k-1)为k时刻机器人的角速度控制量、WHEEL_DIS为两轮间 距、reduce_ratio为减速机的减速比。
然后,以所述两轮电机转速作为指令控制机器人移动,以使机器人在 下一时刻(k时刻)能够尽量接近指令轨迹的k时刻的目标位置。
如图4所示的是本发明实施例的信号控制流程示意图。
参考图4,为了使机器人下一时刻(k时刻)能够尽量移动至指令轨迹 在k时刻的目标位置,根据当前时刻(k-1时刻)获取到的下一时刻(k时 刻)指令轨迹的目标位置与机器人反馈的在当前时刻(k-1时刻)位置之 间的位置偏差量,以k时刻指令轨迹速度为前馈速度,结合PID控制器调 节以确定当前时刻机器人的控制线速度。
进一步地,基于指令轨迹在k时刻的目标位置建立曲率圆,根据k-1 时刻机器人位置偏离曲率圆的距离、结合PID控制器调节以确定当前时刻 机器人角速度分量。
可以看出,本实施例中,通过在平面坐标系中建立运动学坐标系,以 k时刻的指令轨迹速度为前馈速度,k-1时刻机器人位置与运动学坐标系的 原点(即指令轨迹在k时刻的目标位置)之间在指令轨迹的航向(运动学 坐标系的X轴方向)上的距离为位置偏差量,借助PID控制器辅提高了位 置控制的精度并减小了对指令轨迹跟踪的时滞问题。
进一步,引入曲率圆模型,根据k-1时刻机器人偏离曲率圆的距离、 机器人在k-1时刻的控制线速度并结合PID控制器以得到k-1时刻机器人 角速度分量,并利用k-1时刻机器人角速度分量对k-1时刻的控制角速度 进行调整以得到精确的控制角速度,解决了线速度与角速度不匹配的问题。
基于上述存储设备,本发明实施例还提供了一种机器人,该机器人包 括如上述实施例中所述的存储设备,以及处理器,适于处理存储设备存储 的各种指令。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明, 任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭 示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡 是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所 作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。