amcl原理

  amcl将激光传感器数据与从地图预估的传感器数据相比较,给出可能的位姿。如果传感器数据和某个候选位姿处的预测数据相同,amcl就会给这个位姿一个较高的概率,反之,就会降低这个概率。概率较低的位姿就会被删除,替换成与现存的较高概率位姿相接近的位姿。随着时间的推进,候选位姿就会聚集在真实位姿的周围。

导航工具包:

  首先创建一个global costmap(全局评价地图),描述了机器人在地图中的某个位置出现的“好处”有多大。电机Global Planning勾选框,展开选中Costmap选项,然后就能看到全局评价地图。

图像消息订阅:

  我们可以直接订阅image_raw话题,如果操作在WIFI等带宽等受限环境下进行,则可能需要修改image_raw/compressed话题,其中的图像在发送之前经过了压缩。计算机视觉算法还是在压缩图像上效果最好。

 image_sub = rospy.Subscriber('camera/rgb/image_raw', Image, imaghe_callback)

  使用下面的命令可以看到camera/rgb/image_raw在以每秒20Hz的频率发布

 rostopic hz camera/rgb/image_raw

  特别注意,当使用usb摄像头的时候,订阅的话题应该是   /usb_cam/image_raw

ROS中使用OpenCV:

  需要使用cv_bridge包来将ROS的sensor_msgs/Image消息转换成OpenCV格式。例如:

#!/usr/bin/env python
# coding=utf-8 import rospy
from sensor_msgs.msg import Image
import cv2, cv_bridge class Follower:
def __init__(self):
self.bridge = cv_bridge.CvBridge()
cv2.namedWindow("window", 1)
# 摄像头以每秒20HZ的频率发布消息,不需要手动发布了
# 订阅usb摄像头
# self.image_sub = rospy.Subscriber("/usb_cam/image_raw", Image, self.image_callback)
self.image_sub = rospy.Subscriber("cv_bridge_image", Image, self.image_callback)
# 订阅深度相机
# self.image_sub = rospy.Subscriber("/camera/rgb/image_raw", Image, self.image_callback)
# self.image_sub = rospy.Subscriber("/camera/depth/image_raw", Image, self.image_callback) def image_callback(self, msg):
image = self.bridge.imgmsg_to_cv2(msg, desired_encoding='bgr8')
cv2.imshow("window", image)
cv2.waitKey(3) rospy.init_node("opencv")
follower = Follower()
rospy.spin()

 可视化Rviz:

  对Rviz进行一些配置之后,退出时选择保存,这样就不用在下一次打开时重新配置一遍

ROS机器人编程实践----琐碎知识点的更多相关文章

  1. Learning ROS for Robotics Programming - Second Edition(《学习ROS机器人编程-第二版》)

    Learning ROS for Robotics Programming - Second Edition <学习ROS机器人编程-第二版> ----Your one-stop guid ...

  2. Learning ROS for Robotics Programming - Second Edition(《ROS机器人编程学习-第二版》)

    Learning ROS for Robotics Programming - Second Edition <ROS机器人编程学习-第二版> ----Your one-stop guid ...

  3. ROS机器人开发实践1->SSH远程登录要点记录

    1.有线网卡 设置 找到有线网络,点击设置,修改其中的IPv4的地址和子网掩码. 1 //地址 2 192.168.xxx.xxx 3 //子网掩码 4 255.255.255.0 点击应用 2.配置 ...

  4. ROS机器人程序设计(原书第2版)补充资料 教学大纲

    ROS机器人程序设计(原书第2版) 补充资料 教学大纲 针对该书稍后会补充教学大纲.教案.多媒体课件以及练习题等. <ROS机器人程序设计>课程简介 课程编号:XXXXXX 课程名称:RO ...

  5. ros机器人开发概述

    1.       ROS项目开发流程? 参照古月大神写的ROS探索总结系列:http://blog.exbot.net/archives/619 具体项目设计可看看<程序员>杂志的最新一篇 ...

  6. ROSCon 2016视频和幻灯片发布 ROS机器人操作系统重要参考资料

    ROSCon 2016视频和幻灯片发布 By Tully Foote on 十月19,2016 7:28 AM 全部PPT下载地址:http://pan.baidu.com/s/1gf2sn2F RO ...

  7. ROS机器人操作系统相关书籍、资料和学习路径

    作者:Top Liu链接:https://zhuanlan.zhihu.com/p/30391098来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 本文是易科机器人实验 ...

  8. Method Swizzling和AOP(面向切面编程)实践

    Method Swizzling和AOP(面向切面编程)实践 参考: http://www.cocoachina.com/ios/20150120/10959.html 上一篇介绍了 Objectiv ...

  9. JavaScript八张思维导图—编程实践

    JS基本概念 JS操作符 JS基本语句 JS数组用法 Date用法 JS字符串用法 JS编程风格 JS编程实践 不知不觉做前端已经五年多了,无论是从最初的jQuery还是现在火热的Angular,Vu ...

随机推荐

  1. Servlet 文件上传

    Servlet 可以与 HTML form 标签一起使用,来允许用户上传文件到服务器.上传的文件可以是文本文件或图像文件或任何文档. 本文使用到的文件有: 创建一个文件上传表单 下面的 HTML 代码 ...

  2. css 中 zoom和transform:scale的区别(转载)

    一.IE和Chrome等浏览器与zoom 还在几年前,zoom还只是IE浏览器自己私有的玩具,但是,现在,除了FireFox浏览器,其他,尤其Chrome和移动端浏览器已经很好支持zoom属性了: z ...

  3. RegExp正则3

    1.正则:检索字符串的一条规则. 2.正则就是由元字符和修饰符构成的 3.写在//里面的都叫元字符,与元字符两种    一种是有特殊意义,一种没有特殊意义,没有特殊意义的就是字符本身. 特殊意思的元字 ...

  4. Selenium 3----获取断言信息

    断言:把实际结果与预期进行比较. 一般可以通过获取title .URL和text等信息进行断言. title:用于获得当前页面的标题. current_url:用户获得当前页面的URL. text:获 ...

  5. day 22 二十二、面向对象导入、名称空间、类与对象

    一.面向对象导入 1.含义: ①面向过程: 重过程:解决问题,考虑的是解决问题的流程 解决问题的思路清晰,但拓展性不强 ②面向对象: 重对象:解决问题,找到解决问题的对象 解决问题的思路可能不止一条( ...

  6. luarocks 包管理工具

    安装方式:wget http://luarocks.org/releases/luarocks-2.2.2.tar.gz tar zxvf luarocks-2.2.2.tar.gz cd luaro ...

  7. mysql ON DUPLICATE KEY UPDATE 与 REPLACE INTO 的区别

    #mysql ON DUPLICATE KEY UPDATE 如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY ...

  8. laradock

    配置xdebug:http://m.php.cn/article/407434.html

  9. linux中MTDflash设备驱动大概

    一.主要结构体 1.mtd_info,主要是描述MTD原始设备层中的设备或分区, 2.mtd_part,表示一个分区,用里面的主mtd_info和本分区mtd_info描述分区, 3.mtd_part ...

  10. Spring AOP功能和目标

    1.AOP的作用 在OOP中,正是这种分散在各处且与对象核心功能无关的代码(横切代码)的存在,使得模块复用难度增加.AOP则将封装好的对象剖开,找出其中对多个对象产生影响的公共行为,并将其封装为一个可 ...