картограф+черепаха+хокуйо|Конфигурация установки

алгоритм

Система: ubuntu 14.04+ros индиго или ubuntu 16.04+ros кинетическая Платформа: черепаха-бот2 Датчик: лазер hokuyo UTM-30LX

> В этой статье предполагается, что Ubuntu, ros и различные пакеты ros, связанные с Turtlebot, были успешно установлены. В этой статье в основном рассказывается, как установить и настроить картограф + черепаху + хокуйо, включая установку картографа, картографа_ros, картографа_туртлебота и использование картографа в среде моделирования беседки. Последующая работа будет продолжена время от времени.


@[toc]

1. Установить картограф, картограф_рос, картограф_туртлбот

1.1 cartographer+cartographer_ros

Увидев эффект удара картографом настоящего робота от моего младшего брата, я сразу же вернулся к учебе. Поскольку я не знал вначале, исследователи Google выпустили cartographer_turtlebot, чтобы облегчить применение картографа на роботах-черепашках. Итак, для начала я следуюОфициальный сайт Google cartographer_rosСпособ установки, разовый успех (открыть научный интернет-инструмент). Позже выяснилось, что былиЕще один популярный способ установки, я называю его народным методом, проверено лично, также эффективен. Поэтому протестировал, оба способа установки эффективны. Преимущества и недостатки каждого из них перечислены ниже:

- Установка официального сайта Google Преимущества: Как и при установке в один клик, все установочные пакеты находятся в одном рабочем пространстве, которым легко управлять. Недостатки: некоторые шаги требуют научного доступа в Интернет (через стену), чтобы быть успешными.

- Гражданский способ установки Преимущества: каждый шаг отделен, повышена управляемость, можно устанавливать по одной библиотеке за раз. Недостатки: Источник github на его основе может быть немного староват, я не знаю, обновил ли его автор.

Вы можете выбрать любой, чтобы попробовать, если нет, просто переключитесь на другой.在安装过程中,会出现有些库很难安装成功,甚至找不到该库,这是因为ros的国内镜像源的问题,更换源就行了。本次安装,我换了好几次源(易科的、USTC、以及清华大学)。有些库在易科的源下面卡半天,但是换成在USTC源下面很顺利的就安装成功。这是我想强调给大家的,不要盲目的试,不是什么神秘的现象,是你的ros镜像源的问题。重点!!!!

1.2 cartographer_turtlebot

Я пыталсяКак установить официальный сайт, установка не удалась. Я также попробовал метод git clone для локального и перекомпилированного, но это не увенчалось успехом. Вот как его успешно установить после бесчисленных неудач.

Особенность способа установки на официальном сайте в том, что это можно сделать в один клик. Например, когда вы устанавливаете cartographer_ros, картограф и другие зависимости устанавливаются одновременно. Cartographer_turtlebot зависит как от cartographer, так и от cartographer_ros.При установке cartographer_turtlebot официальный сайт снова установит cartographer, cartographer_ros и другие зависимые пакеты.Это то, на что следует обратить внимание при установке с помощью учебника официального сайта Google. Он форвард включительно, то есть в идеале, мне нужно только установить cartographer_turtlebot по методике официального сайта, выполнить все команды, и не нужно заранее устанавливать отдельно cartographer_ros, картограф и т.д. Однако, после того, как я удалил установленные рабочие пространства картограф и картограф_рос, я установил их в строгом соответствии с официальным сайтом cartographer_turtlebot, но результат был безрезультатным (к счастью, перед удалением я сделал резервную копию всех рабочих пространств, поэтому резервное копирование очень важно!!! ).我本来已经放弃使用cartographer_turtlebot了,而是选择研究cartographer_turtlebot里面的launch文件、configuration_files里的文件来模仿它自己写配置文件。Позже выяснилось, что файл запуска зависит только от ноды, сгенерированной в пакете cartographer_turtlebot, а это значит, что в пакете только одна нода. Итак, я создал свое собственное рабочее пространство и скомпилировал этот файл узла .cc. Это было действительно успешно позже, и подробный процесс приведен ниже.

