当前位置:   article > 正文

yolo 旋转目标检测 rotation detect -ros-节点Node-realsense相机D435i-ABB2600-topic-service_yolo旋转目标检测

yolo旋转目标检测

ROS 基础

节点(node)
是一个通过调用ROS客户端库(e.g. roscpp, rospy, roslisp)的API执行计算的进程,一个节点可以通过ROS的话题、服务和动作与其他的节点进行通信。一个机器人可以包含很多个节点,例如:一个节点处理相机的图像,一个节点处理来自机器人的串行数据,一个节点用来计算里程计信息。另外,使用节点可以使机器人系统具有容错能力,因为即使一个节点挂掉了,其他的节点依然可以正常运行的话,整个机器人系统仍然是可以工作的。机器人使用节点的另外一个好处就是降低了复杂度,也便于调试,因为一个节点只负责一项功能。

发布者(publisher)
发布者是在基于话题(topic)的通信中只负责进行消息的发送的节点(node),发布者节点要想通过话题发送消息,需要先在节点管理器(master)那里进行相关信息的注册(registration)。

订阅者(subscriber)
订阅者是在基于话题的通信中只负责进行消息的接收的节点(node),订阅者节点要想通过话题订阅消息,也需要先在节点管理器(master)那里进行相关信息的注册(registration)。

节点管理器(master)
节点管理器负责基于话题的通信中发布者节点和订阅者节点进行通信前的注册,以便发布者节点和订阅者节点在实现基于话题通信前进行准确的连接。

话题(topic)
话题是一种被命名的单项通信的总线,话题的名称具有唯一性。

消息(.msg)
消息可以理解为一个数据块,数据块包含.msg消息文件中定义的基本数据
e.g. 定义机器人末端执行器空间位置的消息可以为:float x float y float z

发布(publish)
发布是发布者节点通过话题发布消息的过程。

订阅(subscribe)
订阅是订阅者节点通过同一个话题话题订阅来自发布者节点发布的消息。

创建工作空间

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace 
cd ..
catkin_make
  • 1
  • 2
  • 3
  • 4
  • 5

创建功能包

cd ~/catkin_ws/src
#catkin_create_pkg package_name [dependency1] [dependency2]
catkin_create_pkg basic_topic roscpp std_msgs
  • 1
  • 2
  • 3

11111: 使用ROS订阅realsense相机图像话题和RGB-Depth对应话题,并输出图像中心点坐标的深度

import rospy
from std_msgs.msg import String
from sensor_msgs.msg import Image, CameraInfo
import message_filters
import cv2
from cv_bridge import CvBridge, CvBridgeError
 
def callback(data1,data2):
    bridge = CvBridge()
    color_image = bridge.imgmsg_to_cv2(data1, 'bgr8')
    depth_image = bridge.imgmsg_to_cv2(data2, '16UC1')
    cv2.imshow('color_image',color_image)
    cv2.waitKey(1000)
    c_x = 320
    c_y = 240
    real_z = depth_image[c_y, c_x] * 0.001  
    real_x = (c_x- ppx) / fx * real_z
    real_y = (c_y - ppy) / fy * real_z
    rospy.loginfo("potion:x=%f,y=%f,z=%f",real_x,real_y,real_z) #输出图像中心点在相机坐标系下的x,y,z
 
if __name__ == '__main__':
    global fx, fy, ppx, ppy #相机内参
    fx = 609.134765 
    fy = 608.647949
    ppx = 312.763214
    ppy = 240.882049
 
    rospy.init_node('get_image', anonymous=True)
 
    color = message_filters.Subscriber("/camera/color/image_raw", Image)
    depth = message_filters.Subscriber("/camera/aligned_depth_to_color/image_raw", Image)
    # color_depth = message_filters.ApproximateTimeSynchronizer([color, depth], 10, 1, allow_headerless=True)  # 接近时间同步
    color_depth = message_filters.TimeSynchronizer([color, depth], 1)  # 绝对时间同步
    color_depth.registerCallback(callback)  
    #同时订阅/camera/color/image_raw和/camera/aligned_depth_to_color/image_raw话题,并利用message_filters实现话题同步,共同调用callback
    rospy.spin()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36

222222: Yolov 网络的detect.py文件修改

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/960270
推荐阅读
相关标签
  

闽ICP备14008679号