当前位置: 首页 > news >正文

门户网站如何制作做网站 智域大连

门户网站如何制作,做网站 智域大连,响应式网站开发方案,网络工程考研方向文章目录 0 引言1 常规定义1.1 单层grid map1.2 多层grid map1.3 迭代器类别1.4 移动grid map的位置 2 功能包2.1 grid_map_rviz_plugin2.2 grid_map_sdf2.3 grid_map_visualization2.3.1 订阅的主题2.3.2 发布的主题 2.4 grid_map_filters 0 引言 grid map学习笔记1已成功在U… 文章目录 0 引言1 常规定义1.1 单层grid map1.2 多层grid map1.3 迭代器类别1.4 移动grid map的位置 2 功能包2.1 grid_map_rviz_plugin2.2 grid_map_sdf2.3 grid_map_visualization2.3.1 订阅的主题2.3.2 发布的主题 2.4 grid_map_filters 0 引言 grid map学习笔记1已成功在Ubuntu18.04系统上源码编译grid map并且用各个子工程的示例演示本文主要目的是熟悉grid map的一些常规定义比如grid map的多层定义中心坐标系定义栅格单元定义迭代器的类型定义等当然也有一些grid map封装好的packges比如支持的可视化数据类型点云向量占据栅格等支持的各种栅格地图过滤器等。 grid map githubhttps://github.com/ANYbotics/grid_map 本文系统环境 Ubuntu18.04ROS-melodicgrid map 1 常规定义 1.1 单层grid map 单层grid map是指一个平面地图在这个地图上将整个空间分割成一个个大小相等的方格每个方格称为一个网格grid。每个网格都可以用一个值来表示其在地图上的属性例如障碍物、自由空间、未知区域等。这些属性值通常用颜色来表示比如灰色代表障碍物白色代表自由空间黑色代表未知区域等。 单层grid map通常用于机器人地图构建和路径规划中机器人通过传感器获取周围环境信息然后根据这些信息更新地图上各个网格的属性值。机器人在规划路径时可以使用单层grid map来表示环境根据不同网格的属性值计算出可行的路径从而避开障碍物并尽可能地避免未知区域。 单层grid map相对于其他类型的地图具有简单、易于实现、易于存储和处理等优点。但它也存在一些限制例如无法表示多层信息、无法表达细节等。 单层grid map的中心默认在栅格地图的中心栅格地图的坐标系定义遵从右手法则x朝前y朝左z朝上每张grid map地图从左上角开始编号依次是(0,0)、(0,1)...(n,m) 一些常用的函数定义 getMapSize()该函数用于获取地图的大小。输出为地图的宽度和高度通常以网格数来表示。在机器人地图构建和路径规划中通常需要获取地图的大小以便进行合理的路径规划和地图构建。getPosition(grid_x, grid_y)该函数用于将网格坐标转化为世界坐标。输入参数为网格坐标(grid_x, grid_y)输出为该网格的世界坐标。在机器人地图构建和路径规划中通常需要将机器人在地图上的位置转化为世界坐标以便更好地进行路径规划和控制。getGridIndex(pos_x, pos_y)该函数用于将世界坐标转化为网格坐标。输入参数为世界坐标(pos_x, pos_y)输出为该坐标所在网格的网格坐标。在机器人地图构建和路径规划中通常需要将传感器获取到的障碍物位置转化为网格坐标以便更新地图上各个网格的属性值。getResolution()该函数用于获取网格地图的分辨率即每个网格代表的实际距离。输出为一个实数值单位为米/格。在机器人路径规划中通常需要利用网格地图的分辨率计算机器人的运动距离和速度等参数。getSize()该函数用于获取网格地图的大小即网格地图的宽度和高度以网格数为单位。输出为一个整数对格式为(width, height)。在机器人路径规划和地图构建中通常需要获取网格地图的大小以便进行合理的路径规划和地图构建。getLength()该函数用于获取网格地图的尺寸即网格地图的总网格数。输出为一个整数值表示网格地图中网格的总数。在机器人路径规划和地图构建中通常需要获取网格地图的尺寸以便进行合理的路径规划和地图构建。getIndex(x, y)该函数用于将网格地图中的坐标转化为网格地图中的索引。输入参数为坐标(x, y)输出为该坐标在网格地图中的索引。在机器人路径规划中通常需要将世界坐标转化为网格地图中的索引以便进行路径规划。 1.2 多层grid map 多层grid map是指在单层grid map的基础上增加了多个层次的信息表示。每个层次的信息表示可以包括不同的地图属性例如高度、颜色、温度等。每个网格在多层grid map中可以包含多个属性值每个属性值对应一个层次。 多层grid map常用于机器人导航和环境建模中它可以同时表示不同层次的信息例如机器人所处的高度、周围环境的颜色、温度和湿度等从而更准确地表示环境信息增强机器人的感知能力和路径规划能力。 在多层grid map中常用的函数包括 setGridValue(layer, grid_x, grid_y, value)该函数用于设置指定层次和指定网格的属性值。输入参数为层次(layer)、网格坐标(grid_x, grid_y)和属性值(value)用于更新地图上指定层次和指定网格的属性值。 getGridValue(layer, grid_x, grid_y)该函数用于获取指定层次和指定网格的属性值。输入参数为层次(layer)、网格坐标(grid_x, grid_y)输出为该网格在指定层次的属性值。 getMapSize()该函数用于获取多层grid map的大小。输出为地图的宽度和高度通常以网格数来表示。 getNumLayers()该函数用于获取多层grid map的层数。输出为整数值表示多层grid map中包含的层数。 getResolution()该函数用于获取多层grid map的分辨率即每个网格代表的实际距离。输出为一个实数值单位为米/格。 多层grid map相对于单层grid map具有更丰富的信息表示能力但也会带来更高的计算和存储成本。 1.3 迭代器类别 在grid map中常用的迭代器包括 GridMapIterator用于在grid map中迭代所有网格。该迭代器按行优先row-major的顺序遍历网格即先遍历第一行的所有网格然后是第二行的所有网格以此类推。使用该迭代器可以遍历整个地图。GridMapIteratorRow用于在grid map中迭代指定行的所有网格。该迭代器按列优先column-major的顺序遍历网格即先遍历第一列的所有网格然后是第二列的所有网格以此类推。使用该迭代器可以遍历指定行的所有网格。GridMapIteratorRectangle用于在grid map中迭代指定矩形区域内的所有网格。该迭代器按行优先的顺序遍历矩形区域内的网格。使用该迭代器可以遍历指定矩形区域内的所有网格。GridMapIteratorSubmap用于在grid map中迭代指定子地图内的所有网格。该迭代器按行优先的顺序遍历子地图内的网格。使用该迭代器可以遍历指定子地图内的所有网格。 此外还有一些特定形状的迭代器可以帮助更方便地访问grid map中的网格例如 GridMapCircleIterator用于在grid map中迭代指定圆形区域内的所有网格。使用该迭代器可以遍历指定圆形区域内的所有网格。GridMapLineIterator用于在grid map中迭代指定线段路径上的所有网格。使用该迭代器可以遍历指定线段路径上的所有网格。GridMapPolygonIterator用于在grid map中迭代指定多边形区域内的所有网格。使用该迭代器可以遍历指定多边形区域内的所有网格。GridMapEllipseIterator用于在grid map中迭代指定椭圆形区域内的所有网格。使用该迭代器可以遍历指定椭圆形区域内的所有网格。GridMapSpiralIterator用于在grid map中迭代指定螺旋线区域内的所有网格。使用该迭代器可以遍历指定螺旋线区域内的所有网格。 可以根据具体的需求选择不同的迭代器。在实际应用中可以通过使用这些迭代器来实现各种操作例如遍历网格、更新网格属性、计算路径等。 网格图子图圆形线 多边形椭圆形螺旋…… 对于每个迭代器类别都有相应的函数来创建迭代器对象例如 GridMapIterator: begin()和end()函数GridMapIteratorRow: beginRow()和endRow()函数GridMapIteratorRectangle: beginRectangle()和endRectangle()函数GridMapIteratorSubmap: beginSubmap()和endSubmap()函数GridMapCircleIterator: GridMapCircleIterator()构造函数GridMapLineIterator: GridMapLineIterator()构造函数GridMapPolygonIterator: GridMapPolygonIterator()构造函数GridMapEllipseIterator: GridMapEllipseIterator()构造函数GridMapSpiralIterator: GridMapSpiralIterator()构造函数 例如以下代码演示了使用GridMapIterator遍历grid map中的所有网格 // 创建GridMapIterator迭代器对象 GridMapIterator iter(grid_map);// 遍历grid map中的所有网格 for(auto index : iter) {// 对每个网格执行操作// ... }类似地以下代码演示了使用GridMapCircleIterator遍历grid map中的一个圆形区域内的所有网格 // 创建GridMapCircleIterator迭代器对象 GridMapCircleIterator iter(grid_map, center, radius);// 遍历圆形区域内的所有网格 for (auto index : iter) {// 对每个网格执行操作// ... }需要注意的是在使用迭代器访问网格时可以使用索引index或坐标position方式来访问。例如以下代码演示了使用索引方式来访问网格 // 遍历grid map中的所有网格 for (auto index : iter) {// 获取网格索引对应的网格值double value grid_map.at(layer_name, index);// 对网格执行操作// ... }类似地以下代码演示了使用坐标方式来访问网格 // 创建GridMapIteratorSubmap迭代器对象 GridMapIteratorSubmap iter(grid_map, position, length);// 遍历子地图内的所有网格 for (auto position : iter) {// 获取坐标对应的网格值double value grid_map.atPosition(layer_name, position);// 对网格执行操作// ... }1.4 移动grid map的位置 在grid map中位置移动可以通过使用grid_map库提供的函数来实现。grid_map库提供了一系列函数可以方便地对网格地图进行平移和旋转操作。 setPosition(…)move(…)… 比如对于平移操作可以使用grid_map::move函数。该函数接受一个Eigen::Vector2d类型的偏移量参数用于指定网格地图在x和y方向上的平移量。例如以下代码可以将网格地图平移一个单位 grid_map::GridMap map; // 假设已经加载了网格地图 Eigen::Vector2d offset(1.0, 1.0); grid_map::move(map, offset);对于旋转操作可以使用grid_map::rotate函数。该函数接受一个double类型的旋转角度参数以弧度为单位。例如以下代码可以将网格地图旋转45度 grid_map::GridMap map; // 假设已经加载了网格地图 double angle M_PI / 4.0; // 45度 grid_map::rotate(map, angle);需要注意的是调用这些函数后网格地图的大小和分辨率不会发生变化。如果需要改变网格地图的大小和分辨率可以使用grid_map::GridMap::add函数或grid_map::GridMap::setGeometry函数。 2 功能包 2.1 grid_map_rviz_plugin grid_map_rviz_plugin是一个ROS中的插件用于在ROS可视化工具RViz中显示二维栅格地图。它是grid_map库的一部分该库是ROS中用于管理和处理2D网格地图的常用库。 使用grid_map_rviz_plugin用户可以在RViz中可视化网格地图的不同层例如高程、占用度或其他用户定义的层。此外该插件还支持在RViz中可视化其他信息例如机器人传感器读数、路径规划结果等。 使用grid_map_rviz_plugin用户可以执行以下操作 在RViz中添加grid_map_rviz_plugin插件。 将网格地图转换为ROS消息类型并将其发布到ROS话题中。 在RViz中选择grid_map_rviz_plugin作为显示类型并选择要显示的网格地图层。 根据需要调整RViz中的显示参数例如颜色、透明度等。 使用grid_map_rviz_plugin用户可以更轻松地理解和分析网格地图数据从而更好地实现机器人导航、路径规划等应用。同时由于RViz支持交互式操作用户还可以通过RViz直接与网格地图进行交互例如缩放、平移、旋转等操作。 2.2 grid_map_sdf grid_map_sdf是一个ROS包中的功能包用于构建二维栅格地图并计算该地图中每个栅格的有向距离场Signed Distance FieldSDF。以下是对该包的详细解释。 SDF是一种表示几何对象的方法可以用于计算两个对象之间的距离。对于一个给定的点SDF可以告诉我们该点离最近的对象表面的距离以及该点是否在对象内部或外部。这种表示方式被广泛用于机器人导航和避障等应用中。 在ROS中grid_map_sdf包提供了一种使用栅格地图计算SDF的方法。它使用Fast Marching算法来计算每个栅格到最近障碍物的距离可以有效地处理复杂的环境和障碍物形状。 使用grid_map_sdf包可以将传感器数据转换为栅格地图并计算出每个栅格的SDF值。这些值可以用于机器人的导航和避障以及其他需要几何信息的任务。 2.3 grid_map_visualization grid_map_visualization 是一种将网格地图可视化的方法或工具。网格地图是一种将环境或区域划分为规则网格单元的表示方式通常用于机器人导航、路径规划、环境建模等应用。 grid_map_visualization节点订阅grid_map_msgs/GridMap类型的主题并发布可在RViz中可视化的消息。可视化工具发布的主题可以使用 YAML 参数文件进行完全配置。可以添加任意数量的具有不同参数的可视化。 2.3.1 订阅的主题 订阅的主题比较明确就是grid_map_msgs/GridMap类型的栅格图主题默认为/grid_map 2.3.2 发布的主题 发布的主题通过YAML参数文件进行配置。可能的主题有点云(Point cloud)向量(Vectors)占用网格(Occupancy grid)网格单元(Grid cells)等这里以grid_map/grid_map_demos/config/tutorial_demo.yaml配置文件为例 点云向量占用栅格网格单元 point_cloud( sensor_msgs/PointCloud2 ) 将网格图显示为点云。使用参数选择要转换为点的图层layer name: elevationtype: point_cloudparams:layer: elevationflat: false # optionalflat_point_cloud( sensor_msgs/PointCloud2 ) 将网格图显示为“平面”点云即所有点都具有相同高度。在RViz的帮助下可以方便地可视化RViz中的2D地图或图像甚至视频流Color Transformer。该参数height确定平面点云需要的z位置 name: flat_gridtype: flat_point_cloudparams:height: 0.0注意为了从空/无效单元格中省略平面点云中的点请指定使用来检查效果的图层setBasicLayers(...) vectors可视化消息/标记 将网格地图的矢量数据可视化为视觉标记。使用参数指定保存保护的x、y和z数量的层layer_prefix该参数position_layer定义使用矢量起点的图层 name: surface_normalstype: vectorsparams:layer_prefix: normal_position_layer: elevationscale: 0.06line_width: 0.005color: 15600153 # redoccupancy_grid( nav_msgs/OccupancyGrid) 将网格地图的图层可视化为占用网格。使用参数指定要可视化的图层layer并使用和指定上限和data_min下限data_max name: traversability_gridtype: occupancy_gridparams:layer: traversabilitydata_min: -0.15data_max: 0.15grid_cells( nav_msgs/GridCells) 将网格地图的图层可视化为网格单元。使用参数指定要可视化的图层layer并使用和指定上限和lower_threshold下限upper_threshold name: elevation_cellstype: grid_cellsparams:layer: elevationlower_threshold: -0.08 # optional, default: -infupper_threshold: 0.08 # optional, default: infregion可视化消息/标记 显示网格地图的边界 name: map_regiontype: map_regionparams:color: 3289650line_width: 0.003注意颜色值采用 RGB 形式作为串联每个通道值 0-255。以绿色为例红色0绿色255蓝色0 2.4 grid_map_filters grid_map_filters包包含过滤器可以将它们评估多个网格地图以对图层中的数据执行计算。网格地图过滤器基于ROS Filters这意味着过滤器链可以配置为YAML文件。另外可以通过 ROS 插件机制编写附加过滤器并设置可用例如来自包的过滤器。InpaintFiltergrid_map_cv grid_map_filters包中提供了几个基本的过滤器 gridMapFilters/ThresholdFilter 如果condition_layer超过上限或下限阈值一次仅一个阈值则将输出层中的值设置指定值 name: lower_thresholdtype: gridMapFilters/ThresholdFilterparams:condition_layer: layer_nameoutput_layer: layer_namelower_threshold: 0.0 # alternative: upper_thresholdset_to: 0.0 # # Other uses: .nan, .infgridMapFilters/MeanInRadiusFilter 计算一个层的每个单元格中半径内的平均值 name: mean_in_radiustype: gridMapFilters/MeanInRadiusFilterparams:input_layer: inputoutput_layer: outputradius: 0.06 # in m.gridMapFilters/MedianFillFilter 计算一个层的每个NAN单元的中位数有限的贴片内有限的中位数。可选地将中位数计算用于已经有限的值这些点的补丁半径由现有value_radius给出。请注意仅当Fill_mask对此有效时才执行填充计算。 name: mediantype: gridMapFilters/MedianFillFilterparams:input_layer: inputoutput_layer: outputfill_hole_radius: 0.11 # in m. filter_existing_values: false # Default is false. If enabled it also does a median computation for existing values. existing_value_radius: 0.2 # in m. Note that this option only has an effect if filter_existing_values is set true. fill_mask_layer: fill_mask # A layer that is used to compute which areas to fill. If not present in the input it is automatically computed. debug: false # If enabled, the additional debug_infill_mask_layer is published. debug_infill_mask_layer: infill_mask # Layer used to visualize the intermediate, sparse-outlier removed fill mask. Only published if debug is enabled.gridMapFilters/NormalVectorsFilter 计算地图中图层的正常向量 name: surface_normalstype: gridMapFilters/NormalVectorsFilterparams:input_layer: inputoutput_layers_prefix: normal_vectors_radius: 0.05normal_vector_positive_axis: zgridMapFilters/NormalColorMapFilter 根据普通向量层计算新的颜色层 name: surface_normalstype: gridMapFilters/NormalColorMapFilterparams:input_layers_prefix: normal_vectors_output_layer: normal_colorgridMapFilters/MathExpressionFilter 用网格图的层解析并评估数学基质表达式。有关表达式的文档请参见 EigenLab name: math_expressiontype: gridMapFilters/MathExpressionFilterparams:output_layer: outputexpression: acos(normal_vectors_z) # Slope.# expression: abs(elevation - elevation_smooth) # Surface roughness.# expression: 0.5 * (1.0 - (slope / 0.6)) 0.5 * (1.0 - (roughness / 0.1)) # Weighted and normalized sum.gridMapFilters/SlidingWindowMathExpressionFilter 在网格图层上的滑动窗口中解析并评估数学矩阵表达式。有关表达式的文档请参见EigenLab name: math_expressiontype: gridMapFilters/SlidingWindowMathExpressionFilterparams:input_layer: inputoutput_layer: outputexpression: meanOfFinites(input) # Box blur# expression: sqrt(sumOfFinites(square(input - meanOfFinites(input))) ./ numberOfFinites(input)) # Standard deviation# expression: sumOfFinites([0,-1,0;-1,5,-1;0,-1,0].*elevation_inpainted) # Sharpen with kernel matrixcompute_empty_cells: trueedge_handling: crop # options: inside, crop, empty, meanwindow_size: 5 # in number of cells (optional, default: 3), make sure to make this compatible with the kernel matrix# window_length: 0.05 # instead of window_size, in mgridMapFilters/DuplicationFilter 复制网格图的一层 name: duplicatetype: gridMapFilters/DuplicationFilterparams:input_layer: inputoutput_layer: outputgridMapFilters/DeletionFilter 从网格图中删除图层 name: deletetype: gridMapFilters/DeletionFilterparams:layers: [color, score] # List of layers.此外grid_map_cv包还提供以下过滤器 gridMapCv/InpaintFilter 使用 OpenCV 修复/填充图层中的孔。 name: inpainttype: gridMapCv/InpaintFilterparams:input_layer: inputoutput_layer: outputradius: 0.05 # in mReference: https://github.com/anybotics/grid_map 须知少时凌云志曾许人间第一流。 ⭐️
http://www.dnsts.com.cn/news/184516.html