Ниже показано, как я установил cartographer_turtlebot, исходя из того, что cartographer_ros уже установлен.

- 1. Построить рабочее пространство ros

mkdir -p ~/cartographer_turtlebot_ws/src
cd ~/cartographer_turtlebot_ws/src
catkin_init_workspace
cd ..
catkin_make

Примечание. После создания нового рабочего пространства не забудьтеsource ~/cartographer_turtlebot_ws/devel/setup.bashдобавить в~/.bashrcв файле

- 2. Создать новый пакет

cd ~/cartographer_turtlebot_ws/src
catkin_create_pkg cartographer_turtlebot
cd ..
catkin_make

- 3. git клонируйте пакет cartographer_turtlebot в локальный

cd ~/Download
git clone https://github.com/googlecartographer/cartographer_turtlebot

- 4. Воля~/Download/cartographer_turtlebot/cartographer_turtlebotтри подпапки в папкеcartographer_turtlebot(переименовывается в src при копировании в папку назначения),configuration_files,launchСкопировать все в~/cartographer_turtlebot_ws/src/cartographer_turtlebot. Переименуйте скопированную подпапку cartographer_turtlebot в src. Каталог файлов в это время показан ниже在这里插入图片描述

- 5. Правильно~/cartographer_turtlebot_ws/src/cartographer_turtlebot/CMakeLists.txtФайл изменен, и содержимое измененного файла размещено непосредственно ниже, просто скопируйте содержимое, чтобы заменить исходный файл CMakeLists.txt.

cmake_minimum_required(VERSION 2.8.3)
project(cartographer_turtlebot)

# Compile as C++11
add_compile_options(-std=c++11)

set(PACKAGE_DEPENDENCIES
  roscpp
  roslib
  sensor_msgs
)

find_package(catkin REQUIRED COMPONENTS ${PACKAGE_DEPENDENCIES})
catkin_package(
)

include_directories(include ${catkin_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS})
add_executable(cartographer_flat_world_imu_node "src/flat_world_imu_node_main.cc")
target_link_libraries(cartographer_flat_world_imu_node ${catkin_LIBRARIES})
add_dependencies(cartographer_flat_world_imu_node ${catkin_EXPORTED_TARGETS})

~/cartographer_turtlebot_ws/src/cartographer_turtlebot/package.xmlПока не вносите изменения.

Если позже возникнет ошибка, вы можете повторить попытку содержимого файла.<buildtool_depend>catkin</buildtool_depend>Добавьте следующие строки после него.

  <build_depend>sensor_msgs</build_depend>
  <build_export_depend>sensor_msgs</build_export_depend>
  <exec_depend>sensor_msgs</exec_depend>

- 6. Скомпилировать рабочее пространство

cd ~/cartographer_turtlebot_ws
catkin_make

Неудивительно, что компиляция завершится.

2. Тестовый набор данных

2.1 набор данных cargrapher_ros

- 1. Загрузите набор данных

# Download the 2D backpack example bag.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_2d/cartographer_paper_deutsches_museum.bag
# Download the 3D backpack example bag.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/backpack_3d/with_intensities/b3-2016-04-05-14-14-00.bag

- 2. Тестовый набор данных

# Launch the 2D backpack demo.
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=${HOME}/Downloads/cartographer_paper_deutsches_museum.bag

Некоторые из эффектов показаны ниже:在这里插入图片描述

# Launch the 3D backpack demo.
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=${HOME}/Downloads/b3-2016-04-05-14-14-00.bag

Если данные слишком велики на 9 G, они не запустятся.

2.2 cartographer_turtlebot

- 1. Загрузите тестовый набор данных

# Download the example bag.
wget -P ~/Downloads https://storage.googleapis.com/cartographer-public-data/bags/turtlebot/cartographer_turtlebot_demo.bag

- 2. Результаты испытаний

# Launch the 2D LIDAR demo.
roslaunch cartographer_turtlebot demo_lidar_2d.launch bag_filename:=${HOME}/Downloads/cartographer_turtlebot_demo.bag

