1. 磐创AI首页
  2. Medium

在机器人操作系统(ROS) - 中使用带Gazebo的OpenCV第1部分 - 显示实时视频源…


我希望你把一切都准备好了。如果没有,请按照本系列的第0部分进行设置,然后回到这里。

链接到本系列的第0部分

链接到GitHub回购

它包含本教程系列中使用的所有脚本、模型和坐标文件。

推出露台世界

在运行下一个命令之前,请确保您已经运行了git提取并获取了位于{YOUR_WORKSPACE_NAME}/devel/文件夹中的setup.bash文件。

然后,要启动Gazebo World,请在终端中运行此命令。

$rosLaunch pkg_cv_ros_Tutorial_by_dhanuzch 1_world.Launch

这应该会启动带有松树、相机和TurtleBot的凉亭世界。它应该看起来像这样的…

如果你能看到这个,恭喜你!到目前为止,您已经正确地设置了所有内容。

或者,如果您想启动Gazebo world并开始运行开箱即用的脚本。那就跑吧

$rosLaunch pkg_cv_ros_Tutorial_by_dhanuzch 1_world_and_script.Launch

如果您想了解代码是如何工作的,请继续阅读…

守则-解释。

此代码在我的GitHub资源库中作为包的一部分提供my GitHub repo

要运行此脚本,请在终端…中运行此命令

$ rosrun pkg_cv_ros_tutorial_by_dhanuzch camera_read.py

导入库

第1行称为shebang(或)hashbang,您通过它告诉您的机器使用特定的解释器。这在ROS中是必需的,因为我们的脚本将作为可执行文件运行。如果没有这一点,您的脚本将无法正确执行。

第3&4行rospy允许我们将ROS特性与Python接口。CV2导入OpenCV库,我们将使用该库进行图像处理。

第6行是ROS包,它为最常用的传感器定义消息。访问此链接可查看邮件定义。Visit this link to check out the message definition.

第7行cv_bridge是一个包,它将ROS图像消息转换为OpenCV图像,反之亦然。继续阅读,了解我们是如何实施的。openCV images

main()函数和__init__函数

第42行使用名称CAMERA_READ初始化ROS节点。当匿名=True时,将为节点名称末尾分配一个随机数,以使其唯一。因为我们只有一个同名的节点,所以匿名设置为false。

第43行调用main函数。

当主函数调用…时

第32行调用类CAMERA_1的__init__函数,该函数创建名为image_sub的实例变量,并订阅/Camera_1/image_raw主题。

该主题具有类型为Image的消息,每次有新消息到达时,它都会调用callback()函数。

第35行防止ROS节点关闭,并且它将向其他线程产生活动。

第39行销毁所有创建的OpenCV窗口。

callback()函数

最后,我们将查看完成工作的函数。

第18行将ROS图像消息转换为BGR8编码的CV2图像。

例如,假设您想要将RGB图像转换为灰度图像,您可以使用mon8而不是bgr8。如果您不确定这一点,可以将该值设置为desired_coding=“passthrough”

第24行图像输出大小调整为360X640像素。如果我们试图在不缩小比例的情况下显示相机的输出,很有可能它对于显示器来说太大了,您可能无法看到整个窗口。

如果您在上图中看到,输出的底部被切断。因此,建议您缩小图像的比例。

第27行显示调整大小的图像,并将窗口名称设置为“Camera Output Resize”

关注我们的机器人表情包-新闻-提示-项目等

https://www.instagram.com/everythingrobotics/https://www.instagram.com/everythingrobotics/

下一步是什么?

在本系列的最后一部分,我们将扫描Gazebo世界中的二维码。

请在评论区提出您的问题!再见:)

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/07/%e5%9c%a8%e6%9c%ba%e5%99%a8%e4%ba%ba%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9fros%e2%80%8a-%e2%80%8a%e4%b8%ad%e4%bd%bf%e7%94%a8%e5%b8%a6gazebo%e7%9a%84opencv%e7%ac%ac1%e9%83%a8%e5%88%86%e2%80%8a-%e2%80%8a/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息