ROS Error. quot;Error processing request: signal only works in main threadquot;(ROS错误。处理请求时出错:信号仅在主线程quot;中工作。)
问题描述
我正在使用Robot操作系统(ROS),并尝试创建一个服务器/客户端,其中服务器将引导客户端指定的ROS节点。要执行"启动",我使用的是基于以下建议的rosLaunch:http://wiki.ros.org/roslaunch/API%20Usage
我可以在窗口中运行rocore,然后我可以运行启动良好的服务器。但是,只要我尝试通过客户端发送要引导的节点名,就会收到以下错误:
"错误处理请求:信号仅在主线程中工作"
然后它指向一些我尚未追踪到的各个领域的文件。
我已经尝试在我为要启动的节点(在本例中为turtlesim_node和turtle_telop_key)单独创建的每个启动文件上使用一个简单的rosunch调用,它们启动良好,只需运行rosLaunch[Package]turtlesim_Launch.Launch等即可运行。
以下是我的服务器的代码:
以下是我的客户端的代码:
这是我的srv文件:
最后,以下是我为启动海龟模拟器而创建的两个启动文件:
turtlesim_Launch.Launch
Turtle_Teleop_Launch.Launch
我在谷歌上搜索了一下,没有发现ROS有类似的问题(尽管Django等有一些类似的错误,但它们没有关联)。
感谢您的帮助!
附注。值得注意的是,当出现错误时,我会转到第34行(process=Launch.Launch(Node))。
推荐答案
实际上是文档中提到的
您没有从Python主线程调用init_node()。Python仅允许从主线程注册信号。
查看此处rospyOverviewInitialization and Shutdown
这篇关于ROS错误。处理请求时出错:信号仅在主线程";中工作。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!