前言:ROS机器人有时候会遇到极端的情况:比如地面打滑严重,IMU精度差,导致积累误差严重,或是amcl匹配错误,导致机器人定位失败,

这时候如何矫正机器人位置变得非常重要,我的思路是利用相机或是在地埋rfid的辅助定位方法。

一、首先是设置机器人初始位置。

主要是发布initalpose这个主题,废话少说直接上代码:

rospy.init_node('test_initalpose', anonymous=False)

    rospy.loginfo("start test inital pose...")

    self.setpose_pub = rospy.Publisher("initialpose",PoseWithCovarianceStamped,latch=True, queue_size=1)

    #self.setpose_pub = rospy.Publisher("initialpose", PoseWithCovarianceStamped,queue_size=10)

    self.set_pose = {'x':-4.68,'y':-4.63,'a':1.0}
self.test_set_pose_flag = True
self.test_set_pose_cnt = 3 while self.test_set_pose_flag == True: self.set_inital_pose()
self.test_set_pose_cnt -= 1
if self.test_set_pose_cnt == 0:
self.test_set_pose_flag = False
rospy.sleep(1) def set_inital_pose(self):
# Define a set inital pose publisher.
rospy.loginfo("start set pose...")
p = PoseWithCovarianceStamped()
p.header.stamp = rospy.Time.now()
p.header.frame_id = "map"
p.pose.pose.position.x = self.set_pose['x']
p.pose.pose.position.y = self.set_pose['y']
p.pose.pose.position.z = self.set_pose['a']
(p.pose.pose.orientation.x,
p.pose.pose.orientation.y,
p.pose.pose.orientation.z,
p.pose.pose.orientation.w) = tf.transformations.quaternion_from_euler(0, 0, self.set_pose['a'])
p.pose.covariance[6 * 0 + 0] = 0.5 * 0.5
p.pose.covariance[6 * 1 + 1] = 0.5 * 0.5
p.pose.covariance[6 * 3 + 3] = math.pi / 12.0 * math.pi / 12.0 self.setpose_pub.publish(p) 更改self.set_pose的坐标值,如此就可以随意设置机器人坐标了。
有一个比较诡异的事情是,我如果只是发布一次主题,并不能生效,一定需要重复发几次才行,然道ROS会丢失第一次的数据?不明白。因为这个问题困扰了我2天,有知道的朋友请告知,谢谢!

如何用代码设置机器人初始坐标实现 2D Pose Estimate功能的更多相关文章

  1. Select2实现的带搜索的省市区三级联动代码 设置默认初始值

    $(function() { $('#loc_province').select2('val','2456'); $('#loc_province').change(); $('#loc_city') ...

  2. 一行代码设置TForm颜色的前世今生(属性赋值引起函数调用,然后发消息实现改变显示效果),TForm的初始颜色在dfm中设置了clBtnFace色

    来自万一的帖子:http://www.cnblogs.com/del/archive/2008/04/27/1173658.html的确做到了一行代码设置TForm控件的颜色(一点感想:Delphi程 ...

  3. C#窗体越界时鼠标还能回到初始坐标位置

    对窗体加越界限制后,鼠标拖动窗体越界时,窗体不能动,鼠标位置可动,但窗体不再越界时,鼠标位置还能回到鼠标按下时相对窗体的坐标:1.首先创建一个窗体Form1,然后在窗体上拖一个button1按钮(主要 ...

  4. Android | 教你如何用代码一键实现银行卡绑定

    前言   小编前面几期文章分别给大家介绍了用代码实现微笑抓拍.证件照DIY.拍照翻译的功能开发(链接见文章末尾),本次小编给大家带来的是用代码一键实现银行卡识别与绑定功能. 银行卡识别的应用场景    ...

  5. dotnet 将自动代码格式化机器人带入团队 GitLab 平台

    给团队带入一个 代码格式化机器人 能提升团队的幸福度,让团队的成员安心写代码,不用关注代码格式化问题,将格式代码这个粗活交给机器人去做.同时也能减少在代码审查里撕格式化问题的时间,让更多的时间投入到更 ...

  6. android 后台代码设置动画

    1.设置旋转动画 final RotateAnimation animation =new RotateAnimation(0f,360f,Animation.RELATIVE_TO_SELF, 0. ...

  7. 通过代码设置button中文字的对齐方式

    // button.titleLabel.textAlignment = NSTextAlignmentLeft; 这句无效 button.contentHorizontalAlignment = U ...

  8. cxf客户端代码设置设置访问用户名、密码、证书域名不匹配认证通过

    最近和第三方联调,需要调用对方的wsdl,但是调用必须的设置用户名.密码验证.在soapUI里面设置用户名.密码调用通过.但是怎么转换成JAVA代码呢,搜索了好多解决方案,现将代码截图如下: 1.SO ...

  9. 代码设置layout_weight attribute

    代码设置 LinearLayout权重比例之小结: 如果在LinearLayout添加子View,那么只有一个View的时候设置所占的比例一定要设置LinearLayout总weightsum.不然会 ...

随机推荐

  1. WPF ListView ,XML

    <?xml version="1.0" encoding="utf-8" ?><PersonList> <Person Id=&q ...

  2. 使用WebApi和Asp.Net Core Identity 认证 Blazor WebAssembly(Blazor客户端应用)

    原文:https://chrissainty.com/securing-your-blazor-apps-authentication-with-clientside-blazor-using-web ...

  3. pycharm工具设置py模板

    直接上截图把,更加明确清晰 (a)shebang行 #!/usr/bin/python3 (b)预定义的变量要扩展为格式为$ {<variable_name>}的相应值. 可用的预定义文件 ...

  4. EntityUtils.toString(entity)处理字符集问题解决

    爬取51Job和猎聘网的信息,想处理字符集问题(51job为gbk,猎聘为utf-8), 找到两个网站字符集信息都在同一标签下 就想先把网页保存成String,解析一遍获取字符集,然后将网页转换成对应 ...

  5. python 父类方法中使用不同的子类中的不同类对象

    # coding:utf-8 class Animal(object): def __init__(self): self._name = None self._f = None def eat(se ...

  6. Python游戏开发——打砖块

    打砖块游戏向来大家也不会很陌生,今天来用python来开发一下这个小游戏 1.引用对应数据库 import pygame from pygame.locals import * import sys, ...

  7. IEDA创建Springboot项目

    随着技术的更新对于开发速度的追求,我们越来越不能忍受的是Spring框架对于集成开发以后大量的配置问题.所以SprigBoot应运而生,SpringBoot框架其实就是在Spring框架的外边包裹上了 ...

  8. cocos2dx3.x + xcode7.3 问题“libpng error: CgBI: unhandled critical chunk”

    今天用 cocos2dx3.11.1 + xcode7.3.1 进行开发,新建项目后遇到如下问题: 在iphone(ios9.3.5)真机运行项目(用xcode自带虚拟机没有出现问题) auto sp ...

  9. 第18.2节_地址类型与LL层设备过滤

    一.地址类型 二.白名单和Resolving List 三.LL层设备过滤 一.地址类型 学习资料:官方手册 Vol 6: Core System Package [Low Energy Contro ...

  10. HTTP 2.0 之压测工具 Jmeter

    年后,德国总部工业平台要做中国本地化,德国的同事过来给我们展示日志的时候,无意间看到了他们应用日志里的 HTTP/2,下意识到,原来他们都已经提供Http 2.0的服务了. 那么问题来了,除了h2lo ...