相关文章:

  • 手机网站开发用什么语言检测网站是用什么代码做的软件
  • 网站打开403武城网站建设价格
  • 跨国网站wordpress 显示分类列表
  • 想要网站导航推广手机做视频的软件
  • 网站建设维护面试房地产公司网站制作
  • 玉溪网站建设机加工网站
  • 自己做的网站打开显示很慢永兴县网站建设推广公司
  • 健身会所网站模板涂鸦app定制开发
  • 怎么把网站放到阿里云黄页88官网登录
  • 苏州做网站比较好的公司网站开发后期工作包括那两个部分
  • 网站建站策划wordpress目录路径
  • 网站建设与设计论文惠州东莞网站建设价格
  • 东莞网站建设0086怎么编辑网页里面内容
  • 手表网站有哪个比较好php网站开发 vip
  • 网站页头页尾怎样做百度引擎的搜索方式是什么
  • 优秀响应式网站教育行业网站制作
  • 中天建设招标网站网站展示模板
  • 外贸哪家做网站百度软件下载
  • 汽车装饰网站源码北京旅游型网站建设
  • 隆回网站建设制作wordpress 设成中文
  • 门户网站开发公司网站制作费用多少
  • 推广网站的图片怎么做遵义网络科技公司
  • 上海建设银行黄浦区营业网站广州市财贸建设开发监理网站
  • 甘肃网站建设哪家好世界互联网峰会时间
  • 怎么修改网站后台路径做医院网站公司吗
  • 做网站 不是计算机专业想开加工厂怎么找订单
  • 南宁市保障住房建设管理服务中心网站帮非法集资公司做网站违法吗
  • 做网站开发哪种语言更稳定高效网站内容建设 互联互通
  • 济南互联网选号网站网址信息查询
  • 做代理网站用什么软件猪八戒网做网站