机器人算法汇总

机器人控制算法

i. 感知算法

i.i. 环境感知

i.i.i. 视觉
i.i.ii. slam算法
  1. 如扫地机器人(定位机器人):扫地机器人的行为决策和控制算法都是极其简单的,当遇到阻挡物时调整运动方位即可,扫地部件一致处于工作状态。
  2. 定位与地图构建:未知环境中机器人一边移动一边逐步描绘出此环境完全的地图

i.ii. 路径规划

  • 基于图论的经典的路径规划算法有DFS,BFS,Dijkstra,Astra
  • 智能路径规划算法有蚁群算法,遗传算法,模糊算法等

ii. 控制算法

ii.i. 决策算法

ii.ii. 运动控制算法

  • 还未突破
  • fsm,决策树,遗传算法,神经网络等
ii.ii.i. pid控制算法
  • PID(proportion integration differentiation)其实就是指比例,积分,微分控制
    pid
  1. 比例调节
  • 误差(目标值-测量值)*固定比例系数
  • 不足:(因为摩擦力)稳态误差
  • 例:把机器人从速度0.3m/s加速到1m/s并一直保持,初始时刻我们通过里程计测量到电机的输出速度是0.3m/s, 而我们的目标速度是1m/s,那么初始速度和目标速度存在一个误差Gap = 0.7(1.0-0.3),假设现在比例调节的参数K为0.6 (系统预设),那么当前时刻我们需要电机增加的速度是:Input = Gap * K =0.7 * 0.6 = 0.42(m/s), ,然后再测量现在的电机实际运行速度,假设现在电机是以0.6的速度(理想速度应该是0.3+0.42,但是考虑有摩擦等因素)运行,那么由于现在到目标的误差Gap是0.4了(1-0.6),那么下一时刻我们需要让电机增加的速度是:Input = 0.4 * 0.6 = 0.24,则理想期望速度为0.6+0.24=0.84,一直循环,这样机器人就会以变加速度的方式快速趋近于目标并保持。
  1. 积分调节
  • 再引入一个分量,该分量和误差的积分是正比关系
  • 例:用上面的例子来说明,第一次的误差Gap是0.8,第二次的误差是0.4,因此误差的积分(离散情况下积分其实就是做累加)就是0.8+0.4=1.2. 这个时候的控制量,除了比例的那一部分,还有一部分就是一个系数K2乘以这个积分项。由于这个积分项会将前面若干次的误差进行累计,会让输入增大,从而使得目标速度可以大于这个稳定值,渐渐到达目标的1.0,这就是积分项的作用。
  1. 微分调节
  • 微分在离散情况下,就是Gap的差值,就是t时刻和t-1时刻Gap的差,即Input=K3 *(Gap(t)- Gap(t-1)),其中的K3是一个系数项;在加速过程中,因为Gap是越来越小的,所以这个微分控制项一定是负数,在控制中加入一个负数项,就是为了防止机器人由于加速超过了目标速度。
  • 也就是越是靠近目标速度,越是应该注意控制速度,不能让超过,所以这个微分项的作用,就可以理解为刹车,当机器人离目标速度很近并且速度还很快时,这个微分项的绝对值(实际上是一个负数)就会很大,从而表示应该用力踩刹车才能让车保持恒定速度。 也就是能减少控制过程中的震荡。
  1. pid公式
    1括号内第一项是比例项,第二项是积分项,第三项是微分项,前面仅仅是一个系数。很多情况下,在离散的时候使用,则控制可以化为:
    2整合系数化为Kp, Ki,Kd三个系数,我们在实际控制中就是通过修改这三个系数来达到一个优良的控制系统:
    3
ii.ii.ii. 避障算法
  • 自动、无人驾驶
  • 主要是dwa避障算法和vfh避障算法
  • DWA避障算法(dynamic window approach)
    • 步骤拆解
    1. 在速度空间取多组速度(v,w)
    2. 模拟这些速度在一段时间内的运动轨迹
    3. 通过一个评价算法对不同轨迹打分
    4. 最优速度发送给下位机
    • ros主要使用dwa算法,ros中每当move-base处于规划状态时就调用dwa计算出一条最佳速度指令,发送给机器人底盘。
    • 机器人在获得目的地信息后,首先经过全局路径规划规划出一条大致可行的路线,然后调用局部路径规划器根据这条路线及costmap的信息规划出机器人在局部时做出具体行动策略。
  • VFH(Vector Field Histogram):向量场直方图算法
    • 步骤拆解
    1. 算法会计算各个方向的行进代价,该方向的障碍越多,代价越高
    2. 根据距离,权重不同,累加该方向不同距离的障碍物
    3. 根据不同方向的行进代价,可以直观的用一个柱状图表示:横坐标为0-360度的方向,纵坐标是该角度下的行进代价;柱状图越高,表示向该方向行进的代价越高,也表明越不可能通过
      注:按低区域柱状图而行走路线可能最终偏离目标方向,需要用一个核心的平衡算法平和代价和目标方向。
  • 3
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
多关节机器人算法是用于控制机器人多个关节运动的算法。其中,C语言是一种常用的编程语言,可以用于实现多关节机器人算法。 多关节机器人算法的目标是实现对机器人各个关节的精确控制,以使得机器人能够完成各种复杂的任务。这包括逆向运动学、正向运动学、轨迹规划和运动控制等方面。 逆向运动学是指根据机器人末端执行器的位置和姿态,计算出各个关节的角度。通过逆向运动学算法,可以将所需末端执行器的位姿转化为各个关节的角度,从而实现机器人的精确控制。 正向运动学是指根据各个关节的角度,计算出机器人末端执行器的位置和姿态。通过正向运动学算法,可以将各个关节的角度转化为机器人末端执行器的位姿,从而实现机器人的线性移动和姿态调整。 轨迹规划是指在给定起始位置和目标位置的情况下,计算出机器人关节的合适运动路径。通过轨迹规划算法,可以生成机器人运动的平滑轨迹,在不碰撞障碍物的前提下,实现机器人的高效移动。 运动控制是指根据计算得到的关节角度或位姿,通过控制机器人的驱动器或执行器,使机器人按照设定的轨迹进行运动。通过运动控制算法,可以实现机器人的精确位置和姿态控制,满足运动要求。 C语言作为一种高级编程语言,有良好的可移植性和运行效率,可以方便地实现多关节机器人算法。通过C语言的编程技术和相关库函数的调用,可以编写出高效可靠的多关节机器人控制程序,实现机器人复杂运动任务的精确控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值