一种Floyd算法(弗洛伊德算法)的C++实现 Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法。 本文给出一种Floyd算法的C++实现。 此算法支持点和边的动态输入,并提供接口说明 1 数据结构 无向图的存储结构使用邻接矩阵。每条边的权值为这条边上两点之间的距离。 int** d = NULL; //二维数组,存储任意两点最短路径的权值
如何构建基于ROS的自主建图和导航机器人 ROS已经提供了建图,导航,定位等一系列功能包,如何基于ROS构建一个移动机器人呢? ROS的官方文档已经有非常详细的说明,可以参见 http://wiki.ros.org/navigation/Tutorials/RobotSetup。 但是,对于刚入门的新人,还是有一些难懂。 本文将在这里做一个概要性的总结。 基于具体的机器人需求,假设我们只使用
目录 6 TF 6.1 TF/TF tree格式规范 6.2 TF相关工具命令 6.3 TF原理 6.3.1 ROS坐标系 6.3.2 坐标系分类 6.3.3 setup Robot TF 6 TF TF是ROS里的一个基本的也是很重要的概念, TF(TransForm),就是坐标转换. tf本质是树状的数据结构,所以我们通常称之为"tf tree", tf也可以看成是一
ROS开发时常常使用的工具有: Gazebo 一种最常用的ROS仿真工具,也是目前仿真ROS效果最好的工具 RViz 可视化工具,将接收到的信息呈现出来 Rqt 非常好用的数据流可视化工具,使用它可以直观的看到消息的通信架构和流通路径 Rosbag 对软件包进行操作的一个命令,此外还提供代码API,对包进行操作编写 Rosbridge 一个沟通ROS和外界
目录 7 ROS激光SLAM 7.1 Map(地图) 7.2 常用的激光SLAM算法比较 7.2.1 Gmapping SLAM计算图 7.2.2 Karto SLAM计算图 7.2.3 Hector SLAM计算图 7 ROS激光SLAM 机器人导航的主要问题可以分为建图(Mapping)、定位(Localization)和路径规划(Path Planning)三部分。同步定
目录 8 Navigation 8.1 Navigation工作框架 8.2 move_base 8.3 Costmap 8.4 map_server 8.5 AMCL 定位 8 Navigation Navigation是机器人最基本的功能之一,ROS为我们提供了一整套Navigation的解决方案,包括全局与局部的路径规划、代价地图、异常行为恢复、地图服务器等。这个功能放在
目录 1 Systemback 安装 1.1 Ubuntu16及older version 1.2 ubuntu18系统 2 使用systemback备份系统并制作USB安装盘 2.1 启动systemback 2.2 创建备份系统 2.3写入USB 优盘 3 利用制作的安装盘装新机器 3.1 BIOS配置优盘启动 3.2 磁盘分区 4 Reference: ROS系统安装
AGV导航中的最短路径算法比较 在AGV导航中,路径选择是一个重要课题,如果最优路径使用最短路径算法,那可以使用的算法有很多,本文比较了当前流行的最短路径算法,主要有Dijkstra 算法,Floyd算法,A-star算法,Bellman-Ford 算法,SPFA算法等 下表是对各种算法的一个比较: 算法 适用场景 实现难易度 时间/空间复杂度 负权边问题
ROS学习笔记(1): ROS Kinetic/Melodic安装步骤 本文介绍ROS Kinetic的安装和配置,使用ubuntu16.04. ROS Melodic的安装步骤和这个类似,只需要将kinetic 更改为melodic就可以了,当然,对应的操作系统是ubuntu18.04。 1 ubuntu配置 首先将ubuntu的源更改为国内源,例如中科大的源。 在正式的安装ROS前,先
ROS Navigation源代码剖析(4)-move_base global planner 线程工作流程 4.2.2 global planner Thread工作过程 Global planner的处理过程定义在函数 void MoveBase::planThread()中。 工作流程如下: 1 此线程启动之后,会处理等待状态,直到action server接收到goal请求或者自己
ROS Navigation源代码剖析(2)-move_base启动过程 4 Source code 4.1 Main() function navigation-kinetic\move_base\src\move_base_node.cpp 启动命令为: /opt/ros/kinetic/lib/move_base/move_base name:=move_base log=/tmp/
ROS Navigation源代码剖析(3)-move_base ActionServer工作流程 4.2.1 MoveBaseActionServer 工作过程 4.2.1.0完整流程 MoveBaseActionServer 的执行函数为: void MoveBase::executeCb(const move_base_msgs::MoveBaseGoalConstPtr&
ROS Navigation源代码剖析(1)-move_base 线程框架 Navigation是机器人最基本的功能之一,ROS为我们提供了一整套Navigation的解决方案,包括全局与局部的路径规划、代价地图、异常行为恢复、地图服务器等等,这些开源工具包极大地方便了移动机器人导航功能的开发和部署。 ROS的导航功能是如何实现的?如果想基于ROS开发自己的导航功能包应该如何做呢?
本文介绍了ROS中TF坐标的基本规则,欧拉角和四元数变换,并以一个实际的旋转的例子介绍ROS代码的实现。 1 先复习一下几个结论: 1.1 ROS的坐标系统使用右手定义 对于 ROS 机器人,如果以它为坐标系的原心,那么: x轴正向:前方 y轴正向:左方 z轴正向:上方 1.2 在一个绕轴线上的旋转,也使用右手
ROS 导航模块move_base 输出的/cmd_vel topic指定了为机器人规划的线速度和角速度, 但是这个输出值还是不够友好导致机器人运动不够流畅,这就需要对这个输出速度值进行一个平滑的过程。ROS中的yocs_smoother_velocity是一个非常好的速度插值的包, 可以对速度、加速度进行限制,用来防止机器人的速度、转速变化过快或过慢, 是其运行平滑流畅. 下面做个具体介绍.
本文主要列出了用于移动机器人的常见的运动规划算法. 只是列出了简单的名称, 详细细节需要后面仔细学习. 按类别可以分为基于搜索的路径规划, 基于采样的路径规划,动力学约束下的路径规划,基于马尔可夫决策过程的运动规划。 1基于搜索的路径规划SEARCH-BASED PATH FINDING 基于图搜索的路径规划方法主要有Dijkstra , A*算法 和, JPS算法 (Jump Poi
介绍如何使用GDB来进行ROS C++ node的调试。包括catkin_make编译时如何开启debug选项,launch 文件中如何添加GDB调试参数,linux系统中core文件的设置以及列出了GDB常用的调试命令。 1编译开启debug选项 使用Debug调试,首先需要在程序编译时 加上debug选项,让cmake以debug模式编译,否则不会有gdb调试信息,无法查看源代码和设置断点
ROS开发中,有时需要建多个工作空间, 将不同的功能包区别开来. 但是,多个工作空间会存在相互影响的情况,如何让它们能同时工作且相互不影响,需要技巧. 这里需要清楚ROS工作空间的工作原理. 本文做个详细介绍. 1 ROS_PACKAGE_PATH环境变量 ROS在查找包时,使用的是ROS_PACKAGE_PATH环境变量. 此环境变量下的路径是ROS查找包的所有路径,如果一个工作空间的
目录 1. 烧录Jetson Nano镜像 2 设置i2c permissions 3 安装pip3和python依赖 4 安装TensorFlow 4.1 安装依赖 4.2 确定需要的TensorFlow版本 4.2.1 查看jetpack 版本 4.2.2 查看jetpack与tensorflow的对应关系 4.3 下载TensorFlow 4.4 安装TensorFlow
积分
粉丝
勋章
TA还没有专栏噢
第三方账号登入
看不清?点击更换
第三方账号登入
QQ 微博 微信