<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_34994476的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_34994476</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_34994476]]></copyright><item><title><![CDATA[C 语言中 void* 详解及应用]]></title><link>https://blog.youkuaiyun.com/qq_34994476/article/details/123594485</link><guid>https://blog.youkuaiyun.com/qq_34994476/article/details/123594485</guid><author>qq_34994476</author><pubDate>Sat, 19 Mar 2022 14:38:21 +0800</pubDate><description><![CDATA[void 在英文中作为名词的解释为 “空虚、空间、空隙”，而在 C 语言中，void 被翻译为"无类型"，相应的void * 为"无类型指针"。
void 似乎只有"注释"和限制程序的作用，当然，这里的"注释"不是为我们人提供注释，而是为编译器提供一种所谓的注释。
void的作用
1.对函数返回的限定，这种情况我们比较常见。
2.对函数参数的限定，这种情况也是比较常见的。
一般我们常见的就是这两种情况：

当函数不需要返回值值时，必须使用void限定，这就是我们所说的第一种情况。例如：void func（i]]></description><category></category></item><item><title><![CDATA[ROS学习笔记(4)——RVIZ中显示双足机器人行走]]></title><link>https://blog.youkuaiyun.com/qq_34994476/article/details/122887931</link><guid>https://blog.youkuaiyun.com/qq_34994476/article/details/122887931</guid><author>qq_34994476</author><pubDate>Fri, 11 Feb 2022 21:00:47 +0800</pubDate><description><![CDATA[RVIZ中显示双足机器人行走]]></description><category></category></item><item><title><![CDATA[ROS学习笔记(3)——通过脚本控制rviz中创建的机器人运动]]></title><link>https://blog.youkuaiyun.com/qq_34994476/article/details/122859583</link><guid>https://blog.youkuaiyun.com/qq_34994476/article/details/122859583</guid><author>qq_34994476</author><pubDate>Thu, 10 Feb 2022 15:30:46 +0800</pubDate><description><![CDATA[rviz中创建的机器人模型，通过脚本方式控制其运动。


]]></description><category></category></item><item><title><![CDATA[ROS学习笔记(2)——roslaunch turtle_tf turtle_tf_demo.launch报错问题（Ubuntu20.04python2与python3版本切换）]]></title><link>https://blog.youkuaiyun.com/qq_34994476/article/details/121932064</link><guid>https://blog.youkuaiyun.com/qq_34994476/article/details/121932064</guid><author>qq_34994476</author><pubDate>Tue, 14 Dec 2021 17:55:08 +0800</pubDate><description><![CDATA[写在前面
Ubuntu版本：20.04
ROS版本：noetic
解决运行roslaunch turtle_tf turtle_tf_demo.launch文件后报错问题
问题说明 ： 此问题最终是由于python版本的问题。
问题的产生
可以去看以下问题报错所在的目录下(/opt/ros/noetic/lib/turtle_tf)的文件：

打开报错为文件，第一行就可以看到：#!/usr/bin/env python
而我们自计算机没有指定python是哪个版本(即：python --version  查]]></description><category></category></item><item><title><![CDATA[ROS学习笔记(1)——创作工作空间/安装usb_cam来调用摄像头]]></title><link>https://blog.youkuaiyun.com/qq_34994476/article/details/121879895</link><guid>https://blog.youkuaiyun.com/qq_34994476/article/details/121879895</guid><author>qq_34994476</author><pubDate>Tue, 14 Dec 2021 17:48:18 +0800</pubDate><description><![CDATA[写在前面
ubuntu版本：20.04
ros版本：noetic

工作空间
工作空间(workspace)是一个存放工程开发相关的文件夹，一般包含：
src：代码空间，存放各种功能包。
build：编译空间，存放编译过程中产生的过程文件。(不常用)
devel：开发空间，存放编译完成后的可执行文件，环境变量配置的脚本。

(1) 创建工作空间
$ mkdir -p ~/catkin_ws/src
$ cd ..
$ catkin_init_workspace

