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

网站建设我们的优势百度网页

网站建设我们的优势,百度网页,公众号怎么链接wordpress,wordpress展示模板ros2可以和lidar、imu、相机、超声波雷达和小车控制等硬件相互通讯。通讯的过程中是按照一定的消息格式来通讯的,但是数据处理的时候则是直接对消息中的数据进行处理,因此消息和数据之间是需要进行转换的。那么怎么转换呢? 一.ros2和PointCl…

ros2可以和lidar、imu、相机、超声波雷达和小车控制等硬件相互通讯。通讯的过程中是按照一定的消息格式来通讯的,但是数据处理的时候则是直接对消息中的数据进行处理,因此消息和数据之间是需要进行转换的。那么怎么转换呢?

一.ros2和PointCloud2之间的转换

   假设所要包含的头文件和数据是:

#include <pcl_conversions/pcl_conversions.h>
#include <pcl/PCLPointCloud2.h>
#include <sensor_msgs/PointCloud2.h>
#include <pcl/conversions.h>
#include <pcl/point_types.h>
#include <pcl/point_cloud.h>pcl::PointCloud<>  pcl_pc;
pcl::Pointcloud2 pcl_pc2;
sensor_msgs::PointCloud2  ros_pc;
sensor_msgs::PointCloud2  ros_pc2;

    1、pcl::Pointcloud2 和  sensor_msgs::PointCloud2 之间的转换   

          1)把pcl::Pointcloud2 转换成 pointClouds_msg

                第一种方法:pcl::toRosMsg(pcl_pc2, ros_pc2); 

                第二种方法:pcl::fromPcl(pcl_pc2, ros_pc2); 

          2)把 pointClouds_msg转换成  pcl::Pointcloud2

               第一种方法:pcl::fromRosMsg( ros_pc2, pcl_pc2)

               第二种方法:pcl::toPcl( ros_pc2,pcl_pc2); 

    2. pcl::Pointcloud2 和 pcl::Pointcloud之间的转换

         1)把pcl::Pointcloud2转换成 pcl::Pointcloud

                pcl::fromPclPointCloud2(pcl_pc2,pcl_pc);

               

          2)把pcl::Pointcloud转换成 pcl::Pointcloud2

              pcl::toPclPointCloud2(pcl_pc,pcl_pc2);

               convertPointCloudToPointCloud2(pcl_pc,pcl_pc2);

    3.sensor_msg::pointcloud2 和sensor_msg::pointcloud之间的转换

          1)把sensor_msg::pointcloud2转换成 sensor_msg::pointcloud

                convertPointCloud2ToPointCloud( ros_pc2, ros_pc);

           2)把sensor_msg::pointcloud转换成 sensor_msg::pointcloud2

                convertPointCloud2ToPointCloud( ros_pc, ros_pc2);

    4.为了数据转换更加高效,可以使用move

            pcl_conversions::moveFromPCL(pcl_pc2, ros_pc2);

   点云、消息之间相互转换,参考的博客是 ROS与PCL环境中进行四种不同点云数据类型转换_pcl::torosmsg-CSDN博客

二、 ros2和图像之间的转换

         简单的转换关系就是 opencv cv::Mat  <-----------CvBridge-----------> Ros image message

