当前位置: 首页 > java >正文

6020角度双环控制一种用于电机控制的策略

6020角度双环控制是一种用于电机控制的策略,主要用于精确控制电机的角度位置。以下是关于6020角度双环控制的详细信息:

工作原理

6020角度双环控制由两个反馈环组成:角度环和速度环。

  • 角度环(外环):角度环的主要任务是控制电机的最终位置。通过比较目标角度和实际角度的差值,角度环PID控制器计算出一个速度指令,作为速度环的输入。
  • 速度环(内环):速度环根据角度环给出的速度指令,控制电机的实际转速。速度环PID控制器会根据速度差值调整电机的电流,从而实现快速且稳定的转速控制。

控制流程

  1. 设置目标角度:根据实际应用需求,设定电机需要达到的目标角度。
  2. 角度反馈更新:通过电机内置的角度传感器,实时获取电机的当前角度,并更新角度环的反馈值。
  3. 角度PID计算:角度环PID控制器根据目标角度和当前角度的差值,计算出一个速度指令。
  4. 速度PID计算:速度环PID控制器根据角度环给出的速度指令和电机当前的实际转速,计算出电机需要的电流。
  5. 电机驱动:根据速度环PID控制器的输出,驱动电机以相应的速度转动,最终使电机达到目标角度。

代码示例

以下是一个简单的6020角度双环控制的代码示例:

manipulator_motor_pid[i].AnglePID.target=30;//degree
update_angle(&manipulator_motor_pid[i]._angle,motor_manipulator[i].angle);
pid_calc(&manipulator_motor_pid[i].AnglePID);manipulator_motor_pid[i].SpeedPID.target=manipulator_motor_pid[i].AnglePID.total_out;
manipulator_motor_pid[i].SpeedPID.current=motor_manipulator[i].speed_rpm;
pid_calc(&manipulator_motor_pid[i].SpeedPID);/*位置pid算法*/
void pid_calc(_pid* pid){pid->e =pid->target-pid->current;//倍数pid->p_out=(int32_t)(pid->Kp*pid->e);//积分分离if(fabs(pid->e)<I_Band){//积分pid->i_out +=(int32_t)(pid->Ki*pid->e);//积分限幅limit(&(pid->i_out),pid->IntegralLimit);}else{pid->i_out=0;}pid->d_out=(int32_t)(pid->Kd*(pid->e-pid->last_e));pid->total_out=pid->p_out+pid->i_out+pid->d_out;//pid 输出限幅limit(&(pid->total_out),pid->MaxOutput);pid->last_e=pid->e;}/*角度更新*/
void update_angle(motor_angle* _angle, uint16_t angle_fb){_angle->encoder=angle_fb;if(_angle->encoder_is_init){if(_angle->encoder-_angle->last_encoder>4096){_angle->round_cnt --;}else if(_angle->encoder-_angle->last_encoder<-4096){_angle->round_cont++;}}else{_angle->encoder_offset=_angle->encoder;_angle->encoder_is_init=1;}_angle->angle_offset=_angle->encoder_offset /8192.of *360.of;_angle->last_encoder= _angle->encoder;_angle->total_encoder=_angle->round_cnt *8192+_angle->encoder-_angle->encoder_offset;_angle->angle=_angle->total_encoder / 8192.0f * 360.0f;
}

注意事项

  • PID参数整定:角度环和速度环的PID参数(Kp、Ki、Kd)需要根据实际应用进行调整,以达到最佳的控制效果。
  • 积分限幅:为了避免积分项过大导致系统不稳定,需要对积分项进行限幅处理。
  • 微分先行:在某些情况下,可以采用微分先行的方法,以减少输入突变对系统的影响。

应用场景

6020角度双环控制广泛应用于需要精确角度控制的场合,如机器人云台控制、机械臂关节控制等。在RoboMaster比赛中,6020角度双环控制被用于云台的精确角度控制,以确保云台能够快速响应并维持在预设的角度位置。

如果你有更具体的问题或需要进一步的帮助,请随时告诉我。

http://www.xdnf.cn/news/18517.html

相关文章:

  • 智能合约漏洞检测技术综述:守护区块链世界的“自动售货机”
  • 在通义灵码中配置MCP服务
  • uniapp使用map打包app后自定义气泡不显示解决方法customCallout
  • JavaWeb前端05(Vue工程化,Vue组件两种风格:组合式API 和 选项式API)及简单案例)
  • 豆包 + 蘑兔,破解写歌难题!
  • 知识蒸馏 Knowledge Distillation 论文 Generalized Knowledge Distillation (GKD) 目标函数的演化
  • 【Cmake】Cmake概览
  • 使用GMail API 发送邮箱
  • OpenSCA开源社区每日安全漏洞及投毒情报资讯|21th Aug. , 2025
  • 前端github-workflows部署腾讯云轻量服务器
  • 实用R语言机器学习指南:从数据预处理到模型实战(附配套学习资源)
  • docker 查看容器 docker 筛选容器
  • 循环神经网络实战:GRU 对比 LSTM 的中文情感分析(三)
  • Flask数据库迁移实战指南
  • LeetCode100-76最小覆盖子串
  • 数据库备份sql文件过大,phpAdmin无法执行Sql
  • Python递归下降解析器深度解析:从原理到工程实践
  • 异常值检测:孤立森林模型(IsolationForest)总结
  • Flowise 任意文件上传漏洞 含Flowise Docker安装、漏洞复现(CVE-2025-26319)
  • 如何使用 DeepSeek 助力工作:全面指南​
  • AWS OpenSearch 是什么
  • ROS2下YOLO+Moveit+PCL机械臂自主避障抓取方案
  • 如何理解AP服务发现协议中“如果某项服务需要被配置为可通过多个不同的网络接口进行访问,则应为每个网络接口使用一个独立的客户端服务实例”?
  • Unreal Engine APawn 与 ACharacter 比较
  • 停车场道闸的常见形式
  • Docker的安装
  • 什么是数据分类分级?数据分类分级技术实现路径及产品推荐
  • 逆向代码笔记
  • centos7安装oracle19c流程(自用)
  • 全面解析 `strchr` 字符串查找函数