创建文件夹，在catkin_ws文件夹下]]></description><category></category></item><item><title><![CDATA[np.nditer、flags=[‘multi_index‘] 用法]]></title><link>https://blog.youkuaiyun.com/qq_34994476/article/details/120020128</link><guid>https://blog.youkuaiyun.com/qq_34994476/article/details/120020128</guid><author>qq_34994476</author><pubDate>Tue, 31 Aug 2021 16:13:55 +0800</pubDate><description><![CDATA[it = np.nditer(x, flags=['multi_index'], op_flags=['readwrite'])

np.nditer是numpy array自带的迭代器。用一个demo解释一下np.nditer的用法。
先构建一个3x4的矩阵
然后输入命令
image.png
flags=[‘multi_index’]表示对a进行多重索引，具体解释看下面的代码。
op_flags=[‘readwrite’]表示不仅可以对a进行read（读取），还可以write（写入），即相当于在创建这个迭]]></description><category></category></item><item><title><![CDATA[基于RflySim平台的mahony(含磁罗盘)互补滤波在pixhawk仿真及实物实验（带实验数据）]]></title><link>https://blog.youkuaiyun.com/qq_34994476/article/details/119782643</link><guid>https://blog.youkuaiyun.com/qq_34994476/article/details/119782643</guid><author>qq_34994476</author><pubDate>Thu, 19 Aug 2021 10:39:03 +0800</pubDate><description><![CDATA[写在前面
本案例实验采用RflySim平台，该平台可以高效快速编写代码，使用simulink模型搭建，可以见代码直接生成对应的C代码，并一键将代码烧录进Pixhawk中，是一种快速开发平台，RflySim获取更多可以参考
mahony是什么
mahony互补滤波是一种精度相对可以高效的姿态解算方法。

...]]></description><category></category></item><item><title><![CDATA[PX4_ECL_EKF代码分析2]]></title><link>https://blog.youkuaiyun.com/qq_34994476/article/details/114502797</link><guid>https://blog.youkuaiyun.com/qq_34994476/article/details/114502797</guid><author>qq_34994476</author><pubDate>Mon, 08 Mar 2021 23:05:48 +0800</pubDate><description><![CDATA[写在前面
源码版本：1.6.0rc1
源码位置1：Firmware-1.6.0rc1\src\modules\ekf2_main.cpp
源码位置2：Firmware-1.6.0rc1\src\lib\ecl\EKF\
整体框架：

上图PX4的EKF代码框架，PX4的代码由两部分组成，一部分是在modules下的ekf2，另一部分是ecl代码库中EKF部分。
第一部分实现数据的订阅（subscribe）、整理、储存、经过处理的数据发布（publish）。
第二部分实现数据的处理。
第二部分：
bool E]]></description><category></category></item><item><title><![CDATA[PX4_ECL_EKF代码分析1]]></title><link>https://blog.youkuaiyun.com/qq_34994476/article/details/114461952</link><guid>https://blog.youkuaiyun.com/qq_34994476/article/details/114461952</guid><author>qq_34994476</author><pubDate>Sun, 07 Mar 2021 22:26:07 +0800</pubDate><description><![CDATA[写在前面
源码版本：1.6.0rc1
源码位置1：Firmware-1.6.0rc1\src\modules\ekf2_main.cpp
源码位置2：Firmware-1.6.0rc1\src\lib\ecl\EKF\

]]></description><category></category></item><item><title><![CDATA[windows安装Java环境及Flightplot分析PX4飞行日志]]></title><link>https://blog.youkuaiyun.com/qq_34994476/article/details/114376977</link><guid>https://blog.youkuaiyun.com/qq_34994476/article/details/114376977</guid><author>qq_34994476</author><pubDate>Thu, 04 Mar 2021 21:47:05 +0800</pubDate><description><![CDATA[写在前面
不管是windows还是Ubuntu下都需要安装对应的Java环境。（我用的是win10家庭版）
1.下载安装java环境：
a.下载
点击地址进行下载：https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