#include <ros/ros.h>
#include <sensor_msgs/Image.h>
#include <cv_bridge/cv_bridge.h>
#include <opencv2/opencv.hpp>class ImageProcessor
{
public:ImageProcessor(){// 初始化订阅者和发布者image_sub = nh.subscribe("/camera/image_raw", 1, &ImageProcessor::imageCallback, this);image_pub = nh.advertise<sensor_msgs::Image>("/camera/image_processed", 1);}void imageCallback(const sensor_msgs::ImageConstPtr& msg){try{// 将ROS图像消息转换为OpenCV格式cv_bridge::CvImagePtr cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8);// 进行灰度转换cv::Mat gray_image;cv::cvtColor(cv_ptr->image, gray_image, cv::COLOR_BGR2GRAY);// 将灰度图转换回ROS图像消息cv_bridge::CvImage out_msg;out_msg.header = msg->header;out_msg.encoding = sensor_msgs::image_encodings::MONO8;out_msg.image = gray_image;// 发布处理后的图像image_pub.publish(out_msg.toImageMsg());}catch (cv_bridge::Exception& e){ROS_ERROR("cv_bridge exception: %s", e.what());return;}}private:ros::NodeHandle nh;ros::Subscriber image_sub;ros::Publisher image_pub;
};int main(int argc, char** argv)
{ros::init(argc, argv, "image_processor");ImageProcessor ip;ros::spin();return 0;
}

       可以看出,

1)将ros2图像转成opencv图像

      cv_bridge::CvImagePtr cv_ptr = cv_bridge::toCvCopy(msg,sensor_msgs::image_encodings::BGR8);
            // 进行灰度转换
            cv::Mat gray_image;
            cv::cvtColor(cv_ptr->image, gray_image, cv::COLOR_BGR2GRAY);

2)将opencv图像转成ros2图像的方法

           // 将灰度图转换回ROS图像消息
            cv_bridge::CvImage out_msg;
            out_msg.header = msg->header;
            out_msg.encoding = sensor_msgs::image_encodings::MONO8;
            out_msg.image = gray_image;
            
            // 发布处理后的图像
            image_pub.publish(out_msg.toImageMsg());

参考的博客是:深入解析Ubuntu 20.04中ROS与OpenCV的图像格式及其相互转换_cv::mat image 转换为ros msg-CSDN博客

三、ros2和arduino通讯

这个还没搞明白,后续还需要更新博客。看这篇博客的代码,竟然是ros2消息发布也烧录到了arduino板子上,,那么消息是通过串口发布的吗?

ROS2与Arduino发布订阅_micro-xrce-dds 最小内存-CSDN博客

【如何将Arduino与机器人操作系统(ROS)一起使用】_arduino ros-CSDN博客

四、ros2和 imu之间

imu刚买过来,还没有具体研究,等跑通了再来更新。

五、ros2和串口之间的

ROS机器人制作(三)—— ROS上位机与stm32进行串口通信_ros与stm32通信-CSDN博客

六、ros2与pixhawk数据通讯

这个标题也先列在这里,后续逐步补充

http://www.hkea.cn/news/464233/

相关文章:

  • 如何撤销网站上信息app网站
  • 单页式网站系统每日新闻摘要30条
  • 网站开发公司 广告词优化方案电子版
  • 做便民工具网站怎么样关键词挖掘站长工具
  • 纺织面料做哪个网站好百度站长资源
  • 菏泽网站建设哪好怎样做平台推广
  • 网上有做logo的网站吗网络营销的核心是什么
  • 自建网站怎么做推广微信营销策略
  • 跳网站查询的二维码怎么做的关键词排名点击软件网站
  • 兼容手机的网站百度怎么推广自己的视频
  • 宝安中心医院入职体检跟我学seo
  • 企业网站后端模板石家庄疫情最新情况
  • 沈阳哪家网站做的好网络营销是指什么
  • 我的网站模板网站建设主要推广方式
  • 国外app素材网站seo运营是做什么的
  • 企业网站seo怎么做百度帐号个人中心
  • 郑州网站建设亅汉狮网络百度网盘seo优化
  • 模板型网站seo优化平台
  • 官方网站下载免费软件培训机构有哪些?哪个比较好
  • 网站导航怎么做的惠州seo计费管理
  • 建设公司网站模板全国唯一一个没有疫情的城市
  • 网站怎么做seo_南京百度提升优化
  • 旅游网站开发与设计论文怎么样建网站
  • 北京网站推广排名公司企业网站的搜索引擎推广与优化
  • 动态网站期末设计广告营销策略
  • 山东网站营销推广费用旺道seo推广
  • 邢台网站建设服务周到百度数据分析工具
  • 周口网站建设竞价恶意点击犯法吗
  • 网站建设没有预付款seo快速提升排名
  • 网站开发者的设计构想网络推广平台软件