May I ask that how to make the data from one subscriber call back function available to another subscriber call back function. I tried to add Global variable for the call back function, but it do not seems to work. E.g
rospy.Subscriber("/camera/color/image_raw", Image, showImg, queue_size=1, buff_size=2**24) # 2 power of 24
rospy.Subscriber("/camera/aligned_depth_to_color/image_raw", Image, showDepth, queue_size=1, buff_size=2**24)
global WidthPixel, HeightPixel, depth, Width, Height
global xgOri, ygOri, xg, yg, wg, hg,count, countMax, xgOld, ygOld,DistanceMovX,DistanceMovY,prediction,xgN,ygN,velocityXN,velocityYN
I still getting the error message that “NameError: global name ‘HeightPixel’ is not defined”
May I know is there a way to solve this.
Thank you for reading this post.
You must return the value, use keyword ‘return’ at end of function along with the variables you want to return.
This link might be useful:using_return_in_functions
Also you must call the function again in the new function.
Perhaps you are not using the keyword
global correctly (not sure because I can’t see the complete code).
If you want any variable to be accessible to both functions, just define it outside both functions. It could be like this (just an example - do not copy ):
# the variables below will be available in both functions
widthPixel = 0.0
depth = 0.0
# because we need to modify `depth` we use the word global to reference it
depth = data2.depth
# However because we are just reading `widthPixel` we don't need to "global" it
if widthPixel > 0.0:
whatever = depth/widthPixel
# because we need to modify `widthPixel` we use the word global to reference it
widthPixel = data.width
# However because we are just reading `depth` we don't need to "global" it
whatever = widthPixel * depth
whatever variable defined in each function are local to the defining functions, but
depth are available to both.
Thank you for the advice.