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

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

创建功能包

cd ~/catkin_ws/src
#catkin_create_pkg package_name [dependency1] [dependency2]
catkin_create_pkg basic_topic roscpp std_msgs

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()

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值