<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_42017767的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_42017767</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_42017767]]></copyright><item><title><![CDATA[深入解析 OpenHarmony 构建系统-4-OHOSLoader类]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/143731501</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/143731501</guid><author>qq_42017767</author><pubDate>Wed, 13 Nov 2024 10:14:44 +0800</pubDate><description><![CDATA[OHOSLoader类是OpenHarmony构建系统的核心组件之一，它通过加载和解析构建配置文件，生成系统所需的各类文件，确保构建过程的顺利进行。本文详细分析了OHOSLoader类的实现，展示了其在构建过程中的关键作用。通过深入理解这个类的功能，开发者可以更好地掌握OpenHarmony的构建系统，从而更高效地进行系统开发和定制。]]></description><category></category></item><item><title><![CDATA[深入解析 OpenHarmony 构建系统-3-GN 构建系统管理脚本]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/143707579</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/143707579</guid><author>qq_42017767</author><pubDate>Tue, 12 Nov 2024 11:31:35 +0800</pubDate><description><![CDATA[该脚本定义了一个Gn类，继承自接口，并实现了多个方法来执行不同的gn命令。这些命令包括生成构建文件、查询路径、描述目标、列出目标、引用检查、格式化和清理等。CMDTYPEGEN = 1PATH = 2DESC = 3LS = 4REFS = 5FORMAT = 6CLEAN = 7CMDTYPE枚举类型定义了gn命令的类型，包括生成构建文件 (GEN)、查询路径 (PATH)、描述目标 (DESC)、列出目标 (LS)、引用检查 (REFS)、格式化 (FORMAT) 和清理 (]]></description><category></category></item><item><title><![CDATA[深入解析 OpenHarmony 构建系统-2-目录结构与核心组件]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/143687469</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/143687469</guid><author>qq_42017767</author><pubDate>Mon, 11 Nov 2024 15:43:26 +0800</pubDate><description><![CDATA[OpenHarmony作为一款面向全场景的分布式操作系统，其构建系统在开发过程中扮演着至关重要的角色。本文将详细介绍OpenHarmony构建系统的目录结构和核心组件，帮助开发者更好地理解和使用这一强大的工具。]]></description><category></category></item><item><title><![CDATA[深入解析 OpenHarmony 构建系统-1]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/143674545</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/143674545</guid><author>qq_42017767</author><pubDate>Mon, 11 Nov 2024 10:31:38 +0800</pubDate><description><![CDATA[本文详细解析了 OpenHarmony 构建系统中的一个关键 Python 脚本，介绍了其代码结构、功能和使用方法。]]></description><category></category></item><item><title><![CDATA[数据结构定义]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/126325201</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/126325201</guid><author>qq_42017767</author><pubDate>Sun, 14 Aug 2022 22:23:04 +0800</pubDate><description><![CDATA[数据结构定义]]></description><category></category></item><item><title><![CDATA[二叉排序树的建立与遍历]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/126301363</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/126301363</guid><author>qq_42017767</author><pubDate>Fri, 12 Aug 2022 11:56:03 +0800</pubDate><description><![CDATA[二叉排序树的建立与遍历]]></description><category></category></item><item><title><![CDATA[Ardupilot中添加参数并在地面站显示]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/125455283</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/125455283</guid><author>qq_42017767</author><pubDate>Sat, 25 Jun 2022 09:17:31 +0800</pubDate><description><![CDATA[第二步  修改Parameters.h文件
第三步  修改Parameters.cpp文件
第四步  修改config.h文件]]></description><category></category></item><item><title><![CDATA[Ardupilot笔记：自定义LOG输出]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/120392845</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/120392845</guid><author>qq_42017767</author><pubDate>Mon, 20 Sep 2021 17:20:08 +0800</pubDate><description><![CDATA[在调试的过程中，如果想知道自己定义的一个变量的数据是如何变化的该怎么办呢？
1、log.cpp中自定义结构体
struct PACKED log_Data_SXC {
    LOG_PACKET_HEADER;
    uint64_t time_us;
    float    PN;
    float    PE;
};

2、log.cpp中编写自定义结构体赋值函数
void Rover::Log_Write_Data_SXC()
{
    Vector2f posNE1;
    AP::ah]]></description><category></category></item><item><title><![CDATA[Ardupilot源码笔记：实现添加新的导航控制算法]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/115253473</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/115253473</guid><author>qq_42017767</author><pubDate>Fri, 26 Mar 2021 19:21:15 +0800</pubDate><description><![CDATA[APM中使用的导航控制算法为LI控制算法，其具体的实现如下图所示：

乏了，后面再写

]]></description><category></category></item><item><title><![CDATA[Ardupilot笔记：各类之间的调用关系]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/114984317</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/114984317</guid><author>qq_42017767</author><pubDate>Thu, 18 Mar 2021 16:55:32 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[Ardupilot笔记：Rover auto模式下的执行流程]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/114749135</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/114749135</guid><author>qq_42017767</author><pubDate>Sat, 13 Mar 2021 16:06:33 +0800</pubDate><description><![CDATA[先从mode_auto.cpp的update()开始分析。
进入函数update()后会执行函数navigate_to_waypoint()。
mode_auto.cpp
void ModeAuto::update()
{
    // update navigation controller
    navigate_to_waypoint();
}

mode.cpp
void Mode::navigate_to_waypoint()
{
    // update navigation control]]></description><category></category></item><item><title><![CDATA[APM L1航迹控制算法实现]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/114699260</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/114699260</guid><author>qq_42017767</author><pubDate>Fri, 12 Mar 2021 16:22:01 +0800</pubDate><description><![CDATA[主要为了得到转向加速度a,a=2VVsinη/L1
APM中对L1进行了优化，L1=L1_PL1_DV/π，2用K=4ζζ代替。
// update L1 control for waypoint navigation 使用了大量的向量运算
void AP_L1_Control::update_waypoint(const struct Location &amp;prev_WP, const struct Location &amp;next_WP, float dist_min)
{
	//gcs().]]></description><category></category></item><item><title><![CDATA[Auto模式下的log输出]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/114287331</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/114287331</guid><author>qq_42017767</author><pubDate>Tue, 02 Mar 2021 16:01:08 +0800</pubDate><description><![CDATA[mode_auto.cpp
#include "mode.h"
#include "Rover.h"

#define AUTO_GUIDED_SEND_TARGET_MS 1000

bool ModeAuto::_enter()
{
	gcs().send_text(MAV_SEVERITY_NOTICE, "Run:mode_auto.cpp--&gt;ModeAuto::_enter()");
    // fail to enter auto if no mission commands
    ]]></description><category></category></item><item><title><![CDATA[ROS实现串口通信]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/109150470</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/109150470</guid><author>qq_42017767</author><pubDate>Sun, 18 Oct 2020 21:23:51 +0800</pubDate><description><![CDATA[虚拟串口的搭建
参考Linux下添加虚拟串口，接收和发送数据
com.py文件代码如下：
#! /usr/bin/env python

#coding=utf-8

import pty
import os
import select

def mkpty():
    #
    master1, slave = pty.openpty()
    slaveName1 = os.ttyname(slave)
    master2, slave = pty.openpty()
    slaveNam]]></description><category></category></item><item><title><![CDATA[ROS之tf空间坐标广播与监听]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/109110219</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/109110219</guid><author>qq_42017767</author><pubDate>Fri, 16 Oct 2020 09:42:58 +0800</pubDate><description><![CDATA[坐标广播
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import roslib
roslib.load_manifest('test')
import rospy
import tf
import turtlesim.msg


def turtle_pose(msg, turtlename):#回调函数
    print msg.x, msg.y
    br = tf.TransformBroadcaster()
    # 将位置信息打包广播到wor]]></description><category></category></item><item><title><![CDATA[ROS服务数据自定义]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/109076061</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/109076061</guid><author>qq_42017767</author><pubDate>Wed, 14 Oct 2020 15:58:23 +0800</pubDate><description><![CDATA[服务数据的定义与话题数据大部分相同，唯一要注意的一处是在CMakeLists.txt文件中，服务数据的定义应为：
add_service_files(FILES man.srv)

服务端
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time, thread
import rospy
from geometry_msgs.msg import Twist
from test.srv import man,manResponse,manReques]]></description><category></category></item><item><title><![CDATA[ROS服务端与客户端]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/109073890</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/109073890</guid><author>qq_42017767</author><pubDate>Wed, 14 Oct 2020 15:01:43 +0800</pubDate><description><![CDATA[服务端
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import time, thread
import rospy
from geometry_msgs.msg import Twist
from std_srvs.srv import Trigger, TriggerResponse

pubcommand = False
tpub = rospy.Publisher('/turtle1/cmd_vel', Twist, queue_size=10)


]]></description><category></category></item><item><title><![CDATA[ROS话题发布与订阅]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/109057655</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/109057655</guid><author>qq_42017767</author><pubDate>Tue, 13 Oct 2020 18:22:16 +0800</pubDate><description><![CDATA[话题发布
#!/usr/bin/env python
import rospy
from geometry_msgs.msg import  Twist

def velocity_publisher():
	# ROS节点初始化
    #anonymous=True，表示后面定义相同的node名字时候，按照序号进行排列
    rospy.init_node('velocity_publisher',anonymous=True)
    # 创建一个Publisher，发布名为/turtle1/cmd]]></description><category></category></item><item><title><![CDATA[ROS编写自己的msg(Python实现)]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/109056293</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/109056293</guid><author>qq_42017767</author><pubDate>Tue, 13 Oct 2020 18:15:08 +0800</pubDate><description><![CDATA[#!/usr/bin/env python
import rospy
from test.msg import  Person#Person.msg文件在test/msg文件夹下
#需在工程根文件夹下面运行，否则会报错，同时要设置可运行

def people_publisher():
    rospy.init_node('People',anonymous=True)
    people_pub=rospy.Publisher('/mymsg',Person,queue_size=10)
    r]]></description><category></category></item><item><title><![CDATA[ROS命令行工具的使用]]></title><link>https://blog.youkuaiyun.com/qq_42017767/article/details/109051500</link><guid>https://blog.youkuaiyun.com/qq_42017767/article/details/109051500</guid><author>qq_42017767</author><pubDate>Tue, 13 Oct 2020 16:01:56 +0800</pubDate><description><![CDATA[以小海龟为例
启动ROS Master
roscore

启动小海龟仿真器 （运行一个节点需重新打开一个终端）
rosrun turtlesim turtlesim_node#rosrun+功能包名+节点名

启动海龟键盘控制节点
rosrun turtlesim turtle_teleop_key

基于qt的可视化工具命令–rqt_graph
rqt_graph

/teleop_tutle:键盘控制节点
/turtlesim：小海龟仿真器节点
/turtle/cmd_vel:一个话题
显示ros系统相]]></description><category></category></item></channel></rss>