• 多分辨率候选解-cartographer

    之前是生成了多分辨率地图,下面介绍如何利用多分辨率地图来进行匹配 在计算子图间约束的过程中,会通过匹配来获取约束 上次总览:计算子图间,节点和非本子图的约束,分为局部约束和全局约束, 局部约束控制在15米以内的约束添加,通过函数ConstraintB...
  • 如何写recovery插件-navigation

    写一个recovery插件recovery插件是有recovery server管理的,不像planner和controller,每一个recovery是负责他自己的一个action,planner和controller有相同的API,因为他们完成的...
  • 多分辨率地图生成-cartographer

    本文讲解如何生成多分辨率地图 函数调用处位于ConstraintBuilder2D::DispatchScanMatcherConstruction函数中 12345678// 生成一个将初始化匹配器的任务, 初始化时会计算多分辨率地图, 比较耗时...
  • 写一个Controller插件-navigation2

    在本教程中,我们将会使用 PurePursuitController::configure, PurePursuitController::setPlan 和 PurePursuitController::computeVelocityCommand...
  • 写一个行为树插件-navigation2

    创建一个新插件我们将创建一个简单的 BT 插件节点,使他在另一台服务器中执行操作。 对于本示例,我们将分析 nav2_behavior_tree 包中最简单的行为树操作节点,即wait节点。 除了这个动作 BT 节点示例之外,您还可以创建自定义装饰器...
  • 子图间约束-cartographer

    之前说到ComputeConstraintsForNode,完成了初始化全局submap的位姿,和子图间内约束。 ComputeConstraintsForNode在文件WorkItem::Result PoseGraph2D::ComputeCon...
  • 写一个planner插件-navigation2

    源https://navigation.ros.org/plugin_tutorials/docs/writing_new_nav2planner_plugin.html 创建一个新的Planner插件该教程会指导我们如何制作一个走直线的plann...
  • 子图间约束-cartographer

    添加子图约束的函数,是放入线程池计算的其中一个,于函数PoseGraph2D::AddNode中 12345// 把计算约束的工作放入workitem中等待执行AddWorkItem([=]() LOCKS_EXCLUDED(mutex_) ...
  • 启动tb3_simulation.launch.py-navigation

    启动tb3_simulation 的时候,gazebo会卡顿,原因是找不到world,设置model的目录即可 123export GAZEBO_MODEL_PATH=/opt/ros/foxy/sh...
  • 线程池与任务调度-cartographer

    线程池一共有两个类组成,两者的联系于PoseGraph2D::AddWorkItem函数中,初始化双端队列,workqueue的过程中 12345678if (work_queue_ == nullptr) { // work_queue...