Я использую ROS в своем проекте, и мне нужно время от времени отправлять сообщение. У меня есть эта функция:Сообщение ROS отправлено, но не получено
void RosNetwork::sendMessage(string msg, string channel) {
_mtx.lock();
ros::Publisher chatter_pub = _n.advertise<std_msgs::String>(channel.c_str(),10);
ros::Rate loop_rate(10);
std_msgs::String msgToSend;
msgToSend.data = msg.c_str();
chatter_pub.publish(msgToSend);
loop_rate.sleep();
cout << "Message Sent" << endl;
_mtx.unlock();
}
И у меня есть это в Python:
def callbackFirst(data):
#rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.data)
print("Received message from first filter")
def callbackSecond(data):
#rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.data)
print("Received message from second filter")
def listener():
rospy.Subscriber("FirstTaskFilter", String, callbackFirst)
print("subscribed to FirstTaskFilter")
rospy.Subscriber("SecondTaskFilter", String, callbackSecond)
print("subscribed to SecondTaskFilter")
rospy.spin()
Слушатель нить в питона. Я получаю функцию sendMessage
(я вижу в терминале «Сообщение отправлено» много раз), но я не вижу, что скрипт python получает сообщение.
Обновление: я проверил обратный вызов python с rostopic pub /FirstTaskFilter std_msgs/String "test"
, и это работает отлично.
Любые мысли?
Это все. Благодаря! – Javi