APP

Slider1

This description of s1.

website

Slider2

This description of s2.

GZH

Slider3

This description of s3.

Previous Next
Hexo of Muwenfeng
  • Homepage
  • menu1
  • menu2
  • menu3
  • menu3
  • menu5

Navigation2专题九补充:设置生命周期与组合节点

生命周期ROS2中引入了生命周期的概念,用来系统地管理参与机器人操作的不同节点的启动和关闭。生命周期节点(Lifecycle node)的使用确保了所有节点在开始执行任务之前都成功实例化,并且如果出现任何未响应的节点,Nav2会关闭所有节点。 生命周期节点包含状态机转换机制,用于使能ROS2服务器中的确定性行为。Lifecycle Manager是Nav2中处理生命周期节点转换的组件,.........

Posted by Mu Wenfeng on 2022-01-27


OpenSSF专题六:ttl.sh使用

一个简单的Dockfile一、Dockerfile 概念Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。 镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本.........

Posted by Mu Wenfeng on 2022-01-18


Navigation2专题二十八:使用Coroutines的异步Actions

BehaviorTree.CPP库提供了两种易于使用的抽象类去创建一个异步的动作,这些动作通常具有以下特点: 需要很长时间来得出结论 可能会返回RUNNING状态 能够被终止 第一个抽象类就是我们熟悉的AsyncActionNode,它将在一个独立的线程中执行tick()方法。 在本小结中,我们将引入另一个重要的抽象类CoroActionNode,可以参考https://www.g.........

Posted by Mu Wenfeng on 2021-12-31


Navigation2专题二十七:传递额外参数

在之前的每个例子中,我们都“被迫”提供具有以下函数签名的构造函数 1MyCustomNode(const std::string& name, const NodeConfiguration& config); 在同样的情况下,我们希望能够向构造函数传递额外的参数,比如普通形参、指针、引用等等。 很多开发者会使用Blackboard来实现参数的传递,但是并不推荐这种方.........

Posted by Mu Wenfeng on 2021-12-31


Navigation2专题二十六:封装遗留代码

本小节将介绍如何封装一段没有使用BehaviorTree.CPP的代码,原始代码如下 12345678910111213// This is my custom type.struct Point3D { double x,y,z; };// We want to create an ActionNode to calls m.........

Posted by Mu Wenfeng on 2021-12-31


Navigation2专题二十五:端口重映射

端口重映射是指在一棵树与子树之间的端口重映射。在上一小节例子中,一棵子树从它父节点的角度来看,就如同一个单一的叶子节点一般。 在一棵庞大的行为树中,为了避免名称冲突,任一颗树与其子树都需要使用Blackboard的不同实例,因此我们需要显示的将一棵树的端口与它子树的端口连接起来。 这就要用到端口的重映射技术,它只需在XML中进行定义就可以实现。 例子考察下面的行为树 123456789.........

Posted by Mu Wenfeng on 2021-12-31


Navigation2专题二十四:子树与日志

通过将较小的、可复用的行为树组合成较大的树的方式,我们可以创建大尺度的行为树。换句话说,我们希望创建分层的行为树。 只需在XML文件中定义多个行为树,并且用其中一棵去包含另外的行为树,就可以构建分层的行为树。 嵌套行为下面是一个很好的嵌套子树的例子,其中还使用了Decorator节点与Fallback节点。 123456789101112131415161718192021222324.........

Posted by Mu Wenfeng on 2021-12-31


Navigation2专题二十三:序列节点

本小结将以具体的例子来讲解SequenceNode与ReactiveSequence之间的差别。 一个同步的动作拥有自己的线程,这意味这它允许用户使用阻塞函数,但同时也会将执行的流程返回到行为树中。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515.........

Posted by Mu Wenfeng on 2021-12-31


Navigation2专题二十二:通用端口

本节将讲述如何在端口中使用C++通用类型 解析stringBehaviourTree.CPP支持自动将string转换为通用类型如int、long、double、bool、NodeStatus等。 也可以支持用户自定义类型,如 123456// We want to be able to use this custom typestruct Position2D &.........

Posted by Mu Wenfeng on 2021-12-30


Navigation2专题二十一:输入与输出端口

如上一节所述,自定义TreeNode可用于执行任意简单或复杂的软件,它们的目标是提供一个更高抽象级别的接口。因此TreeNode(树节点)在概念上与函数并无差别。 类似与使用函数,通常我们会有如下诉求: 将参数传递给节点(inputs) 从一个节点获取某种信息(outputs) 一个节点的输出可能是另一个节点的输入 BehaviorTree.CPP库提供了通过端口传递数据流的基本机.........

Posted by Mu Wenfeng on 2021-12-30


  • Older Posts →
Tags
gazebo,sdf,xml ROS2, NAV2 URDF, rviz, gazebo TF2, URDF, REP-105, REP-103 https://github.com/ossf/foundation topic statics launch, parameter ROS2,launch,python composition ubuntu20.04, github, hexo C++, python, ros2, gazebo gazebo,ros2,gazebo_ros_pkgs gazebo,rviz ROS2, action, C++ C++,GCC docker, Ubuntu, ros2, Gazebo ros2, gazebo, sdf, ubuntu ROS2 interfaces costmap odometry, ekf go ros2,c++,python urdf,Gazebo rust and go ros2, Gazebo, C++, Python, sdf, xml, cmake ROS2, Docker, ubuntu,Gazebo ROS2, TF2, C++ C,C++,Java,Go,Rust,TypeScript,Kotlin ros2, Gazebo, C++, Python, sdf, xml

About me

INNOVATION IS KING!


Recent posts
  • Navigation2专题九补充:设置生命周期与组合节点
  • OpenSSF专题六:ttl.sh使用
  • Navigation2专题二十八:使用Coroutines的异步Actions
  • Navigation2专题二十七:传递额外参数
  • Navigation2专题二十六:封装遗留代码

Achives
  • January 20222
  • December 202119
  • November 202113
  • October 20212
  • September 20216
  • August 202111
  • July 20211
  • June 20214
  • May 20214
  • April 20215

Friends
  • github

Copyright © Mu Wenfeng 2022
Powered by Hexo Theme by ACE