0
$\begingroup$

I had a problem with initializing a ROS node in python in a larger project. The following minimum reproducible example has the same issue:

#!/usr/bin/env python

import rospy

if __name__ == '__main__':
    print("Init node")
    rospy.init_node('testNode', anonymous=True)
    print("Node initialized")

Only the "Init node" is printed, and the script freezes in the rospy.init_node() call.

roscore is already running, confirmed by rostopic list returning the /rosout topic.

I have tried reinstalling ros and all python packages, as well as rebuilding the ros project.

When debugging using pdb, the program is stuck in the following loop:

while hasattr(f, "f_code"):

    co = f.f_code
    filename = os.path.normcase(co.co_filename)
    if filename == file_name and f.f_lineno == lineno and co.co_name == func_name:
    if f.f_back:
    f = f.f_back

in the following path: */opt/ros/noetic/lib/python3/dist-packages/rosgraph/roslogging.py(64)findCaller() *

Any help would be greatly appreciated!

EDIT:

It is also not possible to ctrl + c to stop the process, and I have to close the terminal for it to stop.

If I comment out the call to logger.info("init_node, name[%s], pid[%s]", resolved_node_name, os.getpid()) which leads to the infinite loop as shown above, the program instead gets stuck in the following loop:

while not node.uri and not is_shutdown():
    time.sleep(0.00001) #poll for XMLRPC init

in /opt/ros/noetic/lib/python3/dist-packages/rospy/impl/init.py(105)start_node()

$\endgroup$
1
  • 1
    $\begingroup$ This is a highly used part of the system by a lot of users. Based on where you're having issues are you on a non-standard system? What method have you used to install your system? What is your larger system? And what else has your larger system changed about your deployment from a standard system. There has to be something different on your system than the systems on which this has been running for the last 5 years or so since this code was last changed. Please edit your question to add this additional information. $\endgroup$
    – Tully
    Commented Feb 12 at 22:05

1 Answer 1

0
$\begingroup$

Fixed by running

sudo apt-get remove ros-* 

then reinstalling using http://wiki.ros.org/noetic/Installation/Ubuntu, and creating a new conda environment. Not sure what actually caused the issue.

Edit (new): I had the same errors while trying to publish robot end-effector poses from one python node (running on a base conda env), subscribing to them in another node and doing some inference with an already trained Network. I was running the inference node in a conda environment containing the packages i had used for learning, call it (learning) for now. (essentially was running 2 nodes, each on a different conda env)

I didn't want to remove ros, as it can be daunting.

The issue i saw was that some rospy packages were missing in (learning). I did not try to add the rospy packages on that environment, I just added the missing ones i needed to run that code on the base environment and it works fine now. (since the base environment was already able to initialize nodes for publishing poses)

It makes sense to work with only 1 conda environment on rospy, since it is very likely to face issues with the packages.

$\endgroup$

Not the answer you're looking for? Browse other questions tagged or ask your own question.