草庐IT

IMU惯性里程计解算(附代码实现)

一、系统概述IMU是机器人常用的传感器之一,IMU对机器人的定位功能实现非常重要,其优点在于是内源传感器对外部环境变化不明显,输出频率高,缺点在于存在累积误差。本文主要记录一下在机器人定位中对IMU的使用和对惯性导航里程计的理解和实现。本文代码主要依赖于ROS相关库实现,源代码见:GitHub-Abin1258/imu_to_odom:imuodometry1.系统输入:IMU传感器测量数据:线性加速度、角速度在ROS消息中的格式为:ps:1.要注意观察不同IMU传感器的单位不同,有的传感器加速度单位是重力加速度的倍数,有的传感器是米每秒的平方,本文所用传感器的单位是2.系统输出:Odomet

获取MPU9250九轴数据--以四轴飞行器姿态解算为例

文章目录MPU9250简介概述特性MPU9250的通信协议四轴原理图MPU9250地址确定MPU9250与IIC通信时序MPU9250获取原始数据MPU9250的初始化流程MPU9250获取原始数据MPU9250是一款9轴运动跟踪装置,在它3x3x1mm的封装中集成了3轴陀螺仪,3轴加速度计,3轴磁力计以及运动处理器(DMP)并且兼容MPU6515。通过IIC,可以直接输出9轴的全部数据。因此它也是四轴姿态结算的基础,所以能够正确获取MPU9250的数据是十分重要的。本章目的:了解MPU9250配置,陀螺仪数据,加速度计数据读取。涉及外设:MPU9250,IICMPU9250简介概述MPU92

利用广播星历解算北斗卫星位置及精度分析

利用星历数据解算北斗卫星位置网上已经有了比较多关于如何利用播发的广播星历来解算卫星位置的blog,此文章的目的是为了记录一下学习成果的同时回馈一下。(毕竟看过很多blog了,但是从来没写过),我在文中用到的数据是我处理过的,只保留了北斗的数据,如果直接用rinex格式下的星历文件,同样可以按照相同的步骤进行求解,不过在数据处理方面有所不同。在实现之前首先得下载好广播星历文件并且导入下载的网址就比较多了,比如说武汉IGS数据中心,广播星历和精密星历都能下载。下面是具体实现1.首先对参数初始化代码目前没有做交互,也没有采用循环(这些都比较容易在后期实现)所以在一开始只能选定一个卫星号prn,并且只

利用广播星历解算北斗卫星位置及精度分析

利用星历数据解算北斗卫星位置网上已经有了比较多关于如何利用播发的广播星历来解算卫星位置的blog,此文章的目的是为了记录一下学习成果的同时回馈一下。(毕竟看过很多blog了,但是从来没写过),我在文中用到的数据是我处理过的,只保留了北斗的数据,如果直接用rinex格式下的星历文件,同样可以按照相同的步骤进行求解,不过在数据处理方面有所不同。在实现之前首先得下载好广播星历文件并且导入下载的网址就比较多了,比如说武汉IGS数据中心,广播星历和精密星历都能下载。下面是具体实现1.首先对参数初始化代码目前没有做交互,也没有采用循环(这些都比较容易在后期实现)所以在一开始只能选定一个卫星号prn,并且只

三轴机械臂逆运动学解算(附代码)

