Можно ли создать узел ROS вне рабочей области catkin? - PullRequest
0 голосов
/ 14 мая 2018

Я хочу создать узел издателя ROS вне рабочей области catkin.Можно ли его создать?

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Конечно можно.Относитесь к ROS как к любой другой библиотеке cpp или пакету python.

В python вы должны хранить PYTHONPATH переменную среды, указывающую на пакеты ros в /opt/ros/kinetic/lib/python2.7/dist-packages.

В cpp вы должны указать компиляторугде искать (/opt/ros/kinetic/include), библиотеки (/opt/ros/kinetic/lib) и какую библиотеку импортировать.Для простейшего применения -lroscpp -lrostime -lrosconsole должно быть достаточно.Пример:

g++ node.cpp -o node -I/opt/ros/kinetic/include -L/opt/ros/kinetic/lib -lroscpp -lrostime -lrosconsole

Помните, что вам все еще нужны переменные среды ros, такие как ROS_MASTER_URI.

Однако я не знаю, существует ли простой способ создания пользовательских сообщений ros без использованияcatkin_make и файлы cmake.

0 голосов
/ 14 мая 2018

Да, в Python вы можете писать ROS-узлы вне вашей рабочей области catkin.

Запустите ваш roscore, а затем запустите скрипт Python в новом терминале, как обычно python filename, и он будет работать так же, как если бы вы поместили его в рабочее пространство catkin, построили и получили его.

Я успешно создал узлы подписчика и издателя и запускаю их на реальном TurtleBot2 без того, чтобы узлы находились внутри рабочей области catkin.

Я не думаю, что описанный мною метод работает на C ++. Это работает только для Python. В C ++ вам придется связывать библиотеки во время компиляции. Итак, проверьте это. Например, мы делаем g ++ filename.cpp -lm, где -lm связывает математическую библиотеку, которая будет использоваться в filename.cpp, поэтому вам может потребоваться проверить, как это сделать. С другой стороны, проще просто добавить файл в рабочее пространство catkin или просто перейти на Python.

Вы должны включить ros / ros.h и std_msgs / message_name.h, где message_name заменяется любым сообщением, которое вы используете в коде. Вы можете найти эти файлы где-нибудь, или вы можете получить исходный код файлов онлайн, выполнив поиск.

...