早年买了一款乐视RGBD一直落灰,最近做一个机器人项目想重新使用起来。发现官方给的RGBD包和github上面的ros_astra_camera包并不能很好的驱动这款相机。研究了一下进行补足。
最终的结果是彩色,红外以及深度退昂均能实时读取。具体过程如下:
安装配置
- 安装依赖
sudo apt install ros-$ROS_DISTRO-rgbd-launch ros-$ROS_DISTRO-libuvc ros-$ROS_DISTRO-libuvc-camera ros-$ROS_DISTRO-libuvc-ros ros-$ROS_DISTRO-uvc-camera
- 下载ros包并编译
mkdir -p ~/astra_ws/src && cd ~/astra_ws/src
git clone https://github.com/orbbec/ros_astra_camera
cd ../
catkin_make
这时候直接使用官方包是不能够显示彩色和红外相机的。
解决方案
关闭官方的彩色输出,允许红外输出。采用ros官方的usb_cam包对彩色摄像头进行驱动。
- 安装ros官方usb相机包
sudo apt-get install ros-$ROS_DISTRO-usb-cam
安装好以后的包在/opt/ros/$ROS_DISTRO/usb_cam
。我们需要自行编辑一个launch文件用于适配astra彩色相机。可以在/opt/ros/$ROS_DISTRO/usb_cam/share/launch
新建launch文件,并填写以下内容:
<!--usb_cam.launch-->
<launch>
<arg name="image_width" default="640"/>
<arg name="image_height" default="480"/>
<arg name="video_device" default="/dev/video0"/>
<arg name="pixel_format" default="mjpeg"/>
<arg name="image_view" default="false" />
<node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
<param name="video_device" value="$(arg video_device)" />
<param name="image_width" value="$(arg image_width)" />
<param name="image_height" value="$(arg image_height)" />
<param name="pixel_format" value="$(arg pixel_format)" />
<param name="color_format" value="yuv422p" />
<param name="camera_frame_id" value="usb_cam" />
<param name="io_method" value="mmap"/>
</node>
</launch>
其中的参数都可以根据需要修改。文件创建好以后,可以使用 roslaunch usb_cam usb_cam.launch
运行。
- 关闭官方彩色摄像头输出,修改astra.launch文件,使得:
<arg name="enable_color" default="false"/>
<arg name="enable_ir" default="true"/>
运行
- 开两个ros节点:
roslaunch astra_camera astra.launch &
roslaunch usb_cam usb_cam.launch
即可得彩色、红外以及深度三个相机的数据。通过rviz查看: