ros与硬件的交互

(一) 与usb相机的交互

         第一个链接 先从usb拿到图像然后发布订阅

        【C++】ROS:cv_bridge包使用与图像转换示例_cvbridge-CSDN博客

        第二个链接使用方法

        ROS学习笔记--cv_bridge_cvbridge-CSDN博客

        第三个链接是,包含了话题自定义

        ROS教程(五):OpenCV调用USB摄像头并发布topic(详细图文)-腾讯云开发者社区-腾讯云 (tencent.com)

        主要包含了两个内容

               1ros图像转换成opencv图像

               2opencv图像转换成ros图像

(二) 与工业相机的交互

           ros系统与海康相机的交互,参照网址:https://gitcode.com/luckyluckydadada/HIKROBOT-MVS-CAMERA-ROS/overview?utm_source=csdn_github_accelerator&isLogin=1​​​​​​

程序中,相机的参数设置为硬触发,帧率为10帧。

        node.param("FrameRate", FrameRate, 10);  // 帧率设置为10帧

        node.param("ExposureTime", ExposureTime, 50000); // 曝光时间设置为50ms

        node.param("TriggerMode", TriggerMode, 1);  // 控制相机是否开启硬触发
        node.param("TriggerSource", TriggerSource, 2);  // 触发源 也就是选择线 line0, line2等线
        node.param("LineSelector", LineSelector, 2);  // 这个表示IO的线选择的是哪一个

在图像的获取过程中,并没有用到回调函数,而是直接去获取帧:

            nRet = MV_CC_GetOneFrameTimeout(p_handle, m_pBufForDriver, MAX_IMAGE_DATA_SIZE, &stImageInfo, 15);  //  不知道会不会获得重复帧

在拿到帧之后,使用了互斥量来防止 图像在被read的时候修改。

在ros发布过程中,就是先readimage,然后构建cv_bridge::CvImagePtr 。 并转化成 sensor_msgs::Image 和 sensor_msgs::CameraInfo 两个消息, 然后直接发布消息。

整个程序中,使用硬触发,应该是和其他硬件相连,其他硬件可以提供一个电平触发信号。感觉缺点是 用一个回调函数来接收图像会比较好。在获得图像后,直接就pub图像。

整个过程仍然是,从相机中使用函数或者回调函数抓取图像,然后把图像pub出去。两者可以分开来写程序。

(三)与激光雷达的交互

(四)与IMU的交互

(五)与RTK/GNSS硬件的交互

ROS实现串口解析GPS协议,并发布到话题_gpfpd-CSDN博客

理解了 ros和硬件交互的原理,第一步就是通过硬件的SDK或者串口程序,获取到硬件的数据,然后使用ros进行发布。在硬件层面上去保证硬件是同步的。

(六)与小车的交互

(七)与无人机的交互

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值