赞
踩
节点(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文件修改
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。