У меня есть веб-приложение JavaScript, которое публикует / подписывается на ROS с помощью rosbridge_suite / web sockets.
Я могу успешно публиковать / подписываться на темы с помощью std_msgs / String, std_msgs / Int32 и т. Д., Поэтому я знаю, что с моим соединением все в порядке. У меня проблемы с умением форматировать данные для публикации в теме, которая принимает геометрию / Point32.
Вот пример:
const topic = new ROSLIB.Topic({
ros, // defined elsewhere
name: '/my_topic',
messageType: 'geometry_msgs/Point32'
});
topic.publish({ data: { x: 1.0, y: 1.0, z: 1.0 } });
Затем я запускаю rostopic echo /my_topic
, но не могу его показать. Опять же, все мои другие темы работают, и они структурированы одинаково. Я и мои коллеги закончили тем, что изменили тип messageType на строку и проанализировали значения, но я действительно считаю, что это возможно. Есть идеи?
Вот что я пробовал:
publish({ data: { x: 1.0, y: 1.0, z: 1.0 } })
publish({ x: 1.0, y: 1.0, z: 1.0 })
publish(JSON.stringify({ x: 1.0, y: 1.0, z: 1.0 } }))
publish({ data: JSON.stringify({ x: 1.0, y: 1.0, z: 1.0 } }) })
publish({ data: 'x: 1.0, y: 1.0' })
const coords = ROSLIB.Message({
x: 1.0,
y: 1.0,
z: 1.0
});
publish({ data: coords });
publish(coords);
...
Вы поняли идею.
Я использую ROS Kinetic.