Astra相机的ROS开发环境配置与使用

  • 一、Astra相机简介
  • 二、搭建ROS工作空间
    • 1.下载ROS驱动功能包
    • 2.安装依赖
    • 3.配置工作空间
  • 三、配置设备节点
    • 1.固定设备串口号
    • 2.获取设备信息
    • 3.修改launch文件
  • 四、启动相机节点
  • 五、配置相机内参
    • 1.下载内参文件
    • 2.使用内参文件
    • 3.启动launch
  • 六、RVIZ查看点云
    • 1.启动rviz
    • 2.查看点云
    • 3.快捷启动rviz
    • 4.保存点云信息
    • 5.查看pcd文件

一、Astra相机简介


Astra相机(售价150)是由乐视与奥比中光合作生产的一款体感相机,其对标微软Kinect相机(售价800+),可用于机器视觉、3D点云、opencv、SLAM学习,支持ROS框架能够在ubuntu、windows、Android等系统下进行开发。其官方(https://orbbec3d.com/develop/)提供了相应的SDK供开发者使用。

相机的具体参数如下所示,本文主要讲解如何在Ubuntu端搭建基于ROS的开发环境。

二、搭建ROS工作空间

1.下载ROS驱动功能包

Astra相机官方提供了ROS驱动进行开发,该驱动目前仅支持ROS Kinetic 和 Melodic版本。

该项目的官方地址为https://github.com/orbbec/ros_astra_camera,由于处于外网原因,建议将其搬运至国内码云后进行下载,此处提供我搬运的码云地址:https://gitee.com/jasonli0012/ros_astra_camera

2.安装依赖

下载完项目源码后,需要先进行安装依赖文件。此处安装命令中的**$ROS_DISTRO**将根据你的ROS版本不同而不同,此处我选择Melodic版本进行开发,Astra相机同样支持ROS Kinetic版本的开发。

sudo apt install ros-$ROS_DISTRO-rgbd-launch ros-$ROS_DISTRO-libuvc ros-$ROS_DISTRO-libuvc-camera ros-$ROS_DISTRO-libuvc-ros

3.配置工作空间

完成安装依赖文件后,需要新建一个工作空间用于对Astra相机的ROS开发。

# 新建工作空间
mkdir -p astra/src
cd astra
catkin_make
source devel/setup.bash
# 将下载的源码移动至src目录下
cd src
mv ~/ros_astra_camera ~/ws/astra/src/
# 编译
cd ..
catkin_make

编译成功后如图所示:

此处建议大家将source devel/setup.bash写入 .bashrc文件中,以防止之后重复操作。此处我用的命令行为zsh所以修改的文件为 .zshrc,加载的文件为 setup.zsh

# bash
sudo vi ~/.bashrc
# 填写你自己的工作空间目录
source ~/ws/astra/devel/setup.bash# zsh
sudo vi ~/.zshrc
# 填写你自己的工作空间目录
source ~/ws/astra/devel/setup.zsh

三、配置设备节点

1.固定设备串口号

为了方便之后进行开发,需要将Astra相机的串口号固定表示。其官方功能包中就自带脚本,只需要直接运行即可。

roscd astra_camera
# 运行脚本
./scripts/create_udev_rules

出现如下图所示内容即表明成功。

随后再次编译工作空间即可。

# 到达工作空间下
roscd astra_camera
cd ../..
# 编译
catkin_make -j7

上述命令中编译命令catkin_make后带的参数表示使用几核(CPU核心)进行编译,此处表明使用7核心进行编译以达到快速编译。

2.获取设备信息

由于官方提供的launch文件是通过设备的 vendor (设备贴牌)和 product (设备ID)进行启动节点的,所以首先我们需要确定设备的贴牌和ID 。

在命令行输入命令lsusb分别查看Astra相机插拔前后的设备信息,可以发现设备信息。

通过对比,排除多出的USB驱动外,剩余的两项即为设备信息

Bus 001 Device 019: ID 2bc5:0502
Bus 001 Device 018: ID 2bc5:0403

其中设备的贴牌为 2bc5 ,而0502 代表彩色摄像头,0403代表深度摄像头。

3.修改launch文件

在获取设备信息后,我们需要修改官方提供的launch文件。

# 找到launch文件所在目录
roscd astra_camera/launch
# 编辑launch文件
sudo gedit astra_pro。launch

打开launch文件后,找到第71行,将设备的属性修改为彩色相机的设备ID。

四、启动相机节点

启动launch文件,运行节点。出现如下图所示内容即表示运行成功。此处黄色报警内容可暂时忽略。

roslaunch astra_carma astrapro.launch


另开命令行运行rqt节点

 rosrun rqt_image_view rqt_image_view

在rqt工具上方选择所需订阅的话题即可调出不同的图片,此处展示为彩色图片(rgb)中的原图(image_raw),此外也可以选择深度、红外等所需图像。

五、配置相机内参

1.下载内参文件

由于相机本身存在畸变,所以需要使用一些配置文件来完成去畸变工作。此处给出Astra相机中彩色相机和深度相机的内参配置文件。

camera.yaml文件

image_width: 640
image_height: 480
camera_name: camera
camera_matrix:rows: 3cols: 3data: [577.54679,   0.     , 310.24326,0.     , 578.63325, 253.65539,0.     ,   0.     ,   1.     ]
camera_model: plumb_bob
distortion_model: plumb_bob
distortion_coefficients:rows: 1cols: 5data: [0.125197, -0.196591, 0.006816, -0.006225, 0.000000]
rectification_matrix:rows: 3cols: 3data: [1., 0., 0.,0., 1., 0.,0., 0., 1.]
projection_matrix:rows: 3cols: 4data: [590.55457,   0.     , 306.57339,   0.     ,0.     , 592.83978, 256.43008,   0.     ,0.     ,   0.     ,   1.     ,   0.     ]

depth.yaml 文件

image_width: 640
image_height: 480
camera_name: depth_Astra_Orbbec
camera_matrix:rows: 3cols: 3data: [582.795354, 0.000000, 326.415982, 0.000000, 584.395006, 249.989410, 0.000000, 0.000000, 1.000000]
distortion_model: plumb_bob
distortion_coefficients:rows: 1cols: 5data: [-0.068613, 0.174404, 0.001015, 0.006240, 0.000000]
rectification_matrix:rows: 3cols: 3data: [1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000]
projection_matrix:rows: 3cols: 4data: [586.186035, 0.000000, 329.702427, 0.000000, 0.000000, 590.631409, 250.167765, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000]

复制上述文件并放置到cfg文件夹中即可。

#路径
roscd astra_camera/cfg

2.使用内参文件

为了在启动launch文件时调用内参文件,需要对其进行修改。

roscd astra_camera/launch
sudo gedit astrapro.launch


此处使用gedit编辑器打开launch文件并修改其25、26行内容,将内参文件的地址填写入内。

# 原内容:
<arg name="rgb_camera_info_url"   default="" />
<arg name="depth_camera_info_url" default="" />
# 替换为:
<arg name="rgb_camera_info_url"   default="file://$(find astra_camera)/cfg/camera.yaml" />
<arg name="depth_camera_info_url" default="file://$(find astra_camera)/cfg/depth.yaml" />

随后向下,找到第84行修改为如下内容:

# 原内容:
<param name="camera_info_url" value="" />
# 替换为:
<param name="camera_info_url" type="string" value="$(arg rgb_camera_info_url)" />

3.启动launch

配置完成后可以再次启动节点,查看校准后的图像内容。

原始的深度图:

校准后的深度图:

六、RVIZ查看点云

1.启动rviz

除了使用rqt工具进行查看图像外,还可以使用rviz工具进行查看图像。命令行中直接启动rviz工具。

rviz


此时的rviz内尚未订阅任何节点,此时可以订阅查看图像信息。点击左下方Add按钮选择image类型,添加图像节点。


随后在左侧打开选项卡image,在image Topic中选择自己订阅的节点即可。

上述步骤可重复进行,从而达到订阅多个摄像头节点。如下图即为同时打开三个摄像头。

2.查看点云

同样再次点击左下方Add按钮,选择PointCloud2类型新建内容。

随后,在左侧PointCloud2选项下订阅 /camera/depth_registered/points话题,并将Global OptionsFixed Frame选为camera_depth_optical_frame。完成上述操作后,即可在中央查看到点云选项。

3.快捷启动rviz

为了方便之后减少重复打开rviz添加上述内容的工作,此处提供了rviz的参数文件以方便再次打开。

Panels:- Class: rviz/DisplaysHelp Height: 0Name: DisplaysProperty Tree Widget:Expanded:- /Global Options1- /Status1- /PointCloud21- /Depth1- /ir1- /RGB1Splitter Ratio: 0.5Tree Height: 361- Class: rviz/SelectionName: Selection- Class: rviz/Tool PropertiesExpanded:- /2D Pose Estimate1- /2D Nav Goal1- /Publish Point1Name: Tool PropertiesSplitter Ratio: 0.5886790156364441- Class: rviz/ViewsExpanded:- /Current View1Name: ViewsSplitter Ratio: 0.5- Class: rviz/TimeExperimental: falseName: TimeSyncMode: 0SyncSource: PointCloud2
Preferences:PromptSaveOnExit: true
Toolbars:toolButtonStyle: 2
Visualization Manager:Class: ""Displays:- Alpha: 0.5Cell Size: 1Class: rviz/GridColor: 159; 147; 147Enabled: trueLine Style:Line Width: 0.029999999329447746Value: LinesName: GridNormal Cell Count: 0Offset:X: 0Y: 0Z: 0Plane: XZPlane Cell Count: 10Reference Frame: camera_depth_optical_frameValue: true- Alpha: 1Autocompute Intensity Bounds: trueAutocompute Value Bounds:Max Value: 9.859000205993652Min Value: 0.5799999833106995Value: trueAxis: XChannel Name: intensityClass: rviz/PointCloud2Color: 255; 255; 255Color Transformer: RGB8Decay Time: 0Enabled: trueInvert Rainbow: falseMax Color: 255; 255; 255Max Intensity: 4096Min Color: 0; 0; 0Min Intensity: 0Name: PointCloud2Position Transformer: XYZQueue Size: 10Selectable: trueSize (Pixels): 3Size (m): 0.009999999776482582Style: SquaresTopic: /camera/depth_registered/pointsUnreliable: falseUse Fixed Frame: trueUse rainbow: trueValue: true- Class: rviz/ImageEnabled: trueImage Topic: /camera/depth/image_rectMax Value: 1Median window: 5Min Value: 0Name: DepthNormalize Range: trueQueue Size: 2Transport Hint: rawUnreliable: falseValue: true- Class: rviz/ImageEnabled: trueImage Topic: /camera/ir/imageMax Value: 1Median window: 5Min Value: 0Name: irNormalize Range: trueQueue Size: 2Transport Hint: rawUnreliable: falseValue: true- Class: rviz/ImageEnabled: trueImage Topic: /camera/rgb/image_rawMax Value: 1Median window: 5Min Value: 0Name: RGBNormalize Range: trueQueue Size: 2Transport Hint: rawUnreliable: falseValue: trueEnabled: trueGlobal Options:Background Color: 48; 48; 48Default Light: trueFixed Frame: camera_depth_frameFrame Rate: 30Name: rootTools:- Class: rviz/InteractHide Inactive Objects: true- Class: rviz/MoveCamera- Class: rviz/Select- Class: rviz/FocusCamera- Class: rviz/Measure- Class: rviz/SetInitialPoseTheta std deviation: 0.2617993950843811Topic: /initialposeX std deviation: 0.5Y std deviation: 0.5- Class: rviz/SetGoalTopic: /move_base_simple/goal- Class: rviz/PublishPointSingle click: trueTopic: /clicked_pointValue: trueViews:Current:Class: rviz/OrbitDistance: 3.863161325454712Enable Stereo Rendering:Stereo Eye Separation: 0.05999999865889549Stereo Focal Distance: 1Swap Stereo Eyes: falseValue: falseFocal Point:X: 2.0370023250579834Y: -1.0987344980239868Z: -0.031386714428663254Focal Shape Fixed Size: trueFocal Shape Size: 0.05000000074505806Invert Z Axis: falseName: Current ViewNear Clip Distance: 0.009999999776482582Pitch: 0.004796733148396015Target Frame: <Fixed Frame>Value: Orbit (rviz)Yaw: 2.4886555671691895Saved: ~
Window Geometry:Depth:collapsed: falseDisplays:collapsed: falseHeight: 961Hide Left Dock: falseHide Right Dock: falseQMainWindow State: 000000ff00000000fd0000000400000000000001fa00000323fc020000000afb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f0070006500720074006900650073020000019b000001b500000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000001a6000000c900fffffffb0000000a0044006500700074006801000001e9000000ae0000001600fffffffb00000006005200470042010000029d000000c30000001600fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000019200000323fc0200000005fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073010000003d00000211000000a400fffffffb000000040069007201000002540000010c0000001600fffffffb0000000a0049006d00610067006501000002fb000000c00000000000000000fb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007800000003efc0100000002fb0000000800540069006d0065010000000000000780000002eb00fffffffb0000000800540069006d00650100000000000004500000000000000000000003e80000032300000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000RGB:collapsed: falseSelection:collapsed: falseTime:collapsed: falseTool Properties:collapsed: falseViews:collapsed: falseWidth: 1920X: 0Y: 27ir:collapsed: false

新建文件astra_camera.rviz并将上述文件保存其内,最后将文件反正如下目录即可。

# 打开功能包根目录
roscd astra_camera
# 新建文件夹
mkdir rviz
cd rviz
# 复制上述文件至astra_camera.rviz
sudo vi astra_camera.rviz


最后,即可快捷启动rviz环境了!

roscd astra_camera/
rviz -d rviz/astra_camera.rviz


4.保存点云信息

如果需要实时保存当前点云信息,可以直接运行如下节点。该节点将把当前点云信息保存至当前目录下。

rosrun pcl_ros pointcloud_to_pcd input:=/camera/depth_registered/points


保存点云信息时,要注意及时停止(Ctrl+C)否则会生产大量的pcd文件。

5.查看pcd文件

查看pcd文件需要使用特定工具,此处介绍工具pcl_viewer

# 安装
sudo apt-get install  pcl-tools

查看文件的方式如下,其中xxxx替换为所需查看的文件名。

pcl_viewer xxxx.pcd


打开后,可以使用鼠标进行放大、缩小、移动,操作同rviz一样。同时可以点击键盘上的数字键1~5切换不同的颜色。

Astra相机的ROS开发环境配置与使用相关推荐

  1. ubuntu18.04系统ros melodic 安装orbslam2,Astra相机的ROS环境

    ubuntu18.04 安装orbslam2,rosbag,Astra相机的ROS环境  ubuntu20.04系统 ros noetic下安裝orbslam2 打开下面链接: CSDNhttps:/ ...

  2. Go1 头部相机传图到自己电脑上进行开发—环境配置相关

    Go1 相机传图到自己电脑上进行开发-环境配置Trick 0 以头部相机为例发送 Go 1头部相机发送可以参考宇树B站的camera_sdk教程. 本文主要解决在自己电脑上接收图像camera_sdk ...

  3. ROS入门(ROS安装+编译器配置)详细教程 ROSneotic安装 VScode的ROS开发环境的简单配置

    ROS安装 + vscode简单配置 假设你已经安装好了Ubuntu 20.04,并且只有国内网络环境. 换源 Ctrl + Alt + T打开终端 备份并打开 sudo cp /etc/apt/so ...

  4. Windows上最全wsl2使用配置,包含基础配置、高级配置、开发工具、机器学习环境配置、机器人与自动驾驶环境配置(如Ros及百度的无人驾驶系统apollo)、服务器及Web开发环境配置等等

    Windows上最全wsl2使用配置,包含基础配置.高级配置.开发工具.机器学习环境配置.机器人与自动驾驶环境配置(如Ros及百度的无人驾驶系统apollo).服务器及Web开发环境配置等等. 文章比 ...

  5. 搭建DJI 无人机Onboard SDK ROS开发环境及测试

    搭建DJI 无人机Onboard SDK ROS开发环境及测试 功能包简介 开发环境搭建 测试功能包 连接设备 启动SDK 功能包简介 ROS功能包名称:dji_sdk 功能包功能:用于DJI 板载S ...

  6. Python开发环境配置

    好久没有写博客了,自从6月份毕业后,进入一家做书法.字画文化宣传的互联网公司(www.manyiaby.com),这段时间一直在进行前端开发,对于后端的使用很少了,整天都是什么html.css.jav ...

  7. vue如何配置服务器端跨域_vue开发环境配置跨域,一步到位

    本文要实现的是:使用vue-cli搭建的项目在开发时配置跨域,上线后不做任何任何修改,接口也可以访问 阅读时间需要三分钟 production:产品 生产环境 development:开发 开发环境 ...

  8. 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置

    1.下载和安装OpenCV SDK VS2010不用说,肯定都安装了吧.来说说当前最新的OpenCV版本2.4.8(2014年2月24日),2.4.9 (2014年4月)的下载和安装.与其说是安装,不 ...

  9. ug二次开发环境可以用c语言吗,NX二次开发(1):开发环境配置

    最近小编开始走上NX的二次开发之路,驱动我学习NX二次开发主要是兴趣使然.对NX进行二次开发,首先需要配置好开发环境,下面跟着小编踏上二次开发的道路吧! 本文以NX11.0为例,介绍如何在VS2013 ...

最新文章

  1. 如何创建一个用弹出窗口来查看详细信息的超链接列
  2. [转载] CSS模块化【封装-继承-多态】
  3. Java中的带参方法
  4. 方正ceb阅读器手机版_海信阅读手机A5Pro 经典版评测:体验和阅读完美平衡
  5. 15、sql语句集,Linux 下PHP查询mysql
  6. 第三次学JAVA再学不好就吃翔(part117)--单例设计模式
  7. zookeeper集群安装部署
  8. nginx 非80、443端口跳转到80、443
  9. apk ionic 破损_ionic3-android打包完美解决
  10. JSP自定义标签(2)
  11. Python小白的数学建模课-11.偏微分方程数值解法
  12. win10系统对计算机要求,Win10系统对电脑配置要求 win10专业版教程
  13. 基于JDK1.8的JVM 内存结构【JVM篇三】
  14. 学生成绩信息管理系统
  15. 移植tas5707功放芯片驱动注意事项
  16. 将texlive带的字体安装进linux系统字体库
  17. 使用Photoshop CS 扣公章
  18. 3650m5设置u盘启动_联想启天M415设置u盘启动步骤(支持uefi/bios双启动)
  19. 汇编程序语言 输入数字n和n个数字并对n个数字排序(带注释)
  20. flex 最后一行 左对齐

热门文章

  1. LEARNING_CRYPTO|搭建个人以太坊测试网络+测试Solidity部署(Ganache+truffle)
  2. Golang教程:(十三)Map
  3. StNet: Local and Global Spatial-Temporal Modeling for Action Recognition
  4. 谷歌浏览器打不开网址解决办法
  5. Mac病毒安全防护软件推荐:Symantec Endpoint Protection
  6. 从概念到底层技术,一文看懂区块链架构设计(附知识图谱)
  7. 火车票购买问题模拟-同步
  8. Android studio 打开monitor 出现error提示 的解决办法 特别是使用了JDK-9
  9. 数据库、表、基本增删改查
  10. Pytorch随记(3)