Некоторые из результатов показаны ниже:在这里插入图片描述

# Launch the 2D depth camera demo.
roslaunch cartographer_turtlebot demo_depth_camera_2d.launch bag_filename:=${HOME}/Downloads/cartographer_turtlebot_demo.bag

Некоторые из результатов показаны ниже:在这里插入图片描述

# Launch the 3D depth camera demo.
roslaunch cartographer_turtlebot demo_depth_camera_3d.launch bag_filename:=${HOME}/Downloads/cartographer_turtlebot_demo.bag

Некоторые из результатов показаны ниже:在这里插入图片描述Это должно быть проблемой, но cartographer_turtlebot должен быть успешно установлен.

3. turtlebot+hokuyo+cartographer in gazebo

Когда физические роботы дороги и не очень удобны для переноски, исследования роботов в программном обеспечении для моделирования являются хорошей альтернативой. В платформе моделирования роботов беседка широко используется из-за ее отличного физического движка и полного интерфейса с ros. В этом разделе в основном рассказывается об использовании беседки для создания среды моделирования черепашьего робота + хокуйо и реализуется цель картографа SLAM на основе данных моделирования.

3.1 Добавьте хокуйо в среду моделирования Turtlebot_gazebo

так какturtlebot_gazeboСенсором черепашки по умолчанию в пакете является kinect, поэтому основная проблема заключается в том, как заменить kinect на hokuyo. Этот раздел может относиться кMaxChanger|Блог CSDN, я следовал его пошаговой настройке и, наконец, успешно запустил Turtlebot+hokuyo в беседке и смог успешно опубликовать данные лазера. Поэтому в этой статье не будет повторяться весь процесс настройки, а только поясняется непонятное. Есть три основных момента:

1. Блогер CSDN RGiantсуществуетMaxChanger|Блог CSDNНезавершенный комментарий: «Шаг 3 фактически изменил 3 места, не пропустите:

<sensor_hokuyo parent="base_link" />

2. MaxChanger|Блог CSDNНа самом деле процесс Turtlebot+kinect+hokuyo настроен. Если вы просто хотите заменить kinect на hokuyo, вы можете удалить скрипт про kinect в шагах из файла. В частности: на шаге 3kobuki_hexagons_hokuyo.urdf.xacro12-й и 17-й в файле закомментированы, на шаге 6turtlebot_gazebo.urdf.xacroСтроки 4-41 в файле закомментированы.

3. MaxChanger|Блог CSDNНастроенный угол обзора лазера Hokuyo FOV составляет от12число Пи-\frac{1}{2}\pi to 12число Пи\frac{1}{2}\pi, а моя модель hokuyo — UTM-30LX, а FOV — от34число Пи-\frac{3}{4}\pi to 34число Пи\frac{3}{4}\pi. И настройка такая же, как шаг 6turtlebot_gazebo.urdf.xacroСтроки 89, 90 в файле.

<min_angle>-1.570796</min_angle>
<max_angle>1.570796</max_angle>

изменить на:

<!-- FOV from -3*pi/4 to 3*pi/4 -->
<min_angle>-2.356194</min_angle> 
<max_angle>2.356194</max_angle>

В конфигурации хокуйо по умолчанию устанавливается на лоб черепашки, если вы хотите установить его посередине, вы можете изменить 10-ю строку шага 5 на:

<origin xyz="0.10 0 0.435" rpy="0 0.0 0.0" />

изменить на

<origin xyz="0.0 0 0.435" rpy="0 0.0 0.0" />

Обратив внимание на вышеперечисленные пункты, после завершения настройки вы можете модифицировать переменные окружения:

gedit .bashrc
#在最后添加以下内容
#For gazebo 
export  TURTLEBOT_BASE=kobuki
export  TURTLEBOT_STACKS=hexagons
export  TURTLEBOT_3D_SENSOR=hokuyo

После запуска все в норме, лазер имеет данные, топик/скан в норме

