在ROS下,通过创建range_layer,在costmap中加入超声波传感器

预备:

在ros中, 我们可以将自定义层加入到costmap当中,以此来辅助机器人进行避障, 

目前主要的层, 包括static_map静态地图层, obstacles障碍物层, inflation 膨胀层,其他层: 比如自创建range_layer来加入测距传感器。

在使用中, 先通过plugin在配置中加入一个新的传感器数据层, 比如foo_layer,  

然后,通过foo_layer:  configuration_param来配置层的参数,如话题,角度等等,这取决于foo_layer的代码设计。

代码实现参考 :

ros中应用插件库: http://wiki.ros.org/pluginlib, 

costmap开发教程: http://wiki.ros.org/costmap_2d/Tutorials, 

在ros中创建一个新的层: http://wiki.ros.org/costmap_2d/Tutorials/Creating%20a%20New%20Layer

正文:

首先,先发布 超声波传感器的数据话题。 

以大家常用的python为例, 注意设置传感器所在的坐标系。

rospy.loginfo("r0: " + str(r0)+"r1: " + str(r1)+"r2: " + str(r2)+"r3: " + str(r3)+"r4: " + str(r4))
                    #rospy.loginfo("r0: " + str(r0) + "r3: " + str(r3))
                    sonar0_range=Range()
                    sonar0_range.header.stamp=now
                    sonar0_range.header.frame_id="/sonar0"
                    sonar0_range.radiation_type=Range.ULTRASOUND
                    sonar0_range.min_range=0.05
                    sonar0_range.max_range=4.0
                    sonar0_range.range=r0/100.0
                    self.sonar0_pub.publish(sonar0_range)

发布sonar0 超声波话题,并设置 radiation_type参数。 

然后,创建range_layer ,想了解具体过程 可以参考 官网的链接,

http://wiki.ros.org/range_sensor_layer

下载附件代码, https://pan.baidu.com/s/1i53UCj7 链接: 密码: bqmk 放到ros工作区间下,进行编译 catkin_make .  

在终端输入rospack plugins --attrib=plugin costmap_2d

如果产生一个 range_layer 说明 该插件 生成成功。

最后, 在导航包的配置文件中,添加层的配置参数以及层下的超声波的配置参数。

1)nav/config/odom/costmap_common_params.yaml
增加
sonar_layer:
  enabled:            true
  clear_threshold:    0.46
  mark_threshold:     0.98
  topics: ["/sonar0", "/sonar1", "/sonar2", "/sonar3", "/sonar4"]   订阅超声波主题,添加到sonar_layer到 costmap中
  clear_on_max_reading: true

2)nav/config/odom/local_costmap_params.yaml中的
plugins:
    - {name: static_layer,        type: "costmap_2d::StaticLayer"}
    - {name: obstacle_layer,      type: "costmap_2d::ObstacleLayer"}
下面增加
    - {name: sonar_layer,         type: "range_sensor_layer::RangeSensorLayer"}  //加入到局部导航的配置文件
最终效果图如下:  紫色的圆锥图形为添加上的超生波传感器模型。

 

 
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值