ROS 摄像头使用

1、安装rbx1包

创建一个工作空间,这里以catkin_ws 为例,下载并编译rbx1安装包:

$ cd ~/catkin_ws/src 
$ git clone https://github.com/ncnynl/rbx1.git
$ cd ~/catkin_ws
$ catkin_make

2、安装usb_cam驱动

$ cd ~/catkin_ws/src  
$ git clone https://github.com/bosch-ros-pkg/usb_cam.git  
$ cd ~/catkin_ws  
$ catkin_make  

目前新版本的rbx1已经带有usb_cam,如果没有添加如下。
catkin_ws/src/rbx1/rbx1_vision/launch目录,新建usb_cam.launch

$ cd ~/catkin_ws/src/rbx1/rbx1_vision/launch
$ touch usb_cam.launch
$ vim usb_cam.launch

代码如下:

<launch>
    <arg name="video_device" default="/dev/video0" />

    <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" clear_params="true" output="screen">

        <remap from="usb_cam/image_raw" to="/camera/rgb/image_raw" />
        <remap from="usb_cam/camera_info" to="/camera/rgb/camera_info" />

        <param name="video_device" value="$(arg video_device)" />
        <param name="image_width" value="640" />
        <param name="image_height" value="480" />
        <param name="framerate" value="30" />
        <param name="pixel_format" value="mjpeg" />
        <param name="contrast" value="32" />
        <param name="brightness" value="32" />
        <param name="saturation" value="32" />
        <param name="autofocus" value="true" />
        <param name="camera_frame_id" value="camera_link" />

    </node>
</launch>

3、测试使用

  • 启动roscore
$ roscore
  • 启动rbx1
$ roslaunch rbx1_vision usb_cam.launch video_device:=/dev/video0 
  • 查看图像
$ rosrun rqt_image_view rqt_image_view

在这里插入图片描述

  • 查看相机相关发布的话题
$ rostopic list

显示如下:

/camera/rgb/camera_info
/camera/rgb/image_raw
/camera/rgb/image_raw/compressed
/camera/rgb/image_raw/compressed/parameter_descriptions
/camera/rgb/image_raw/compressed/parameter_updates
/camera/rgb/image_raw/compressedDepth
/camera/rgb/image_raw/compressedDepth/parameter_descriptions
/camera/rgb/image_raw/compressedDepth/parameter_updates
/camera/rgb/image_raw/theora
/camera/rgb/image_raw/theora/parameter_descriptions
/camera/rgb/image_raw/theora/parameter_updates
/rosout
/rosout_agg

测试完毕。

小Tips:查看连接的可用设备
在这里插入图片描述

4、参考资料

ROS与深度相机入门教程-在ROS使用webcam摄像头(内置或外置)

  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ROS (Robot Operating System) 是一个广泛使用的开源机器人操作系统,主要用于设计、构建和管理复杂的机器人软件系统。在ROS1中,摄像头作为一个传感器设备,通常通过GStreamer或OpenCV等库进行摄像头数据的采集和处理。 在ROS1中调用摄像头的基本步骤如下: 1. 安装依赖:确保已经安装了ROS1的基础包,包括`roscpp`, `image_transport`, `sensor_msgs`等。这些包为摄像头通信提供了基础支持。 2. 配置硬件:在ROS机器人的配置文件`~/.bashrc`中添加摄像头设备的路径,如果摄像头是USB设备,可能需要安装相应的驱动。 3. 创建节点:创建一个Node,这是ROS中的基本执行单元,可以编写处理摄像头数据的代码。例如,你可以使用`cv_bridge`转换图像格式,使其与ROS的消息系统兼容。 ```cpp #include <ros/ros.h> #include <sensor_msgs/image_encodings.h> #include <cv_bridge/cv_bridge.h> class CameraSubscriber { public: void imageCallback(const sensor_msgs::ImageConstPtr& msg) { cv::Mat image = cv_bridge::toCvCopy(msg, "bgr8"); // 对图像进行处理... // 发布处理后的图像或者其他信息 } }; int main(int argc, char *argv[]){ ros::init(argc, argv, "camera_subscriber"); CameraSubscriber camSubscriber; ros::Subscriber sub = nh.subscribe("/camera/image_raw", 1, &CameraSubscriber::imageCallback, &camSubscriber); ros::spin(); return 0; } ``` 4. 接收并处理数据:当创建的节点启动后,它会订阅指定的主题(如`/camera/image_raw`),每当有新的摄像头图像数据到来时,就会调用回调函数`imageCallback`进行处理。 5. 发布图像或消息:处理后的图像可以发布到其他节点,或者保存到文件、显示在屏幕上等。 相关问题: 1. ROS1中的`image_transport`库是什么作用? 2. 如何在ROS中查看摄像头数据? 3. 如何调试或查看图像数据的原始格式?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值