ROS程序开发自学笔记
文章平均质量分 77
针对时下流行的ROS机器人开发系统,记录自己的主要学习经验,介绍一些ROS模块的使用方法,帮助入门开发者快速掌握ROS系统
爱学习的草莓熊
收集点点滴滴的知识,提升自己,帮助他人
展开
-
在gazebo中运行turtlebot机器人模拟gmapping的slam过程
近期在ROS环境下进行机器人仿真时用到了gazebo这个仿真软件,有了该软件,可以在没有实体机器人的情况下做一些算法模拟,直观的观察到机器人的运动情况,这对刚开始学习ROS和机器人程序开发的人来讲有很大帮助,本文参照一些网上教程在来仿真实现gmapping的slam过程,并总结了一些遇到的问题。仿真环境操作系统:ubuntu 16.04 ROS版本:kinetic Gazebo版本...原创 2018-03-09 22:34:12 · 22643 阅读 · 16 评论 -
使用move_base进行路径规划
本文所实现的效果来自《ROS入门实例》,对初学者会有一定帮助。move_base是ROS环境下一个重要的功能包,可以使机器人在指定框架内移动到目标位置,是实现后续导航功能的基础,很多人想学习gmapping在ROS下的使用,那么,可以先看看move_base这个包的使用方法,此处使用模拟机器人turtlebot在仿真环境下测试move_base包的功能,不需要实体机器人。1、确保catki...原创 2018-03-10 15:13:07 · 12807 阅读 · 1 评论 -
ROS环境下launch文件格式说明
XML语法提要roslaunch文件的本质是xml文件,首先要简单了解一些xml相关语法: 1、标签必须闭合<launch> </launch> //成对的标签闭合,中间可以写内容<node XXXX /> //当没有中间内容需要写时,也可使用自闭合标签,此时仍然可以为标签添加属性,XXXX内容就代表属...原创 2018-03-22 22:38:48 · 9914 阅读 · 0 评论 -
move_base为何竟然控制小车走出一个莫名其妙的矩形
问题现象:想使用move_base控制小车到达目标地点,小车非但没有去目标点,反而开始自己走矩形了!难道是小车要智能觉醒? 现象解释:查阅了官网资料,觉得这一段可以解释小车的现象,截图来自ROS-wiki:move_base页面。 也就是说,在move_base参数配置不正确的情况下,程序会认为周边存在障碍物而使得目标到不了,车会采取一些“手段”清除障碍物,首先,地图中设定的障碍物会被...原创 2018-03-24 11:26:08 · 1515 阅读 · 3 评论 -
使用move_base规划路径后,小车接近目的地后原地打转的原因分析
在实验过程中,计划使用move_base规划路径,让AGV小车到达指定的目标点,但小车“到达”目的地后不停的旋转,停不下来。对此,发现了导致这一现象的一个原因,仅供参考。 上图描述的就是这种现象,为了便于观察,rviz视图中隐藏了机器人,只保留了机器人的基座标。图中,第一次指定目标时,小车到达了指定地点并停了下来,第二次指定目标时,小车也几乎到达了指定地点但没有停下来,而是不停的在原地旋...原创 2018-04-05 22:50:01 · 10720 阅读 · 2 评论 -
pdist_scale和gdist_scale参数对move_base路径规划的影响
影响move_base路径规划的参数众多,这次单独来看看两个比较重要的参数:pdist_scale和gdist_scale基本含义(来自《ROS入门实例》): pdist_scale: 全局路径规划和到达目的位置之间的权重。这个参数比gdist_scale大时,机器人更倾向于考虑全局路径规划。 gdist_scale: 到达目的位置和全局路径规划之间的权重。这个参数比pdist_scale...原创 2018-04-06 09:30:48 · 2415 阅读 · 0 评论 -
使用moveit!控制真实机械臂(4)——了解moveit!所使用的action
action知识要点回顾:action是ROS下节点间数据通信的一种方式,这种方式本质也是基于ros消息的,之前你应该频繁的使用或ros的消息,应该能够基本掌握订阅、发布消息,此时,能够用到action表明你已经进入到ros编程的一个新阶段。action的基础内容可以先看一下ros 官网和古月的博客,可以这样简单理解:action打包了同一行为下的多个消息,使用action可以将你从繁琐的消息订阅与原创 2018-05-09 22:45:07 · 16187 阅读 · 33 评论 -
使用moveit!控制真实机械臂(0)——思路
moveit!可以实现对机械臂的轨迹控制,这里的机械臂既可以是真实的,也可以是虚拟的,在此,我们想使用moveit!规划的轨迹来控制一个真实的机械臂,真实的机械臂千差万别,这里不涉及到真实机械臂的控制驱动,只讲一讲控制思路,每一条思路今后会再写文章逐步细化。基本思路:1、首先要有一个与真实机械臂相一致的机器人模型文件。这里的一致指的是机械臂连杆参数一致,模型的细微差别不受影响。这一步也不是...原创 2018-05-09 23:02:47 · 13201 阅读 · 10 评论 -
ROS下使用mux实现多路消息切换
1、初识ROS下的mux节点MUX是单词multiplexer的简写,是数据选择器的意思。ROS下的mux节点也是这个功能,主要是实现多路消息的切换,可以比喻为消息开关。该节点属于topic_tools功能包,ROS下还有名称于此相似的 twist_mux和 cmd_vel_mux节点,他们针对特定的消息类型丰富了部分功能,但核心都是实现多路消息切换,而mux节点是针对ros下任意消息类型的(...原创 2018-05-12 10:46:42 · 2901 阅读 · 3 评论 -
使用moveit!控制真实机械臂(3)——修改moveit配置文件来控制真实机械臂(9月27日更新)
要想使用moveit来控制真实机械臂,我们需要修改配置文件夹下的几个文件,因为默认生成的moveit配置文件中,所使用的部分参数是针对虚拟机械臂的,你可以在rviz环境下观察模型额运动,但真正的控制信号并不会发出来。具体要修改以下几个地方:1、demo.launch文件中参数fake_execution的值改为false&amp;amp;lt;!--此段代码来自moveit配置文件demo.launc...原创 2018-05-13 16:08:17 · 15613 阅读 · 37 评论 -
使用moveit!控制真实机械臂(5)——编写真实机械臂节点中的action服务程序
上一篇文章中,我们简要介绍了ROS中action的基本知识,为了控制真实机械臂,我们已经修改了moveit配置文件,使得moveti启动后具备一个control_msgs::FollowJointTrajectoryAction类型的action客户端,接下来,我们完成该类型action的另一半,编写C++程序来实现action的服务端。由于底层机器人控制程序一般差别都很大,这里展示的只是编程要点...原创 2018-05-19 23:42:12 · 18516 阅读 · 51 评论