1. Установка Ubuntu (либо docker+WSL)
  2. Установка ROS

    1. устанавливаем версию -desktop-full (http://wiki.ros.org/noetic/Installation/Ubuntu)
    2. запуск окружения ROS

      Чтобы в терминале можно было работать с ROS, нужно его запускать каждый раз…

      или добавить source /opt/ros/noetic/setup.bash в конфигурационный файл .bashsrc

      комада для этого

      echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc

      source ~/.bashrc

  3. Устанвока IDE

Чтобы установить редактор VS Code выполните sudo snap install code --classic

В VS code имеются полезные расширения, которые облегчат работу (их желательно установить): Python, Cmake, ROS.

установить roscore можно командой sudo apt install python3-roslaunch (Если вдруг его нет) printenv | grep ROS - выводит все важные параметры из env

  1. Откройте файл ~/.bashrc в текстовом редакторе и проверьте содержимое.
  2. Запустим ROS Master

    Для это воспользуемся командой roscore

  3. В новом терминале (не закрываем предыдущий) попробуем запустить что-то, для этого воспользуемся уже установленным пакетом rospy_tutorials

    rosrun rospy_tutorials talker (rosrun запускает ноду из пакета)

    Мы должны уваидеть, как talker публикует сообщения с содержанием Hello world

  4. Откроем еще один терминал и запустим в нем другую ноду из того же пакета

    rosrun rospy_tutorials listener

  5. Воспользуемся утилитой rqt_graph, которая показывает вычислительный граф. Таким образом, мы можем наглядно видеть, как организован обмен данными.

  6. Остановим все ранее запущенное и запустим другую ноду из другого пакета, воспользовавшимь командой

    rosrun turtlesim turtlesim_node

    Снова запустим rqt_graph и проверим вычислительный граф, что мы видим?

  7. Чтобы черепашка двигалась, нам необходимо отправить “правильное” сообщение в “правильный” топик.

    Как определить, в какой топик нам надо отправить сообщение?

  8. Как определить тип сообщения? Для этого можно воспользоваться командой

    rostopic type [topic_name]

    далее можно поискать в документации информацию по названию типа сообщения, либо воспользоваться командой

    rosmsg show [msg_type_name]

  9. Отправлять сообщения можно из терминала, или из другой ноды. Рассмотрим вариант отправки сообщения из терминала:

    rostopic pub [topic] [msg_type] [args]

    Чтобы значения подставились дефолтные, можно нажать TAB TAB

  10. Воспользуемся вторым способом (отправка сообщений из другой ноды) новом терминале запустим rosrun turtlesim turtle_teleop_key и снова посмотрим на граф.

Untitled

В итоге можно увидеть, что узел /teleop_turtle публикует сообщения в топик /turtle1/cmd_vel а который подписан /turtlesim и.д.

  1. Также можно посмотреть в терминале, что именно публикуется в топик при помощи команды

    rostopic echo /turtle1/pose

  2. Также можно посмотреть, с какой частотой публикуются сообщения

    rostopic hz /turtle1/pose

  3. Поток данных зачастую удобнее смотреть в виде графика, для этого можно воспользоваться иструментом rqt_plot

    rosrun rqt_plot rqt_plot

Исследование пакета

Задание 1: найти расположение пакета rospy_tutorials

Задание 2: найти список всех установленных пакетов ROS

Задание 3: найти файлы, которые запускались при вызове ноды listener и publisher