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. Linux安装nginx详细步骤

    安装依赖 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 在/usr/local/下创建一个nginx的文件夹 ...

  2. PHP算法学习(4) 随机算法

    svn地址:svn://gitee.com/zxadmin/live_z <?php /* * 随机数算法 * 伪随机数 根据分布概率 */ final class Random { /* * ...

  3. 基于hortonworks的大数据集群环境部署流水

    一.ambari及HDP安装文件下载地址: 1.系统 操作系统:CentOS7 2.软件 本次安装采用最新版本: ambari-2.7.0.0 hdp-3.0.0.0 详细信息及下载地址如下: Amb ...

  4. [Day21]异常

    1.异常-Java代码在运行时期发生的问题,在Java中,把异常信息封装成了一个类.当出现了问题时,就会创建异常类对象并抛出异常相关的信息 1.1 异常的继承体系 Throwable:它是所有错误与异 ...

  5. Kali 开启 SSH 服务方法

    尝试了开启kali的ssh,方法如下: 1.修改sshd_config文件.命令:vim /etc/ssh/sshd_config 2.将#PasswordAuthentication no的注释去掉 ...

  6. 一种JNI混淆方案

    转载自:http://www.liuling123.com/2016/06/so_method_mix.html 感谢原作者 侵删 默认情况下,使用JNI时与native对应的JNI函数名都是Java ...

  7. opencart3图片Google Merchant Center验证通过不了的解决方法

    最近在做一个opencart项目,有对接Google Merchant Center,但是一直提示产品图片验证无法通过,ytkah看了一下图片路径,/image/cache/catalog/demo/ ...

  8. xcode10对应的xcode command line tool编译的坑

    众所周知,xcode10新增的编译系统new build system会不支持一些老项目的编译,一般的做法是在Xcode编译配置Xcode->File->Project Settings/ ...

  9. ORACLE——EXTRACT() 截取日期时间的函数使用

    1.截取日期的 年: --使用方法 EXTRACT(YEAR FROM DATE) SQL> SELECT EXTRACT( YEAR FROM SYSDATE ) FROM DUAL; --结 ...

  10. 59A

    #include <stdio.h> #include <string.h> #define MAXSIZE 120 int main() { int cntlow=0; in ...