用ROS开发自己的机器人
白巧克力亦唯心
知其然得知其所以然。
展开
-
ROS 教程之 network:多台计算机之间网络通信(2)
在上一篇文章中我们已经搭建好了两台计算机间通信的条件,但是每次都需要在新的终端里输入一长串export ROS_MASTER_URI之类的。实际弄起来的时候也不方便,因此在本文中,我们更进一步,简化两台计算机通信的操作。并通过两个例子,让你感受感受ROS这种分布式架构和网络通信的强大,使得你的两台计算机就像一台计算机一样处理程序。通过网络通信,所有的节点你可以运行在任意一台电脑上。原创 2014-12-22 16:52:08 · 13571 阅读 · 10 评论 -
ROS 教程之 navigation : 用 move_base 控制自己的机器人(2)
在这一篇文章中,将主要介绍如何将DSP上采集到的速度转化为Odom,让move_base可以订阅到这个信息。在wiki论坛上有一个很详细的例程是关于如何发布Odometry信息的。在这个程序里,它把转化好的Odom信息发布到了两个地方,第一个是广播了tf关系,即每次机器人移动以后,/odom坐标系和/base_linke的关系,第二个是将消息发布到odom topic上。这两个东西都将是move_base需要的。原创 2014-12-10 14:33:12 · 20337 阅读 · 24 评论 -
航迹推演(Odometry)
做机器人底层程序的时候,经常用到航迹推演(Odometry),无论是定位导航还是普通的方向控制。航迹推演中除了对机器人位姿进行估计,另一个很重要的关系是移动机器人前进速度、转向角速度与左轮速度、右轮速度之间的转换。原创 2015-07-23 15:44:40 · 42350 阅读 · 12 评论 -
ROS : 修改ROS源代码(overlaying package)
ROS官方或者其他个人提供了很多package供大家使用,但是随着学习的深入,很多人可能想去修改这些package的源代码,ROS提供了一种称之为overlaying的机制。它允许ROS原有安装的package和你修改的package共存,譬如安装ROS的时候已经安装了用于二维SLAM的gmapping包,但是你要修改源代码,而又想保存好ROS原已安装的,ROS运行的时候还要能够找到你修改的那个package,而不是使用原装的,这时候overlaying机制就派上用场了。原创 2015-05-19 14:42:31 · 18793 阅读 · 9 评论 -
ROS 教程之 vision: 摄像头标定camera calibration
在上一个文章中,我们使用usb_cam包读入并发布了图像消息,但是图像没有被标定,因此存在畸变。ROS官方提供了用于单目或者双目标定的camera_calibration包。这个包是使用opencv里的张正友标定法,所以如果你有使用opencv标定的经验,可以直接标定,而不使用官方的程序。 官方也给出了单目的标定教程和双目视觉的标定教程。本教程基于usb_cam package 读取图像,然后使用官方例程进行标定。原创 2015-06-02 21:25:27 · 53080 阅读 · 25 评论 -
ROS 基础: 在同一个节点里订阅和发布消息
在一些应用中,可能有的人需要在同一个节点中实现订阅一个消息,然后在该消息的回调函数中处理一下这些数据后再发布到另一个topic上。原创 2015-05-07 21:52:38 · 23159 阅读 · 9 评论 -
ROS:定制自己的消息类型msg
在实际应用中,我们可能想发布自己的消息类型,就像众所周知的Twist类型或者航向信息Ometroy一样,那么到底如何定制自己想要的消息类型?本文楼主以自己调试过程中监控机器人左右轮速度来进行演示。 文章内容包括:消息的定制和使用,以及使用rqt_plot来绘制曲线。原创 2014-12-10 11:23:53 · 15393 阅读 · 7 评论 -
ROS: global_planner 整体解析
在目前的ROS版本中,机器人全局路径规划使用的是navfn包,这在move_base的默认参数中可以找到base_global_planner (string, default: "navfn/NavfnROS")。而在navigation的源代码中还有一个global_planner的包,该包的源文件夹(navigation-hydro-devel\global_planner\src )下已经有了A*,Dijkstra等算法的实现。可是navfn的源程序中也有这两个算法的实现,貌似根本就没用到globa原创 2015-04-13 21:57:28 · 29303 阅读 · 13 评论 -
机器人局部避障的动态窗口法(dynamic window approach)
机器人局部路径规划方法有很多,ROS中主要采用的是动态窗口法(但是和原论文中的dwa方法不一样,具体见最后)。动态窗口法主要是在速度(v,w)空间中采样多组速度,并模拟机器人在这些速度下一定时间(sim_period)内的轨迹。在得到多组轨迹以后,对这些轨迹进行评价,选取最优轨迹所对应的速度来驱动机器人运动。该算法突出点在于动态窗口这个名词,它的含义是依据移动机器人的加减速性能限定速度采样空间在一个可行的动态范围内。原创 2015-04-10 19:23:54 · 117445 阅读 · 64 评论 -
ROS 教程之navigation: 用程序设定导航目标点
在做导航的过程中,目的地都是通过RViz界面手动设置的,很麻烦。那么能否通过程序设置目标点,让机器人自动在几个目标点之间来回循环呢?答案是肯定的,《Ros by Example volumn1》8.5.3节中也给出了答案。但是,本文给出一个更简单的例子,在机器人前方1m处设定目标点,文章内容几乎来自ROS navigation 官方wiki文档。 在进行下面的试验之前,希望你已经在自己的机器人上完成了使用move_base进行控制的任务。原创 2015-03-18 11:26:43 · 34172 阅读 · 23 评论 -
ROS 教程之 vision : 用各种摄像头获取图像
可能有很多人想在ROS下学习视觉,先用摄像头获取图像,再用opencv做相应算法处理,可是ROS下图像的采集可不像平常的read一下那么简单,需要借助外部package的使用。而摄像头即可以用笔记本自带的摄像头,也可以用外部的kinect,当然还可以是外部接入的usb接口的摄像头。前两者照着《ROS by Example 1》的 第10章来学习,安装一下相应的package很容易上手。但是Lz在用ROS操作外部接入的摄像头时遇到了一些问题,用书中的uvc_cam package读入不了图像,Lz采用的镜头是原创 2014-12-27 18:46:50 · 46480 阅读 · 16 评论 -
ROS 教程之 navigation :在 catkin 环境下创建costmap layer plugin
在做机器人导航的时候,肯定见到过global_costmap和local_costmap。global_costmap是为了全局路径规划服务的,如从这个房间到那个房间该怎么走。local_costmap是为局部路径规划服务的,如机器人局部有没有遇到行人之类的障碍。costmap就是栅格图,每个栅格里存放着障碍物信息。但是hydro里的costmap不是单独一个栅格图,而是将一个栅格图分成了很多层,原创 2014-12-29 21:34:20 · 27199 阅读 · 37 评论 -
ROS :为IDE配置环境变量
ROS hydro 自带安装好了opencv 2.4 为了在自己经常使用的开发环境Eric下调用,需要配置Eric的环境变量,好让它可以调用ROS的资源。1. 在 /usr/share/applications/ 文件夹下找到 eric的 桌面快键方式文件eric.desktop , 可能一开始你不确定这个文件名,可以使用下面命令进行查找: cd /usr/share/applic原创 2015-01-07 09:42:38 · 3577 阅读 · 0 评论 -
ROS 教程之 network:多台计算机之间网络通信(1)
LZ在实验室环境下要实现一台台式主机和移动机器人上的笔记本通信。台式机作为主机,用rviz监控和无线操作移动机器人,笔记本上通过ROS实现移动机器人的自主定位和路径规划等程序。主机上用的虚拟机装的ubuntu 12.04,通过有线连接一个无线路由,而笔记本端是通过这个路由的wifi上网,台式机和笔记本是在同一个路由下。原创 2014-12-22 11:33:02 · 39586 阅读 · 20 评论 -
ROS 教程之 navigation : 用 move_base 控制自己的机器人(1)
前言: 相信大家在用《ROS by example》学习ROS的过程中,基本上都是使用书本中的例程,在终端输入几行别人已经写好的代码,看看仿真效果。可是这样一来,笔者在跟着书本初略过了一遍后,却还是不知道如何通过ROS去具体操作实实在在的机器人,譬如想做导航和定位,自己的机器人该如何跟ROS这个框架结合起来,网上这方面中文教程很少,同时,英文教程里关于navigation有一个很系统的教原创 2014-12-10 14:49:48 · 62004 阅读 · 40 评论