我想使用pygazebo获得关节的当前关节角度。我可以使用以下方法在关节上设置力:Controlling a joint 而现在我想做一个PID控制器。
我这样做了:
import pygazebo
import pygazebo.msg.joint_cmd_pb2
from pygazebo.msg.gz_string_pb2 import GzString
import trollius
from trollius import From
@trollius.coroutine
def callback(data):
message = pygazebo.msg.gz_string_pb2.GzString.FromString(data)
print('Received message:', message.data)
manager = pygazebo.Manager(('localhost', 11345))
manager.subscribe('/gazebo/default/my_robot/joint',
'gazebo.msgs.GzString',
callback)
但是它给了我一个AssertionError:assert self._local_ready.is_set()。我不知道我应该在manager.subscribe字段中放置什么。我认为这是我的错误所在。
THX。
答案 0 :(得分:0)
我只是查看了pygazebo.py中的代码并向后追踪了这些调用。管理器创建了几个Connection对象,一个主服务器和一个服务器。我猜它使用主连接连接到gazebo服务器,服务器连接绑定到它自己的端口以接收传入的请求。
据我所见,你需要打电话。
manager.start()
在调用subscribe方法之前。这将使管理器连接到gazebo服务器并绑定到本地端口以接收输入数据。
我希望它有所帮助。