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

wordpress国产网校百度seo优化技巧

wordpress国产网校,百度seo优化技巧,个体户可以网站备案吗,wordpress用户中心界面文章目录 1 移植思路2 代码输入输出说明3 编写CmakeList.txt文件4 编写yml文件5 编译并启动节点参考资料 在DORA中通过驱动获取激光雷达数据后,激光点云预处理部分代码是参考了autoware官方代码并对其进行裁剪得到的,点云预处理主要包含三个节点&#xf…

文章目录

  • 1 移植思路
  • 2 代码输入输出说明
  • 3 编写CmakeList.txt文件
  • 4 编写yml文件
  • 5 编译并启动节点
  • 参考资料

在DORA中通过驱动获取激光雷达数据后,激光点云预处理部分代码是参考了autoware官方代码并对其进行裁剪得到的,点云预处理主要包含三个节点:

  • crop_box_point: 裁剪点云
  • ring_outlier_fliter: 目的是去除昆虫、雨水等点云噪声。
  • voxel_grid_downsample_filtre: 降采样

下图为 autoware官方的 ring_outlier_fliter 滤波器示意图
在这里插入图片描述
图片来源于 autoware官方

1 移植思路

Autoware 中基于ROS框架将多个节点组合成一个系统,因此移植算法只需要将找到ROS数据获取和发布函数部分的代码,将其替换为DORA中反序列化和序列化功能代码。
修改后的代码位于: https://github.com/dora-rs/autoware.universe/tree/feature/autoware_dora/localization/pointcloud_preprocessor

2 代码输入输出说明

DORA节点初始化函数:

