
ROS+移动机器人
文章平均质量分 96
ROS在移动机器人中的应用
知者智者
毕业于中国科学院,拥有10多年的大型国企外企工作经验,从事过IPTV系统,3G/4G/5G移动通信, 工业互联网/智能制造等行业的研发工作;主要精通Linux服务器系统端开发,架构设计;十几年的C/C++编程经验,五年Python经验,web前端略懂。目前致力于将前沿互联网技术,5G技术,人工智能应用于工业互联网、智能制造领域,助力中国工业升级换代。发表论文6篇,申请发明专利3项。
展开
-
ROS 使用GDB调试详解
介绍如何使用GDB来进行ROS C++ node的调试。包括catkin_make编译时如何开启debug选项,launch 文件中如何添加GDB调试参数,linux系统中core文件的设置以及列出了GDB常用的调试命令。原创 2020-12-14 14:11:11 · 2932 阅读 · 0 评论 -
Nvidia Nano上从头构建Jetbot镜像安装指南
JetBot 项目是NVIDIA(英伟达)基于Jetson Nano开发套件而设计的一款开源智能车项目。 它提供了基于视觉的自主避障,物体跟随,路径跟踪以及人脸识别等功能。对于AI初学者来说,Jetbot是一个很好的入门途径。Nvidia官方提供了完整的硬件和软件列表,参考https://github.com/NVIDIA-AI-IOT/jetbot/wiki, 可以自行组装jetbot小车。但是,自己采购零件还是很麻烦,国内的微雪公司提供了完整的小车方案,可以直接从https://www.wavesh原创 2020-08-26 14:22:30 · 4635 阅读 · 3 评论 -
ROS中多个工作空间同时工作
ROS开发中,有时需要建多个工作空间, 将不同的功能包区别开来. 但是,多个工作空间会存在相互影响的情况,如何让它们能同时工作且相互不影响,需要技巧. 这里需要清楚ROS工作空间的工作原理. 本文做个详细介绍.原创 2020-07-19 22:30:22 · 6224 阅读 · 15 评论 -
Cartographer ROS上的编译安装和配置
Cartographer是google推出的基于激光雷达的SLAM算法。Cartographer官方的编译安装步骤可以在https://google-cartographer-ros.readthedocs.io/en/latest/compilation.html#上查看。但是在国内由于网络的原因,这个步骤并不适用。这里介绍它在国内网络环境下的安装和配置。首先需要安装ROS,这里就不涉及,可以参考ROS的文档进行。ROS具体的版本没有影响,可以是Kinetic或者Melodic。原创 2020-07-10 17:16:10 · 2278 阅读 · 0 评论 -
LPMS-CU2 IMU在 Nvidia Xavier安装配置
LPMS-CU2 是一种小型惯性测量单元(IMU)/姿态航向参考系统(AHRS)。在ROS中使用此款IMU时,需要进行相关的安装和配置, 具体可以参考https://bitbucket.org/lpresearch/openzenros/src/master/。1 依赖编译此ROS包需要G++ version>= 7.0, cmake version >= 3.10. 如果编译器低于此版本,则需要升级到最新版本,并运行如下命令:catkin_make -DCMAKE_C_COMP.原创 2020-07-10 17:11:05 · 1027 阅读 · 0 评论 -
Nvidia Xavier(ARM64)上安装openresty
OpenResty官方提供了大多数Linux发行版的预编译的包,所以安装非常简单,可以直接参考http://openresty.org/cn/installation.html 进行安装。但是官方的二进制包只支持X86_64 和AMD64 的CPU,如果需要在ARM CPU上安装openresty就需要从源码开始安装了。这里介绍在Nvidia的Jetson Xavier 套件上安装openrety的方法, 使用的操作系统为ubuntu18.04。原创 2020-07-10 17:07:38 · 1149 阅读 · 0 评论 -
ROS Navigation源代码剖析(6)-move_base 代价地图costmap_2d工作流程
4.2.4 costmap_2d工作过程http://wiki.ros.org/costmap_2d/4.2.0节描述了MoveBase启动过程中创建和初始化global planner的costmap的过程。planner_costmap_ros_ = new costmap_2d::Costmap2DROS("global_costmap", tf_);planner_costmap_ros_->pause(); //先暂定运行costmap的动态库位于 /opt/ros/k.原创 2020-06-16 22:32:40 · 3341 阅读 · 0 评论 -
ROS Navigation源代码剖析(5)-move_base 全局规划器GlobalPlanner流程
4.2.3 GlobalPlanner工作过程MoveBase的全局规划线程通过调用配置的实际全局规划器的makePlan方法来计算全局路径规划。基类是class BaseGlobalPlanner(navigation-kinetic\nav_core\include\nav_core\ base_global_planner.h), 具体的全局规划器需要继承此基类。 例如,GlobalPlanner就继承此基类,并实现相应的方法。class GlobalPlanner : public nav_原创 2020-06-16 22:03:38 · 3776 阅读 · 1 评论 -
ROS Navigation源代码剖析(4)-move_base global planner 线程工作流程
4.2.2 global planner Thread工作过程 Global planner的处理过程定义在函数 void MoveBase::planThread()中。 工作流程如下: 1 此线程启动之后,会处理等待状态,直到action server接收到goal请求或者自己等待时间到期后把它唤醒。 两个线程之间通过runPlanner 变量进行同步,action server会把它置为true。 2 获取...原创 2020-06-13 13:41:31 · 882 阅读 · 0 评论 -
ROS Navigation源代码剖析(3)-move_base ActionServer工作流程
4.2.1 MoveBaseActionServer 工作过程MoveBaseActionServer 的执行函数为:void MoveBase::executeCb(const move_base_msgs::MoveBaseGoalConstPtr& move_base_goal);输入参数为/move_base/goal [move_base_msgs/MoveBaseActionGoal], 消息中包含了goalid一个字符串类型的变量, 和targetgoal,targe.原创 2020-06-13 13:32:19 · 3193 阅读 · 4 评论 -
再谈ROS TF中的欧拉角和四元数变换及代码验证
本文介绍了ROS中TF坐标的基本规则,欧拉角和四元数变换,并以一个实际的旋转的例子介绍ROS代码的实现。1 先复习一下几个结论:1.1 ROS的坐标系统使用右手定义对于 ROS 机器人,如果以它为坐标系的原心,那么: x轴正向:前方 y轴正向:左方 z轴正向:上方1.2 在一个绕轴线上的旋转,也使用右手定义即绕轴旋转的正方向为逆时针旋转,当我们将绕z轴旋转90度时,是绕z轴逆时针旋转90度。1...原创 2020-06-12 13:35:40 · 7140 阅读 · 4 评论 -
ROS Navigation源代码剖析(2)-move_base启动过程
4 Source code4.1 Main() functionnavigation-kinetic\move_base\src\move_base_node.cpp启动命令为: /opt/ros/kinetic/lib/move_base/move_base __name:=move_base __log=/tmp/ddd/move_bae-19.logint main(int argc, char** argv){ ros::init(argc, argv, "move...原创 2020-06-11 17:13:12 · 1668 阅读 · 1 评论 -
ROS Navigation源代码剖析(1)-move_base 线程框架
Navigation是机器人最基本的功能之一,ROS为我们提供了一整套Navigation的解决方案,包括全局与局部的路径规划、代价地图、异常行为恢复、地图服务器等等,这些开源工具包极大地方便了移动机器人导航功能的开发和部署。 ROS的导航功能是如何实现的?如果想基于ROS开发自己的导航功能包应该如何做呢?本系列文章会从源代码分析的角度深入剖析ROS Navigation功能包,来加深对ROS 导航的理解和认识。基于的ROS版本是 ROS kinetic,Globa...原创 2020-06-11 17:01:02 · 2297 阅读 · 1 评论 -
sudo rosdep init ERROR错误处理
ROS安装过程中很重要的一步是执行sudo rosdep init && rosdep update。在国内网络环境下,执行时经常会出错,如下:$ sudo rosdep initERROR: cannot download default sources list from:https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.listWebsite may be dow原创 2020-05-30 14:06:04 · 2400 阅读 · 3 评论 -
移动机器人运动规划算法概览
本文主要列出了用于移动机器人的常见的运动规划算法. 只是列出了简单的名称, 详细细节需要后面仔细学习.按类别可以分为基于搜索的路径规划,基于采样的路径规划,动力学约束下的路径规划,基于马尔可夫决策过程的运动规划。1基于搜索的路径规划SEARCH-BASED PATH FINDING基于图搜索的路径规划方法主要有Dijkstra , A*算法 和, JPS算法 (Jump Point Search)2基于采样的路径规划SAMPLING-BASED PATH FINDING常用的基于..原创 2020-05-27 23:31:28 · 3286 阅读 · 0 评论 -
位姿估计Robot_pose_efk的配置和使用
Robot_pose_efk 用于融合里程计,惯性测量单元和视觉里程计的传感器输出,从而减少测量中的总体误差。了解ROS的robot_pose_ekf软件包中扩展卡尔曼滤波器的用法:robot_pose_ekf软件包用于基于来自不同来源的(部分)位姿测量值来估计机器人的3D姿势。它使用带有6D模型(3D位置和3D方向)的扩展卡尔曼滤波器,将来自车轮里程计,IMU传感器和视觉里程计的测量结果...转载 2020-04-13 22:25:55 · 2027 阅读 · 0 评论 -
ROS使用yocs_smoother_velocity做速度平滑处理
ROS 导航模块move_base 输出的/cmd_vel topic指定了为机器人规划的线速度和角速度, 但是这个输出值还是不够友好导致机器人运动不够流畅,这就需要对这个输出速度值进行一个平滑的过程。ROS中的yocs_smoother_velocity是一个非常好的速度插值的包, 可以对速度、加速度进行限制,用来防止机器人的速度、转速变化过快或过慢, 是其运行平滑流畅. 下面做个具体介绍.原创 2020-04-10 22:51:48 · 4191 阅读 · 0 评论 -
Xsens Mti-g-710 IMU driver在Ubuntu18.04 ROS melodic中的安装使用
Ubuntu18.04下安装的ROS melodic 如何使用Xsens Mti-g-710 IMU driver? 这里给出一个详细步骤说明。这里的IMU是USB接口原创 2020-04-10 15:05:10 · 1560 阅读 · 2 评论 -
HOKUYO UST-10LX在ROS Melodic下安装使用
Ubuntu 18.04 ROS Melodic 安装使用北洋 HOKUYO UST-10LX雷达雷达的步骤说明。这个雷达是网口,USB的话,安装使用有点区别。原创 2020-04-18 20:11:29 · 1109 阅读 · 0 评论 -
如何构建基于ROS的自主建图和导航机器人
ROS已经提供了建图,导航,定位等一系列功能包,如何基于ROS构建一个移动机器人呢? ROS的官方文档已经有非常详细的说明,可以参见http://wiki.ros.org/navigation/Tutorials/RobotSetup。 但是,对于刚入门的新人,还是有一些难懂。本文将在这里做一个概要性的总结。基于具体的机器人需求,假设我们只使用激光雷达和IMU传感器,搭建一个在固定场景工...原创 2020-04-09 22:44:22 · 4230 阅读 · 0 评论 -
基于systemback的ROS系统镜像备份和安装方案
ROS系统安装配置复杂,一台机器安装完成之后,如何快速在其他机器上拷贝安装,是一个重要问题。这里给出一个基于systemback的ROS备份安装方案。此方案适用于ubuntu16和ubuntu18, 新的ubuntu版本是否适用,没有进行测试。本文是以ubuntu18为例。当然, 本方案不止用于ROS的备份安装, 适用所有Ubuntu16, Ubuntu18系统的镜像备份安装.原创 2020-04-09 19:54:46 · 1421 阅读 · 0 评论 -
ROS学习笔记(7):Navigation 导航
目录8 Navigation8.1 Navigation工作框架8.2 move_base8.3 Costmap8.4 map_server8.5 AMCL 定位8 NavigationNavigation是机器人最基本的功能之一,ROS为我们提供了一整套Navigation的解决方案,包括全局与局部的路径规划、代价地图、异常行为恢复、地图服务器等。这个功能放在Na...原创 2020-04-09 09:08:52 · 3185 阅读 · 0 评论 -
ROS学习笔记(6):ROS激光SLAM
目录7 ROS激光SLAM7.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)三部分。同步定位与...原创 2020-04-08 22:56:46 · 2262 阅读 · 4 评论 -
ROS学习笔记(5): TF(Transform)坐标转换和原理分析
目录6 TF6.1 TF/TF tree格式规范6.2 TF相关工具命令6.3 TF原理6.3.1 ROS坐标系6.3.2 坐标系分类6.3.3 setup Robot TF6 TFTF是ROS里的一个基本的也是很重要的概念, TF(TransForm),就是坐标转换.tf本质是树状的数据结构,所以我们通常称之为"tf tree", tf也可以看成是一个t...原创 2020-04-08 22:45:00 · 9002 阅读 · 0 评论 -
ROS学习笔记(4):常用工具
ROS开发时常常使用的工具有:Gazebo 一种最常用的ROS仿真工具,也是目前仿真ROS效果最好的工具 RViz 可视化工具,将接收到的信息呈现出来 Rqt 非常好用的数据流可视化工具,使用它可以直观的看到消息的通信架构和流通路径 Rosbag 对软件包进行操作的一个命令,此外还提供代码API,对包进行操作编写 Rosbridge 一个沟通ROS和外界的功...原创 2020-04-08 22:31:37 · 317 阅读 · 0 评论 -
ROS学习笔记(2):package相关命令
目录2 package相关命令2.1 rospack2.2 roscd2.3 rosls2.4 rosdep3 Metapackage2 package相关命令2.1 rospackrospack是对package管理的工具,命令的用法如下:rospack help 显示rospack的用法 rospack list 列出本机所有pa...原创 2020-04-08 22:18:58 · 2106 阅读 · 0 评论 -
ROS学习笔记(1): ROS Kinetic/Melodic安装步骤
本文介绍ROS Kinetic的安装和配置,使用ubuntu16.04. ROS Melodic的安装步骤和这个类似,只需要将kinetic 更改为melodic就可以了,当然,对应的操作系统是ubuntu18.04。原创 2020-04-08 22:16:01 · 3151 阅读 · 0 评论 -
一种Floyd算法(弗洛伊德算法)的C++实现
Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法。本文给出一种Floyd算法的C++实现。 此算法支持点和边的动态输入,并提供接口说明1 数据结构无向图的存储结构使用邻接矩阵。 每条边的权值为这条边上两点之间的距离。int** d = NULL; //二维数组,存储任意两点最短路径的权值之和int** path = NUL...原创 2020-04-08 17:00:15 · 1307 阅读 · 0 评论 -
AGV导航中的最短路径算法比较
在AGV导航中,路径选择是一个重要课题,如果最优路径使用最短路径算法,那可以使用的算法有很多,本文比较了当前流行的最短路径算法,主要有Dijkstra 算法,Floyd算法,A-star算法,Bellman-Ford 算法,SPFA算法等下表是对各种算法的一个比较: 算法 适用场景 实现难易度 时间/空间复杂度 ...原创 2020-04-08 16:51:15 · 3431 阅读 · 0 评论