[ WARN] [1555379888.006898613]: Timed out waiting for transform from base_footprint to map to become

[ WARN] [1555379888.006898613]: Timed out waiting for transform from base_footprint to map to become available before running costmap, tf error: Lookup would require extrapolation into the past.  Requested time 1555379883.350785017 but the earliest data is at time 1555379884.917741476, when looking up transform from frame [base_footprint] to frame [map]. canTransform returned after 0.100909 timeout was 0.1.

(1)tf树从odom到base_footprint断开了,

tf_tree为:

map->odom->base_footprint。其中odom->base_footprint理解为激光模拟的里程计信息,map->odom理解为对里程计数据的补偿,如消除累积误差等。在应用中推荐把provide_odom_frame参数置为false。当该参数为true时,其发布的数据为map->odom的tf,而非机器人的位姿。当将provide_odom_frame参数置为false时,可以获得map->base_footprint的tf数据,即机器人相对于map的位姿。

可能的原因:

1. 雷达信息不正确,所以导致出现这种错误,单独测试雷达数据,查看topic是否正确。

2.USB端口供电不足(很少的原因,可以换台电脑测一下)

3.tf转换延迟

都快崩溃了。。。好几天了,各种找原因,但是就是找不到,tf树是正确的,但是还是出现

[ WARN] [1555750949.404152447]: Costmap2DROS transform timeout. Current time: 1555750949.4041, global_pose stamp: 1555750945.3406, tolerance: 1.0000
[ WARN] [1555750949.404252245]: Could not get robot pose, cancelling reconfiguration

修改global和local_costmap_params.yaml中的transform_tolerance(坐标系间的转换可以忍受的最大延时),我的最初默认为1,我依次增加到8的时候不出现错误了,但8的话已经没有任何意义了。

所以我出错的原因是因为坐标转化延时太大了,导致机器人在地图上到处跳。

原因:

特别简单的原因。。。driver的启动文件中有超声波的请求命令,阻塞了编码器的获取。。。在driver.py中打印出编码器的数值就可以看出,编码器的数据不是一直获取的,而是获取了一次,就等待几秒继续获取,原因就是因为超声波没有响应(因为我的机器人暂时没有加超声波)

注释掉超声波的请求信号,就可以了

 

这个问题解决了,但是出现新的问题,机器人位置在rviz中抖动

解决方法:

注释掉launch中

<node pkg="tf" type="static_transform_publisher" name="map_to_odom" args="0.0 0.0 0.0 0 0 0.0 /map /odom 1000"/>

4.编码器没有传过来数值,检查编码器和32板有没有问题.

5.launch中加上这个试试,将map和odom连起来,可以试一试,但是可能会出现上面3中的机器人位置抖动

<node pkg="tf" type="static_transform_publisher" name="map_to_odom" args="0.0 0.0 0.0 0 0 0.0 /map /odom 1000"/>

(2)tf从odom到map断开

没有显示laser_frame,此时需要单独启动雷达,看看是否存在base_footprintf->laser_frame的tf树。

如果不存在,则修改为:

<launch>
  <node name="rplidarNode"          pkg="rplidar_ros"  type="rplidarNode" output="screen">
    <param name="port"         type="string" value="/dev/ttyUSB1"/>
    <param name="baudrate"     type="int"    value="115200"/>
    <param name="frame_id"     type="string" value="laser_frame"/>
    <param name="angle_fixed"  type="bool"   value="true"/>
    <param name="angle_min"    type="double" value="-80" />
    <param name="angle_max"    type="double" value="80" />
    <param name="ignore_array" type="string" value="" />
  </node>
  <node pkg="tf" type="static_transform_publisher" name="laser_frame_to_base_footprint"
    args="0.15 0.0 0.08 0.0 0.0 0.0 /base_footprint /laser_frame 40" />
</launch>

确保在启动navgation前,tf树是完整的(除了没有map),包括laser_frame、base_footprintf等。

  • 17
    点赞
  • 124
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值