如果是在笔记本中的虚拟机中运行,需要将笔记本自身的摄像头禁用
此电脑-管理-设备管理器-照相机-禁用笔记本自带摄像头

1、解决rqt问题

rqt_graph:未找到命令

sudo apt-get install ros-melodic-rqt
sudo apt-get install ros-melodic-rqt-graph
sudo apt-get install ros-melodic-rqt-common-plugins

如果出现
W: 仓库 “https://mirrors.tuna.tsinghua.edu.cn/ubuntu xenial Release” 没有 Release 文件。
N: 无法认证来自该源的数据,所以使用它会带来潜在风险。
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。
则需要 更新软件源

sudo gedit /etc/apt/sources.list

ubuntu18.04—aliyun

deb http://mirrors.aliyun.com/ubuntu bionic main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu bionic-updates main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu bionic-security main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu bionic-proposed main multiverse restricted universe
deb http://mirrors.aliyun.com/ubuntu bionic-backports main multiverse restricted universe

2摄像头标定

参考室外自主降落
在这里插入图片描述
1、安装相机校准功能包

sudo apt-get install ros-melodic-camera-calibration
sudo apt-get install ros-melodic-uvc-camera

首先启动相机节点,如下命令启动相机ID=0
需要在Prometheus的虚拟机下运行

roslaunch prometheus_detection web_cam0.launch  

然后利用ros自带的标定程序对相机进行标定

rosrun camera_calibration cameracalibrator.py --size 9x6 --square 0.0205 image:=/prometheus/camera/rgb/image_raw

其中:size为标点板尺寸(横纵向标点的个数),square为每个方格宽度(即两个标点之间的距离),注意单位是米,image:=相机话题
如果是用我们给的标定图片并且用A4纸打印出来,则size后的值为9*6 ,square后面的值以自己打印出来的两个标点的实际量测距离为准,单位是米,一般大小在0.0200左右。
标定程序启动后,会出现如下界面 在没有标定成功之前,右边的按键都为灰色,不能点击。为了提高标定的准确性,应该让标定板出现在摄像头视野范围内的各个区域,界面右上角会提示标定进度。标定过程标定板的移动可以参考此视频:Calibrating a Monocular Camera with ROS
X:标定板在摄像头视野中的左右移动
Y:标定板在摄像头视野中的上下移动
Size:标定板在摄像头视野中的前后移动
Skew:标定板在摄像头视野中的倾斜转动
不断在视野中移动标定板,直到“CALIBRATE”按钮变色,表示标定程序的参数采集完成。为了提高标定的精度,建议在X,Y,Size,Skew四个进度条都变为绿色,数据采集足够后,再按下“CALIBRATE”按钮。此时可以在终端看见一共采集了多少个有效点,建议采集到80个点左右,以保证标定的精度。 点击“CALIBRATE”按钮,标定程序开始自动计算摄像头的标定参数,这个过程需要等待一段时间,界面可能会变成灰色无响应状态,注意千万不要关闭。
在这里插入图片描述
等待几分钟后,计算出结果会自动在终端打印出来显示,这时dispaly方框又会由黑白恢复为彩色。如下图所示
将得到的参数写入如下文件(有关目标尺度的预定义也在这个文件中): amovlab_ws/src/p450_experiment/config/prometheus_detection_config/camera_param.yaml 具体数字对应可参考下图
在这里插入图片描述
在这里插入图片描述
请根据自己的相机节点选择(如果是上面所用的单目摄像头,则命令如下)

roslaunch prometheus_detection web_cam0.launch

运行检测节点

roslaunch prometheus_detection aruco_det_webcam_640x480.launch

查看检测效果(可视化)

rqt_image_view

弹出图形界面后,选择对应要显示的图像消息,选择下面红框内的这个消息可以既显示出图像又显示出二维码检测结果。

打印二维码实时检测结果

rostopic echo /prometheus/object_detection/landpad_det

终端上打印出的消息如下图所示: position后面三个值分别代表摄像头检测到的二维码在摄像头坐标系下的坐标的X,Y,Z的值。我们可以移动二维码看所显示的位置值是否显示出真实实际二维码相对于摄像头的位置,如果有较大差距,需要更改摄像头配置参数文件里的参数。 yaw_error显示的是偏航,所以是可以检测出这个二维码的 X Y Z 以及偏航也就是转的角度。
在这里插入图片描述
如果有较大大差距
一,重新标定,修改相机参数和畸变参数
二,确认参数文件中二维码边长,降落板边长为实际的真实值(这个非常重要),如果不是,修改为真实值,否则直接影响到二维码位置估计。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