Vehicel_Theory
汽车理论@ wily
常见名词121. ECU 电子控制单元,在八字里面是模拟的,发布相关消息;2. ESC 汽车电子稳定控制系统,是汽车ABS(防抱死系统)和TCS(牵引力控制系统)的进一步扩展
操纵性指标
12345678910111213141516171819202122232425261. 时域响应特性,汽车在转向盘输入或者外界干扰输入下的侧向运动相应随时间变化的特性 $ 转向盘角阶跃输入 稳态响应---->横摆角速度增益(转向灵敏度) 瞬态响应---->反应时间;横摆角速度波动的无阻尼圆频率 $ 横摆角速度频率响应特性 汽车横摆角速度与转向盘转角的振幅比及相位差的变换规律---> 共振峰频率;共振时振幅比;相位滞后角;稳态增益 $ 转向盘中间位置操纵稳定性 转向盘小转角,低频正弦输入--->转向灵敏度;转向盘力特性;转向功灵敏度 $ 回正性 转向盘力输入下的时域响应--->回正后剩余横摆角速度与剩余横摆角; 达到剩余横摆角速度的时间 $ 转向半径 ...
Zero_copy
ROS2零拷贝REF
实际情况工作站在使用ros2时计算量很大,不同节点之间存在大量的数据传输拷贝问题下面的例子演示了如何在两个节点直接实施零拷贝通讯
Code_example12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879#include <chrono>#include <cinttypes>#include <cstdio>#include <memory>#include <string>#include <utility>#include "rclcpp/rclcpp.hpp"#include "std_msgs/msg/int32.hpp"using namespace std::chrono_literals;// ...
ESKF笔记
ESKF(error-state Kalman Filter)ReferenceREF1 REF2REF3
贝叶斯滤波首先确定存在系统方程:xk=f(xk−1,uk,wk)以及观测方程:yk=h(xk,vk)其中,x表示系统状态,y表示观测量,w表示系统传递噪声,v表示观测误差。
四元数
表示形式Q=a+bi+cj+dkq = q w + qvq=[qw qv]
四元数的乘法运算,可以写作矩阵计算的形式
通过四元数的微分方程 q ˙ = q ⊗ Ω \dot q=q \otimes \Omega q˙=q⊗Ω可以看到,四元数与SO(3)一样,可以写作exp映射的形式,并且,两者的旋转向量是一样的,不过对于旋转矩阵的映射而言,首先会将旋转向量映射到so(3)上,之后SO(3)与so(3)通过exp来一一对应,而四元数是将旋转向量先映射到切线空间之后再与四元数进行exp映射
其中SO3是指三维特殊正交群,so3是指三维特殊正交群的李代数支持李群和李代数运算的库文件是Sophs,支持SO( ...
传递函数离散化和PID控制的Python实现
传递函数离散化和PID控制的Python实现1234567891011121314本文参考:【Matlab】M文件编写PID调节传递函数 - 知乎 (zhihu.com),和(3条消息) 传递函数如何转化为差分方程_乄微风绕指柔乄的博客-CSDN博客_传递函数离散化为差分方程感谢这两位大大,声明:本人小白,错误之处多多体谅寒假车队培训:要求用G(s)=133/(s^2+25s)的传递函数设计一个增量式的pid查看相关流程可知,首先要将S域的传递函数改写成差分方程,需要按照下述流程,S域传递函数——Z域离散函数——差分方程我们使用一阶向前差分S=(Z-1)/T,和Y(k-n)=Y(k)*Z^(-n)得到Z变换后的输出量和控制量之间的关系为 Y(k)=133*T^2*U(k-2)+(2-25*T)*Y(k-1)+(25*T-1)*Y(k-2)其中,Y为输出量,U为控制量,也就是说,再pid控制中,传递函数传递的是输出和控制量之间的关系。得到差分方程之后就可以方便多啦。
12345678910111213141516171819202122232425262728293031 ...
模糊控制理论
模糊控制笔记(前视距离的学习)
REF: 参考了知乎的笔记:模糊控制
Author: Wily_Elite
模糊控制系统设计流程
确定模糊控制器的结构
定义输入、输出量的模糊控制
建立模糊规则
模糊逻辑推理(有很多方式,常用的为假言推理)
输出模糊量清晰化
模糊控制和自控以及现控的区别
自控和现代控制都是基于模型的控制理论,自控使用传递函数,现代控制使用状态空间表达式,而模糊控制是基于经验的控制,或者说是基于自然语言的控制。
前视距离模糊控制的大概细节
隶属度求解使用三角形隶属函数(以横向误差为例)
其中蓝线代表的是ULS,橙色线代表的是ULM,灰色线代表的是ULB
模糊规则的建立
控制对象是前世距离系数
经验是误差越大,应该将前视距离调整的越大
LE OE
ULS
ULM
ULB
UOS
低
低
中
UOM
低
中
高
UOB
中
高
高
据此我们将前视距离系数分为三个模糊集,即上表中所列出的高,中,低 ;根据这个划分我们对控制对象做不同的处理,设置为一个钟形的隶属函数,这里略去不画
实际的前视距离
我们知道PP实际上 ...
Ros2学习笔记
ROS2学习笔记
参考:https://fishros.com
一般使用步骤
1.创建工作空间,这和ros1没有区别2.创建功能包,ros2 pkg create 包名 –build-type para1 –dependencies para2
1.如果build-type什么都不写,ros2会默认类型为ament_cmake. 2.rclpy完成这一步骤之后,在功能包中能看见三个文件夹,分别是resource、test、功能包同名文件夹;rclcpp创建完成后,在文件夹有include和src,这和ros1也是一样的 3.para1是功能包的编译类型,para2是rclpy或者rclcpp
3.创建python文件,之后修改resource目录下的setup.py
编译
colcon build编译工作空间里的所有功能包
colcon build --packages-select PKG_NAME单独编译某一个包
colcon build --packages-select YOUR_PKG_NAME --cmake-args -DBUILD_TEST ...
C++学习笔记
Wily的CPP学习笔记
2022/06/27
标准库 bind 函数private: void timer_callback() { auto message = std_msgs::msg::String(); message.data = “Hello, world! “ + std::to_string(count_++); RCLCPP_INFO(this->get_logger(), “Publishing: ‘%s’”, message.data.c_str()); publisher_->publish(message); } std::bind() C++的类成员函数不能像普通函数那样用于回调,因为每个成员函数都需要有一个对象实例去调用它。 通常情况下,要实现成员函数作为回调函数:一种过去常用的方法就是把该成员函数设计为静态成员函数(因为类的成员函数需要隐含的this指针 而回调函数没有办法提供),但这样做有一个缺点,就是会破坏类的结构性,因为静态成员函数只能访问该类的静态成员变量和静态成员函数,不能访问非静态的,要解 ...
How to build your own blog
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment