4. ROS编程入门--PID控制器
来源:互联网 发布:阿里云1mbps实际网速 编辑:程序博客网 时间:2024/06/05 06:17
介绍:
这篇教程是交给大家怎么在ROS里写一个PID控制器,PID控制器有三部分:比例部分(P)、积分部分(I)、微分部分(D),PID的输出是这三部分的加和。
PID可以控制机器人的位置和航向角,期望机器人向前走x米,x即为参考值(PID控制器的输入期望),旋转期望角度
算法
PID输入是里程计消息。首先你要计算当前值和目标值之间的差值。另一个要计算的是PSD控制器的干涉值(intervention)(译者注:估计是PID输出吧)。由于用的是离散版本PID,因此积分变为加和形式。这些都在NodePID 类中进行实现。回掉函数负责数据的收集。
输入输出处理
程序的输入消息是里程计消息:
std_msgs/Header header
uint32 seq
time stamp
string frame_id
string child_frame_id
geometry_msgs/PoseWithCovariance pose
geometry_msgs/Pose pose
geometry_msgs/Point position
float64 x
float64 y
float64 z
geometry_msgs/Quaternion orientation
float64 x
float64 y
float64 z
float64 w
float64 covariance
geometry_msgs/TwistWithCovariance twist
geometry_msgs/Twist twist
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z
float64 covariance
你实际需要的是位置和时间信息。位置信息(x,y)存储在pose.pose.position中,Time信息存储在header.stamp中.唯一的问题是如何得到机器人的旋转信息。geometry_msgs/Quaternion 包含三位空间旋转的 float64 (x,y,z,w) 四元数,我么的机器人是在2D状态下运动的。
角度和距离
两点之间的距离:
两点之间的角度:
误差
- 距离误差 :参照公式distance
- 角度误差,首先要计算真实的角度(与起始点相差的角度):
φa=φo−φs
φa : 实际角度
φo : 里程计测算角度
φs : 起点角度
PID(PSD)控制器
vA(t) PID输出
e(t) 误差
kP 是比例常数
kD 微分常量
kI 积分常量
tn : n次迭代kS 对应kI 常量
code
https://github.com/will1991/rosintrodution
- 4. ROS编程入门--PID控制器
- PID控制器
- 3. ROS编程入门—Wall Following
- PID控制器详解
- PID控制器原理详解
- 经典PID控制器的缺陷
- 基于C++的PID控制器
- 5. ROS编程入门--航迹推算(dead reckoning)
- 6. ROS编程入门--路径跟随(Trajectory following)
- ROS入门2: ROS文件系统
- ROS入门入门
- ROS小车地盘4 PID算法
- PID 入门形象理解
- PID 入门简介
- 分数阶PID控制器的分析界面
- simulink设计PID控制器及其封装详解
- 自适应控制---自校正PID控制器
- ros入门第一篇
- 77秒小程序系统开发详解
- 一种基于reSIProcate的gb28181接入系统架构设计
- 奇怪了,ADD方法会少插入字段?
- Spring Boot 实现RESTful webservice服务端示例
- intel产品规格查询网址
- 4. ROS编程入门--PID控制器
- Angular问题笔记
- fdisk 命令——linux增加磁盘,分区、格式、挂载
- 初来乍到,请多指教
- win10家庭版没有组策略怎么办?
- Android RecyclerView 使用完全解析 体验艺术般的控件
- 关于label标签自身点击事件触发的影响和使用方式
- bind9(DNS服务)错误信息
- TensorFlow入门(十-I)tfrecord 固定维度数据读写