选择最下面的windows ×64下载，下载的时候需要注册一个账号，用邮箱就可以。

下载完就是上图这个文件双击运行安装。
b.安装
双击下载的程序包，出现如图所示，点击下一步]]></description><category></category></item><item><title><![CDATA[PX4位置估计源码分析]]></title><link>https://blog.youkuaiyun.com/qq_34994476/article/details/112346815</link><guid>https://blog.youkuaiyun.com/qq_34994476/article/details/112346815</guid><author>qq_34994476</author><pubDate>Fri, 08 Jan 2021 20:35:56 +0800</pubDate><description><![CDATA[写在前面
源码版本：1.6.0rc1
源码位置：Firmware-1.6.0rc1\src\modules\position_estimator_inav\position_estimator_inav_main.cpp
整体框架：

整个算法的核心思想是由地理坐标系下的加速度通过积分，来获得速度、位置信息；经过2次修正产生可利用的信息，第一次是利用传感器计算修正系数产生加速度的偏差修正加速度，第二次是利用修正系数修正位置；最后可利用速度经过加速度修正，可利用的位置经过了加速度和位置修正。加速度的修正过程是]]></description><category></category></item><item><title><![CDATA[PX4姿态控制源码分析]]></title><link>https://blog.youkuaiyun.com/qq_34994476/article/details/111830064</link><guid>https://blog.youkuaiyun.com/qq_34994476/article/details/111830064</guid><author>qq_34994476</author><pubDate>Tue, 29 Dec 2020 22:16:53 +0800</pubDate><description><![CDATA[写在前面
新的改变
我们对Markdown编辑器进行了一些功能拓展与语法支持，除了标准的Markdown编辑器功能，我们增加了如下几点新功能，帮助你用它写博客：

全新的界面设计 ，将会带来全新的写作体验；
在创作中心设置你喜爱的代码高亮样式，Markdown 将代码片显示选择的高亮样式 进行展示；
增加了 图片拖拽 功能，你可以将本地的图片直接拖拽到编辑区域直接展示；
全新的 KaTeX数学公式 语法；
增加了支持甘特图的mermaid语法1 功能；
增加了 多屏幕编辑 Markdown文章功能；
增加了]]></description><category></category></item><item><title><![CDATA[PX4姿态估计源码分析]]></title><link>https://blog.youkuaiyun.com/qq_34994476/article/details/111714953</link><guid>https://blog.youkuaiyun.com/qq_34994476/article/details/111714953</guid><author>qq_34994476</author><pubDate>Sat, 26 Dec 2020 09:17:00 +0800</pubDate><description><![CDATA[写在前面
今天入坑PX4开始学习PX4代码，pixhawk硬件是可以支持PX4、ardupilot两套固件。我用的是1.6.0rc1版本代码。
代码位置：\Firmware1.6.0rc1\src\modules\attitude_estimator_q
整体框架：

数据的获取（a、subscribe订阅的数据 b、从参数文件拷贝的默认参数）
姿态估计
数据发布（a、vehicle_attitude b、control_state）

int attitude_estimator_q_main(int a]]></description><category></category></item><item><title><![CDATA[PX4姿态估计源码分析]]></title><link>https://blog.youkuaiyun.com/qq_34994476/article/details/111635605</link><guid>https://blog.youkuaiyun.com/qq_34994476/article/details/111635605</guid><author>qq_34994476</author><pubDate>Fri, 25 Dec 2020 18:25:24 +0800</pubDate><description><![CDATA[写在前面
今天入坑PX4开始学习PX4代码，pixhawk硬件是可以支持PX4、ardupilot两套固件。我用的是1.6.0rc1版本代码。
代码位置：\Firmware1.6.0rc1\src\modules\attitude_estimator_q
PX4姿态估计源码
先找到功能入口函数：
int attitude_estimator_q_main(int argc, char *argv[])
{
	if (argc &lt; 2) {
		warnx("usage: attitude_estima]]></description><category></category></item></channel></rss>