source /opt/ros/indigo/setup.bash
roslaunch turtlebot_gazebo explorer.launch
roslaunch turtlebot_rviz_launchers view_navigation.launch

Измененный робот-черепашка + лазерный хокуйо, обратите внимание, что в настоящее время Kinect на роботе больше нет.在这里插入图片描述 在这里插入图片描述Turtlebot+hokuyo отображается в rviz:

在这里插入图片描述

черепашка+хокуйо в беседке:在这里插入图片描述

3.2 Среда моделирования + картограф

существует~/cartographer_turtlebot_ws/src/cartographer_turtlebot/launchСоздайте новый файл в папкеturltebot_hokuyo.launch,

<!-- turtlebot_hokuyo.launch -->
<launch>
  <param name="/use_sim_time" value="true" />

  <node name="cartographer_node" pkg="cartographer_ros"
      type="cartographer_node" args="
          -configuration_directory
              $(find cartographer_turtlebot)/configuration_files
          -configuration_basename turtlebot_hokuyo.lua"
      output="screen">
    <!--remap from="base_footprint" to="/base_link" /-->
    <!--remap from="scan" to="/laser_scan" /-->
  </node>

  <node name="flat_world_imu_node" pkg="cartographer_turtlebot"
      type="cartographer_flat_world_imu_node" output="screen">
    <!--remap from="imu_in" to="/mobile_base/sensors/imu_data_raw" /-->
    <remap from="imu_in" to="/mobile_base/sensors/imu_data" />
    <remap from="imu_out" to="/imu" />
  </node>

  <node name="rviz" pkg="rviz" type="rviz" required="true"
      args="-d $(find cartographer_turtlebot
          )/configuration_files/demo_turtlebot.rviz" />


  <node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"
      type="cartographer_occupancy_grid_node" args="-resolution 0.05" />
</launch>

существует~/cartographer_turtlebot_ws/src/cartographer_turtlebot/configuration_filesСоздайте новый файл в папкеturltebot_hokuyo.lua


<!-- turtlebot_hokuyo.lua -->
include "map_builder.lua"
include "trajectory_builder.lua"

options = {
  map_builder = MAP_BUILDER,
  trajectory_builder = TRAJECTORY_BUILDER,
  map_frame = "map",
  tracking_frame = "gyro_link",
  published_frame = "odom",
  odom_frame = "odom",
  provide_odom_frame = false,
  publish_frame_projected_to_2d = false,
  use_odometry = true,
  use_nav_sat = false,
  use_landmarks = false,
  num_laser_scans = 1,
  num_multi_echo_laser_scans = 0,
  num_subdivisions_per_laser_scan = 1,
  num_point_clouds = 0,
  lookup_transform_timeout_sec = 0.2,
  submap_publish_period_sec = 0.3,
  pose_publish_period_sec = 5e-3,
  trajectory_publish_period_sec = 30e-3,
  rangefinder_sampling_ratio = 1.,
  odometry_sampling_ratio = 0.1,
  fixed_frame_pose_sampling_ratio = 1.,
  imu_sampling_ratio = 1.,
  landmarks_sampling_ratio = 1.,
}

MAP_BUILDER.use_trajectory_builder_2d = true

TRAJECTORY_BUILDER_2D.min_range = 0.1
TRAJECTORY_BUILDER_2D.max_range = 8.
TRAJECTORY_BUILDER_2D.missing_data_ray_length = 5.
TRAJECTORY_BUILDER_2D.use_imu_data = false
TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = true
TRAJECTORY_BUILDER_2D.motion_filter.max_angle_radians = math.rad(0.1)

POSE_GRAPH.constraint_builder.min_score = 0.65
POSE_GRAPH.constraint_builder.global_localization_min_score = 0.7

return options

После завершения вышеуказанной конфигурации запустите

source /opt/ros/indigo/setup.bash
roslaunch turtlebot_gazebo explorer.launch
roslaunch cartographer_turtlebot turtlebot_hokuyo.launch

gazebo 在这里插入图片描述 rviz 在这里插入图片描述

