我希望你把一切都准备好了。如果没有,请按照本系列的第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/08/%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-2/