ROS提高篇
ROS提高篇
只有干货,没有废话
书山有路勤为径,学海无涯苦作舟
冲就对了
1. 进阶操作
1.1 工作空间及功能包
创建工作区间并初始化
mkdir -p ~/work_space/src # 创建文件目录,-p:若无该目录就创建cd ~/work_space/src # 切换到src目录下catkin_init_workspace # 初始化工作空间
编译空间
cd .. # 返回上一目录catkin_make # 编译
编译单独功能包
catkin_make -DCATKIN_WHITELIST_PACKAGES="package_name1;package_name2"
注意在使用了以下命令后,想要重新编译整个工作空间,并不是使用catkin_make,而是需要使用上述指令且包名留空白。
指定编译线程
catkin_make -j4 -l4 # j代表并行运行任务数,l代表最大负载平均值,防止过载。
添加环境变量
source devel/setup.bash
查看环境变量
echo $ROS_PACKAGE_PATH
CM ...
PurePursuit算法
Pure Pursuit算法
Pure pursuit算法是一种基于几何方式的基本路径追踪算法,下面将从:
RTK与imu融合
车辆运动学模型
ROS实现进行讲解
imu_gps_localization包
该项目(ROS包)是:利用EKF(扩展卡尔曼滤波)实现IMU与GPS信号的融合。
为什么要进行融合呢?
IMU数据具有:高频率、灵敏,能有效提供姿态变化,但存在漂移等问题。
GPS数据具有:位置精度高(RTK 厘米级误差)、可靠,但存在更新频率慢。
综上所述,仅仅使用GPS进行对车辆的完全控制显然是不可靠的。
下载包后,分析项目结构有:
├─doc ## 存放地图信息├─imu_gps_localizer ## imu、GPS融合算法│ ├─include│ │ └─imu_gps_localizer│ ├─src│ └─third_party│ └─GeographicLib ## 几何库│ ├─include│ └─src└─ros_wrapper ## 封装 ├─include ├─launch ...
ROS基础篇
ROS基础篇
ROS:robot operating system,是一款旨在为机器人研究和开发提供代码复用的支持。
ROS是一款分布式进程(也就是“节点”)框架。
支持多种语言,包括Java,C++,Python等。
大量的工具,库,协议。
优秀的进程通讯机制。
1. ROS的安装
ROS系统虽然叫做系统,但是其寄生于Linux系统之上,在学习期间,可以安装虚拟机进行学习。
虚拟机安装:VMware
Linux系统安装:Ubuntu18.04
VMtools:VMtools
ROS安装:Ubuntu18.04安装ROS Melodic
2. ROS的使用
2.1 简单使用
下面将演示基于终端Terminator的简单流程,也可以用vscode。
2.1.1 安装Terminator
由于使用ros时需要打开多个ros终端,则可以安装终端分频工具,
sudo apt install terminator
对此,该工具常用的快捷键:
Ctrl+Shift+W //关闭当前终端Ctrl+Shift+O / ...
Kalman滤波详解
Kalman滤波详解
1. 引言
在我们使用像超声波、红外测距、激光雷达等 “离散型” 数据传感器时,所得到的传感器数据会因为噪声的影响,使得发送出的数据在实际数据上下波动,如:
而卡尔曼滤波器用于估计系统状态,其利用系统的动态模型和传感器提供的观测值来更新对系统状态的估计,以得到最佳数据。
对于Kalman滤波器,其特点:
将系统状态建模为一个线性动态系统,
并假设系统的状态和观测值都受到高斯噪声的影响,
通过递归地更新两个步骤来实现状态估计:预测步骤、更新步骤。
其适用范围:
线性高斯系统,线性:满足叠加性和齐次性,高斯:噪声服从正态分布。
2. 进阶
2.1 状态空间
以下方程针对的是离散线性动态系统。
状态方程为:
其中,
Xk:当前状态值。
AXk-1:Xk-1,上一状态值,A,权值。
BUk:Uk,当前输入值,B:权值。
Wk:过程噪声。
==当X为一维数组时,A=1。==
观测方程为:
其中,
zk:观测值。
HXk:同上。
vk:测量噪声,其可能来自传感器自身误差。
wk是按照理论计算出来的值但是跟实际 ...
WindowsC的serial
Windows C下的 “serial”
上文中我们已经介绍了基于python的serial库,而针对法老王——C,自然也有自己的串口库:
实验环境:Win10 x64 C
gcc 版本:8.1.0
1. 串口配置
针对以下串口配置有:
#include <stdio.h>#include <windows.h>#include "serial.h"
其中:serial.h,
#ifndef __SERIAL_H#define __SERIAL_H#include <windows.h>typedef HANDLE PORT;PORT OpenPort(int idx);void ClosePort(PORT com_port);int SetPortBoudRate(PORT com_port, int rate);int SetPortDataBits(PORT com_port, int bits);int SetPortStopBits(PORT com_port, int bits);int SetPortParit ...
PySerial的使用
pyserial使用
python版本大于2.7
pyserial版本:
import serialprint('serial版本:',serial.__version__)# 或者直接 在终端:pip list
1. 查询串口
import serialimport serial.tools.list_ports # 获取所有串口设备实例。# 如果没找到串口设备,则输出:“无串口设备。”# 如果找到串口设备,则依次输出每个设备对应的串口号和描述信息。ports_list = list(serial.tools.list_ports.comports())if len(ports_list) <= 0: print("无串口设备。")else: print("可用的串口设备如下:") for comport in ports_list: print(list(comport)[0], list(comport)[1]) # 第一个就是串口号,第二个为描述信息
1.1 串口字典
...
LinuxC 提高篇
LinuxC 提高篇
上面我们已经初步介绍了,C语言的一些基本语法和拓展应用,
例如:枚举类型、结构体位字段、共用体以及内存的分配和释放,
其次再对Linux环境下的gcc编译器、VIM、GDB等有一个初步的介绍,
下面将进行一些核心技术的介绍。
5. linux进程控制
使用ps -aux查看系统中正在进行的进程信息。
我们理应知道:在Linux环境的进程特性。
动态性:进程是程序的执行,是程序在处理机上执行时的一个活动。
并发性:多个程序可以同时运行在同一内存空间上。
独立性:每个进程都是运行在各自的虚拟空间中,互不干扰,是独立获得资源和调度的基本单位。
异步性:各个进程都是按照自己运行速度执行。
结构特性:每个进程都具有自己的私有空间,在该空间中,进程由代码段、数据段以及堆栈段构成。
此外,进程也有属性信息。
ID、状态、进程切换、虚拟内存、文件描述符、用户ID、组ID等。
5.1 创建进程
5.1.1 fork() 详解
在Linux系统下,进程的创建有函数:fork()、vfork()、exec()函数。
pid_t:用于定义进程的ID,可以理解为非负 ...
LinuxC 基础篇
Linux C
Linux系统是基于C语言的一种类UNIX系统,其发布遵循GPL协议。
Linux内核是系统的核心程序文件,其主要包括:中断服务程序、调度程序、内存管理程序、网络和进程间通讯等程序构成。
Linux保留了UNIX的大多数特点:支持动态加载内核模块、支持对称多处理机制、不区分线程和其他一般进程。
本文章主要讲解如何在Linux环境下进行C语言程序设计。
1. C语言基础
下面介绍的C语言基础,是在有一定的基础上进行补充说明。
1.1 数据类型
C语言的数据类型可以分为基本类型、构造类型、指针类型和空类型。
1.1.1 整型、实型、字符型
基本类型
特点
整型
-
实型
-
字符类型
-
1.1.2 枚举类型
枚举类型:假设变量仅有几种可能的值,可将其定义为枚举类型。
跟结构体一样,使用关键字enum声明一个枚举类型,再用该枚举类型声明定义变量,如:
enum IE{ res1 = 0x80, // 如果不赋值的话,默认按顺序从0开始赋值,res1只是标识符,不赋值就把res1赋值给其它变量,其实给的为0. re ...
hello-hexo
这是基于Hexo框架 + butterfly主题搭建起来的个人网站,很感谢Hexo和Jerry以及其他开源项目的贡献者,谢谢。针对hexo的开发使用详见hexo文档。如果你有任何问题,可以在hexo常见问题或者GitHub issues中解决。
Hexo简易教程
新建文章 (post)
$ hexo new "My New Post"
More info: Writing
本地预览
$ hexo server
More info: Server
生成静态文件
$ hexo generate
More info: Generating
部署
$ hexo deploy
More info: Deployment
Butterfly
More info: ButterFly
tag-hide
{% hideInline content,display,bg,color %}
mermaid
{% mermaid %}pie title Key elements in Product X "Calcium" ...