三轴机械臂逆运动学解算(附代码)机械臂运动位姿的求解有两种方式一、正运动学通过控制已知的连轴(舵机或电机)的旋转角度,求出机械臂终端的空间坐标二、逆运动学通过已知的抓取点的空间坐标,求解出三个舵机所需要转动的角度,这里主要讲解逆运动学解法​​此处θ1,θ2,θ3是三个舵机所需转动的角度,γ是杆3相对于x轴的夹角,根据刚体旋转,逆运动学求解,会得到两个解,即有两种姿态,相对于前一个杆逆时针旋转的夹角为正,顺时针为负。如上图第一种姿态(上折线),θ1<0,θ2三、求解(这里就第一种姿态求解)①求B点坐标已知空间点A坐标x,y。(因为三杆必然处于同于平面,若涉及z坐标,则机械臂下方云台的解算应考虑在

三轴机械臂逆运动学解算(附代码)

三轴机械臂逆运动学解算(附代码)机械臂运动位姿的求解有两种方式一、正运动学通过控制已知的连轴(舵机或电机)的旋转角度,求出机械臂终端的空间坐标二、逆运动学通过已知的抓取点的空间坐标,求解出三个舵机所需要转动的角度,这里主要讲解逆运动学解法​​此处θ1,θ2,θ3是三个舵机所需转动的角度,γ是杆3相对于x轴的夹角,根据刚体旋转,逆运动学求解,会得到两个解,即有两种姿态,相对于前一个杆逆时针旋转的夹角为正,顺时针为负。如上图第一种姿态(上折线),θ1<0,θ2三、求解(这里就第一种姿态求解)①求B点坐标已知空间点A坐标x,y。(因为三杆必然处于同于平面,若涉及z坐标,则机械臂下方云台的解算应考虑在

PnP解算及SolvePnp用法

1PnP解算PnP问题:Perspective-n-Point问题。参考下图,给定n个3D空间参考点,以及各点在相机图像上对应的成像点,求参考点所在坐标系与相机的空间关系。即:已知条件1:给定匹配点对:世界坐标系(图中OwXwYwZw)下的n个3D点坐标及其对应在图像坐标系(图中ouv)下的2D点坐标。已知条件2:相机的内参。求:世界坐标系OwXwYwZw与相机坐标系OcXcYcZc之间的位姿变换关系。PnP问题的用途:相机位姿获取,物体位姿测量,AR/VR,机器人操作,SLAM中位姿初值求解……常用解法:DLT,P3P,EPnP,UPnP。2OpenCV的solvePnP2.1函数原型定义O

PnP解算及SolvePnp用法

1PnP解算PnP问题:Perspective-n-Point问题。参考下图,给定n个3D空间参考点,以及各点在相机图像上对应的成像点,求参考点所在坐标系与相机的空间关系。即:已知条件1:给定匹配点对:世界坐标系(图中OwXwYwZw)下的n个3D点坐标及其对应在图像坐标系(图中ouv)下的2D点坐标。已知条件2:相机的内参。求:世界坐标系OwXwYwZw与相机坐标系OcXcYcZc之间的位姿变换关系。PnP问题的用途:相机位姿获取,物体位姿测量,AR/VR,机器人操作,SLAM中位姿初值求解……常用解法:DLT,P3P,EPnP,UPnP。2OpenCV的solvePnP2.1函数原型定义O

STM32入门笔记(02):MPU6050、MPU9250、ICM20948及姿态解算(SPL库函数版)

目录MPU6050什么是MPU6050?MPU6050的特点MPU6050框图MPU6050初始化MPU6050寄存器电源管理寄存器1(0X6B)陀螺仪配置寄存器(0X1B)加速度传感器配置寄存器(0X1C)FIFO使能寄存器(0X23)陀螺仪采样率分频寄存器(0X19)配置寄存器(0X1A)电源管理寄存器2(0X6C)加速度传感器数据输出寄存器(0X3B~0X40)陀螺仪数据输出寄存器(0X43~0X48)温度传感器数据输出寄存器(0X41~0X42)DMP使用介绍硬件连接软件设计MPU6050驱动代码DMP驱动代码四轴上位机MPU9250ICM20948MPU9250与ICM20948的区

STM32入门笔记(02):MPU6050、MPU9250、ICM20948及姿态解算(SPL库函数版)

目录MPU6050什么是MPU6050?MPU6050的特点MPU6050框图MPU6050初始化MPU6050寄存器电源管理寄存器1(0X6B)陀螺仪配置寄存器(0X1B)加速度传感器配置寄存器(0X1C)FIFO使能寄存器(0X23)陀螺仪采样率分频寄存器(0X19)配置寄存器(0X1A)电源管理寄存器2(0X6C)加速度传感器数据输出寄存器(0X3B~0X40)陀螺仪数据输出寄存器(0X43~0X48)温度传感器数据输出寄存器(0X41~0X42)DMP使用介绍硬件连接软件设计MPU6050驱动代码DMP驱动代码四轴上位机MPU9250ICM20948MPU9250与ICM20948的区