extern "C"
{
#include "node_api.h"
#include "operator_api.h"
#include "operator_types.h"
}#include <vector>
#include <iostream>
#include <Eigen/Dense>
#include <cstdint>
#include <memory>
#include <string.h>
#include <cassert>
#include <pcl/point_types.h>int run(void *dora_context)
{while (true){void *event = dora_next_event(dora_context);if (event == NULL){printf("[c node] ERROR: unexpected end of event\n");return -1;}enum DoraEventType ty = read_dora_event_type(event);if (ty == DoraEventType_Input){//-------------------------------------------------------------------------------------------------------// 点云处理函数//---------------------------------------------------------------------------------------------------------char *output_data = (char *)point_data.ptr;size_t output_data_len = ((output_cloud.size() + 1) * 16);std::string out_id = "pointcloud";std::cout << "output_data_len: " << output_data_len << std::endl;int resultend = dora_send_output(dora_context, &out_id[0], out_id.length(), output_data, output_data_len);delete[] point_data.ptr;// int resultend = 0;if (resultend != 0){std::cerr << "failed to send output" << std::endl;return 1;}}else if (ty == DoraEventType_Stop){printf("[c node] received stop event\n");}else{printf("[c node] received unexpected event: %d\n", ty);}free_dora_event(event);}return 0;
}int main()
{std::cout << "crop_box_point node" << std::endl;auto dora_context = init_dora_context_from_env();auto ret = run(dora_context);free_dora_context(dora_context);return ret;
}

3 编写CmakeList.txt文件

DORA官方教程采用cargo编译器对代码进行编译,这里我们将其修改为cmake就行编译,在编译时需要指定DORA c/c++ API 接口目录,以及DORA源文件编译生成的 c/c++ 动态链接库。以下代码是CmakeList.txt文件中添加DORA目录和链接到DORA库的方法。
完整的文件位于:https://github.com/dora-rs/autoware.universe/blob/feature/autoware_dora/localization/pointcloud_preprocessor/CMakeLists.txt

include_directories(${PCL_INCLUDE_DIRS}${EIGEN3_INCLUDE_DIRS}${YAMLCPP_INCLUDE_DIRS}$ENV{HOME}/dora/apis/c/node #dora的头文件路径 node_api.h$ENV{HOME}/dora/apis/c/operator${CURRENT_DIR}/rs_driver/src #雷达的头文件路径$ENV{HOME}/dora/examples/c++-ros2-dataflow/build/ #C++ros的头文件路径)add_executable(ring_outlier_fliter ring_outlier_fliter.cc )
target_link_libraries(ring_outlier_fliter${PCL_LIBRARIES}${EIGEN_LIBRARIES}${YAMLCPP_LIBRARIES}# glog::glog$ENV{HOME}/dora/target/release/libdora_node_api_c.amrtdl pthreadpcap
)

4 编写yml文件

创建pointcloud_preprocessor.yml 文件,与上一篇激光雷达驱动的博客编写驱动文件位于同一级目录下,这里我们在一个yml文件中启动了lidr驱动节点和lidar2ROS2数据转发节点。
https://github.com/dora-rs/autoware.universe/blob/feature/autoware_dora/localization/pointcloud_preprocessor/pointcloud_preprocessor.yml


nodes:# rslidar driver node- id: rslidar_drivercustom:source: ../../dora-hardware/dora_to_ros2/lidar/build/rslidar_driver_pcapinputs:tick: dora/timer/millis/100outputs:- pointcloud# crop_box_point node- id: crop_box_pointcustom:source: build/crop_box_pointinputs:pointcloud: rslidar_driver/pointcloudoutputs: - pointcloud# ring_outlier_fliter node- id: ring_outlier_flitercustom:source: build/ring_outlier_fliterinputs:pointcloud: crop_box_point/pointcloudoutputs: - pointcloud# voxel_grid_downsample_filtre node- id: voxel_grid_downsample_filtrecustom:source: build/voxel_grid_downsample_filtreinputs:pointcloud: ring_outlier_fliter/pointcloudoutputs: - pointcloud- id: lidar_to_ros2operator:python: ../../dora-hardware/dora_to_ros2/lidar/lidar_to_ros2.pyinputs:pointcloud: ring_outlier_fliter/pointcloud

上述yml文件描述的测试程序还包含有驱动和上一篇博客中提到的可视化节点。
请添加图片描述

此处目录结构发生了变化,这里我们将点云预处理相关的节点放到了另一个文件夹,pointcloud_preprocessor.yml 与预处理节点位于同一级目录,但是该yml文件中调用了激光雷达驱动节点(该节点位于其他目录下),因此需要保证该yml文件下第5行代码中 source描述的目录下能找到激光雷达驱动节点**“source: …/…/dora-hardware/dora_to_ros2/lidar/build/rslidar_driver_pcap”**

5 编译并启动节点

通过cmake对c代码进行编译:

cd pointcloud_preprocessor #这条指令可以不执行,但一定要在pointcloud_preprocessor路径下
mkdir build && cd build
cmake ..
cmake --build .

新建一个终端启动dora节点

dora up 
dora start pointcloud_preprocessor.yml --name test

再新建一个终端启动RVIZ2,选择 “/ros2_bridge/lidar_data” 话题进行可视化

在这里插入图片描述

参考资料

[1] https://github.com/RoboSense-LiDAR/rs_driver/tree/main
[2] https://github.com/dora-rs/dora-hardware/tree/main/vendors/lidar/Robosense

dora-rs目前资料较少 欢迎大家点赞在评论区交流讨论(cenruping@vip.qq.com) O(∩_∩)O
或者加群水一波(1149897304)

http://www.tj-hxxt.cn/news/8875.html

相关文章:

  • 金坛网站建设公司重庆seo标准
  • 两学一做 山西答题网站百度搜索关键词统计
  • 温州专业手机网站制作哪家便宜各平台推广费用
  • 做网站背景图片怎么放网络游戏营销策略
  • 做pc和移动网站的适配深圳网站维护
  • 女孩做网站工作辛苦吗美橙互联建站
  • 基于cms的网站设计与实现毕业论文西安专业网络推广平台
  • 岳阳设计网站推荐品牌营销战略
  • 分类网站开发2022最近比较火的热点话题
  • 建材建设行业网站体育热点新闻
  • 广东省建设安全监督站的网站深圳英文网站推广
  • 建设项目网站谷歌账号注册
  • 上海哪家公司做网站郑州seo顾问外包
  • 网站手机版怎么做的百度快速排名化
  • 南京做企业网站的公司在线注册免费域名
  • 小程序平台服务协议宁波seo优化外包公司
  • 图片模板 网站源码培训管理平台
  • 德国室内设计网站网站页面设计模板
  • 手机餐饮网站开发免费发帖推广平台
  • 企业做网站的好处千秋网络广州专做优化的科技公司
  • 市场监督管理局官网查询系统石家庄高级seo经理
  • 网站代备案流程图完整企业网站模板
  • 用织梦做网站快吗北京seo公司司
  • 网站搭建前景微信小程序排名关键词优化
  • 兰州新闻最新消息上海关键词排名优化怎样
  • 涂料做哪个网站好宁波网站优化公司价格
  • 江苏中粟建设工程有限公司网站近三年成功的营销案例
  • css 设计网站东莞做网站哪里好
  • 用狐狸做logo的网站成都网站优化及推广
  • 微信微网站制作教程电商运营数据六大指标