debug...

Вам нужно только настроить его в соответствии с описанным выше процессом.Проблемы, возникающие в процессе исследования, записываются здесь, просто для записи, вы можете их игнорировать.

Когда я напрямую использую оригиналturtlebot_urg_lidar_2d.luaфайл, произошла ошибкаmap_by_time.h:43] Check failed: data.time > std::prev(trajectory.end())->first #831, соответствующие URL-адреса вопросов и ответов размещены здесь для справкиmap_by_time.h:43, Ошибка проверки: data.time > std::prev(trajectory.end())->first #831

Я воспользовался методом этого человека и внес соответствующие исправления в файл .lua, и все заработало.在这里插入图片描述

До сих пор мы могли использовать черепаху + хокуйо и картографа для построения карт и позиционирования в моделировании беседки.

4. turtlebot+hokuyo+cartographer in real world

Если черепахобот+хокуйо+картограф прогоняется в беседке, его можно применить к реальным роботам-черепашкам с некоторыми модификациями.

- 1. Установите и настройте hokuyo_node Если ros — это версия индиго, запустите ее напрямую.sudo apt-get install ros-indigo-hokuyo-nodeУстановить. Если это кинетическая версия, ее необходимо установить из исходников.Пожалуйста, скомпилируйтеdriver_commonпозжеgit clone hokuyo_node, скомпилировать.

cd ~/cartographer_turtlebot_ws/src
git clone https://github.com/ros-drivers/driver_common.git
cd ..
catkin_make
cd ~/cartographer_turtlebot_ws/src
git clone git clone https://github.com/ros-drivers/hokuyo_node.git 
cd ..
catkin_make

бегатьls -l /dev/ttyACM0, если сообщается об ошибке и нет целевого файла, это означает, что компьютер не настроен с модулем последовательного порта ACM. Этого не должно происходить на обычных ПК, я сталкивался с этим на Nvidia TX2. Для решения, пожалуйста, обратитесь к моему другому блогуTX2 устанавливает драйвер последовательного порта ttyACM.

Если это показываетcrw-rw-XX- 1 root dialout 166, 0 2009-10-27 14:18 /dev/ttyACM0, потом нормально, потом запуститьsudo chmod a+rw /dev/ttyACM0.

Затем черепаха-бот подключается к хокуйо и бежит.

roscore
rosrun hokuyo_node hokuyo_node

Посмотрите, публикуются ли лазерные данные

rostopic echo /scan

- 2. Запрограммировать стартовый файл запуска.

cd ~/cartograher_turtlebot_ws/src/cartographer_turtlebot/launch
gedit turtlebot_hokuyo_realworld.launch
<launch>
  <arg name="configuration_basename" />

  <include file="$(find turtlebot_bringup)/launch/minimal.launch" />
  <node name="hokuyo_node" pkg="hokuyo_node" type="hokuyo_node">
  	<param name="frame_id" value="hokuyo_link"/>
  </node>

  <node name="cartographer_node" pkg="cartographer_ros"
      type="cartographer_node" args="
          -configuration_directory
              $(find cartographer_turtlebot)/configuration_files
          -configuration_basename $(arg configuration_basename)"
      output="screen">
    <!--remap from="points2" to="/camera/depth/points" /-->
  </node>

  <node name="flat_world_imu_node" pkg="cartographer_turtlebot"
      type="cartographer_flat_world_imu_node" output="screen">
    <remap from="imu_in" to="/mobile_base/sensors/imu_data" />
    <remap from="imu_out" to="/imu" />
  </node>
  
  <node name="rviz" pkg="rviz" type="rviz" required="true"
      args="-d $(find cartographer_turtlebot
          )/configuration_files/demo_turtlebot.rviz" />

  <node name="cartographer_occupancy_grid_node" pkg="cartographer_ros"
      type="cartographer_occupancy_grid_node" args="-resolution 0.05" />
</launch>

бегатьroslaunch cartographer_turtlebot turtlebot_hokuyo_realworld.launch.