基于 ros2djs 的地图可视化

基于 ros2djs 的地图可视化

原文

https://wiki.ros.org/ros2djs/Tutorials/VisualizingAMap

译文

描述: 这篇教程向您展示了如何使用 ros2djs 可视化一幅地图

关键词: ros2djs, web interface, javascript, Robot Web Tools

教程等级: 初学者

1. 互动式标记例子

在这个教程里, 我们展示了如何在浏览器中展示一幅地图。首先,创建一个新的 HTML 文件,并且复制以下的代码例子到文件中。

1.1 HTML 代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />

<script type="text/javascript" src="http://static.robotwebtools.org/EaselJS/current/easeljs.min.js"></script>
<script type="text/javascript" src="http://static.robotwebtools.org/EventEmitter2/current/eventemitter2.min.js"></script>
<script type="text/javascript" src="http://static.robotwebtools.org/roslibjs/current/roslib.min.js"></script>
<script type="text/javascript" src="http://static.robotwebtools.org/ros2djs/current/ros2d.min.js"></script>

<script type="text/javascript" type="text/javascript">
  /**
   * Setup all visualization elements when the page is loaded.
   */
  function init() {
    // Connect to ROS.
    var ros = new ROSLIB.Ros({
      url : 'ws://localhost:9090'
    });

    // Create the main viewer.
    var viewer = new ROS2D.Viewer({
      divID : 'map',
      width : 600,
      height : 500
    });

    // Setup the map client.
    var gridClient = new ROS2D.OccupancyGridClient({
      ros : ros,
      rootObject : viewer.scene
    });
    // Scale the canvas to fit to the map
    gridClient.on('change', function(){
      viewer.scaleToDimensions(gridClient.currentGrid.width, gridClient.currentGrid.height);
    });
  }
</script>
</head>

<body onload="init()">
  <h1>Simple Map Example</h1>
  <div id="map"></div>
</body>
</html>

1.2 代码解释

现在我们有了一个例子,看看每个部分。

<script type="text/javascript" src="http://static.robotwebtools.org/EaselJS/current/easeljs.min.js"></script>
<script type="text/javascript" src="http://static.robotwebtools.org/EventEmitter2/current/eventemitter2.min.js"></script>
<script type="text/javascript" src="http://static.robotwebtools.org/roslibjs/current/roslib.min.js"></script>
<script type="text/javascript" src="http://static.robotwebtools.org/ros2djs/current/ros2d.min.js"></script>

我们首先需要导入所有需要的 JavaScript 文件。注意 Collada 加载器添加的内容。这里,我们使用 Robot Web Tools 的 CDN 。

    var ros = new ROSLIB.Ros({
      url : 'ws://localhost:9090'
    });

接着,我们需要创建一个 ROS 节点来与 rosbridge v2.0 服务器通信。在这个例子中,这个脚步将连接本地主机的默认端口9090。

    var viewer = new ROS2D.Viewer({
      divID : 'map',
      width : 600,
      height : 500
    });

我们接下来需要创建一个 2D 观察器。我们提供了这个观察器的尺寸以及放置观察器的 HTML div 。

    var gridClient = new ROS2D.OccupancyGridClient({
      ros : ros,
      rootObject : viewer.scene
    });

这段代码创建实际的 OccupancyGridClient 对象。这里我们提供 Ros 节点对象和观察器要渲染的场景。默认的,地图将从 /map 话题加载。

    gridClient.on('change', function(){
      viewer.scaleToDimensions(gridClient.currentGrid.width, gridClient.currentGrid.height);
    });

默认地,观察器用一个像素表示一米。使用ros2djs中的各种功能,可以轻松地在整个应用程序中扩展它。 这里我们使用 scaleToDimensions 函数来缩放场景以适应给定的尺寸。这将产生用地图填充画布的效果(例如放大)。

<body onload="init()">

当这个页被载入时要记住调用 init() 函数,这很重要。这会调用以上讨论的 JavaScript 代码。

<div id="map"></div>

在 HTML 内部,我们为观察器创建一个带匹配的ID 的 div 。互动式标记将被显示在这里。

1.3 运行这个例子

到这里,我们已经准备好运行这个例子了。我们需要安装 map_server、rail_maps 和 rosbridge_server 。请参阅各自的Wiki页面以获取安装说明,或者只是从Ubuntu存储库中安装其最新版本。

只需使用以下命令启动必要的节点(请注意,地图文件的位置可能有所不同):

$ roscore
$ rosrun map_server map_server /path/to/your/rail_maps/maps/ilab.pgm 0.05
$ roslaunch rosbridge_server rosbridge_websocket.launch

最后,您现在可以在网络浏览器中打开HTML页面了。 结果应该是一个类似于以下内容的页面:
在这里插入图片描述

补充说明

安装 map_server

$ sudo apt install ros-melodic-map-server

下载 rail_maps

$ git clone https://github.com/GT-RAIL/rail_maps.git 
  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
ROS3DJS是一个用于在Web浏览器中显示和交互地图的JavaScript库。它是ROS(机器人操作系统)的一部分,旨在为用户提供一个简单易用的工具,以在Web中可视化和操作机器人的地图数据。 ROS3DJS可以用于显示各种类型的地图数据,包括二维平面地图和三维点云地图。它支持各种常用地图格式,如Occupancy Grid(占用网格地图)和Octomap(八叉树地图)。通过使用ROS3DJS,用户可以将这些地图数据加载到Web页面中,并通过缩放、旋转和平移等交互方式来浏览地图。 此外,ROS3DJS还提供了一些额外的功能来增强地图可视化效果和交互性。它可以显示机器人的位姿和路径,以及其他与地图相关的信息,如传感器数据和目标点。用户可以通过点击地图上的点或使用程序化的方式来设置这些信息。 使用ROS3DJS,用户可以通过简单的JavaScript代码来创建一个地图可视化界面,并与地图进行交互。他们可以将这个界面嵌入到自己的Web应用程序中,以实时显示和修改机器人的地图数据。这对于机器人开发者和研究人员来说非常有用,因为他们可以通过Web浏览器来远程监视和控制机器人的地图生成和导航过程。 总之,ROS3DJS是一个功能强大的JavaScript库,它为用户提供了一种在Web浏览器中可视化和交互地图的简单方法。它能够显示不同类型的地图数据,并提供了丰富的交互功能和可视化选项,使用户能够更方便地理解和操纵机器人的地图信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值