SLAM Clase 14 Notas de estudio Clase 2: Parte del código de práctica después de la clase


Recientemente, estaba viendo contenido relacionado con SLAM Lecture 14. Por cierto, ejecuté una máquina virtual que no se ha abierto durante medio año. En este número, ejecuté el código
mencionado en "Visual SLAM Lecture 14" en Ubuntu20. En orden, comience desde la segunda lección.

Código base
https://github.com/gaoxiang12/slambook2

Este artículo ejecuta el código cpp en ROS. Por un lado, ROS tiene una gran compatibilidad con el contenido posterior y, por otro lado, la función cpp de ROS se ha perfeccionado.

Código de color
Azul
Rojo
Verde

Preparación

  • Algunos códigos relacionados con Ubuntu y conceptos básicos de ROS, etc., los puse en el número anterior: SLAM Lecture 14 Study Notes Issue 1: Ubuntu Rehabilitation Program
  • Todos los códigos en este problema se colocan Slam_wsen el espacio de trabajo en la página principal
  • Clasificar diferentes conferencias en diferentes paquetes de funciones.

Crear y compilar espacio de trabajo

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

¡Recuerda la fuente!

segunda conferencia

Experimento 1: Salida simple

Crear paquete de funciones

cd ~/Slam_ws/src
catkin_create_pkg Lec2

nueva construcciónhello.cpp

#include <iostream>

int main()
{
    
    
  std::cout << "Hello, SLAM!" << std::endl;
  return 0;
}

EDITARCMakeLists.txt
Abra CMakeLists.txtel archivo y agregue la siguiente línea al final:

No hay necesidad de agregar bibliotecas aquí

add_executable(HelloSlam hello.cpp)
target_link_libraries(HelloSlam ${
    
    catkin_LIBRARIES})

compilar y ejecutar

cd ~/Slam_ws
catkin_make
source devel/setup.bash
rosrun Lec2 HelloSlam 

Mostrar resultados
inserte la descripción de la imagen aquí

quinta conferencia

Tarea 1: imageBasics (configuración de Ubuntu opencv)

Para configurar opencv3.X
, consulte este artículo para instalar OpenCV3 en Ubuntu 20 (prueba ilustrativa)

Comprobar si la configuración es exitosa

pkg-config opencv --modversion

inserte la descripción de la imagen aquí


Crear paquete de funciones

cd ~/Slam_ws/src
catkin_create_pkg lec5  # 尽量选择小写,符合功能包命名标准

Mueva el código fuente
Mueva los tres pequeños paquetes de funciones en el código fuente y la estructura final es la siguiente:
inserte la descripción de la imagen aquí

Modifique la carpeta principalCMakeLists.cpp
Para adaptarse al entorno ROS (principalmente agregando un paquete catkin), modifique ligeramente la generación automática de ROSCMakeLists.txt :

## Compile as C++11, supported in ROS Kinetic and newer
add_compile_options(-std=c++11)

# 其他地方不做修改
# ....
# ....
# ....
# ....
# 在最后面加上源代码在主功能包下的配置信息:

# Eigen
include_directories("/usr/include/eigen3")

# 寻找OpenCV库
find_package(OpenCV REQUIRED)
# 添加头文件
include_directories(${OpenCV_INCLUDE_DIRS})

add_subdirectory(imageBasics)
# add_subdirectory(stereo)
# add_subdirectory(rgbd)

Modifique undistortImage.cppel formato de la imagen leída para que sea imageBasics.cppcoherente con

cv::Mat image = cv::imread(argv[1]);   // 图像是灰度图,CV_8UC1
// 判断图像文件是否正确读取
if (image.data == nullptr) {
    
     //数据不存在,可能是文件不存在
  cerr << "文件" << argv[1] << "不存在." << endl;
  return 0;
}

compilar y ejecutar

cd ~/Slam_ws
catkin_make
source devel/setup.bash

Ejecutar
[Para ejecutar en una máquina virtual, la conexión remota SSH no puede mostrar directamente una nueva ventana en la máquina virtual en el lado de Windows]

rosrun lec5 imageBasics ~/Slam_ws/src/lec5/imageBasics/ubuntu.png
rosrun lec5 undistortImage ~/Slam_ws/src/lec5/imageBasics/ubuntu.png

inserte la descripción de la imagen aquí

Tarea 2: nube de puntos de coincidencia binocular (pangolín de configuración de Ubuntu)

Para configurar pangolin
, consulte Ubuntu20.04: el proceso de instalación de ORB-SLAM3 desde cero en un sistema nuevo (2022)

En este documento del hermano mayor se dice que solo se puede usar la v0.6 de Pangolin, de hecho también se puede usar la última versión.

Si encuentra el siguiente error en cmake: inserte la descripción de la imagen aquí
es porque no hay pybind 11.
De hecho, el autor solo encontró este problema, pero no encontré una solución adecuada para este problema en Internet.

De hecho, la razón principal está clara en una oración: el pybind en la biblioteca está vacío y necesita ser descargado e importado.Puedes
leer mi blog Ubuntu20 para descargar Pangolin

Comprobar si la configuración es exitosa

En la parte de inspección, creo que puede profundizar la comprensión de CMake.

  • IngresarPangolin/examples/HelloPangolin/
  • compilar
    # 进入examples/HelloPangolin/目录下
    mkdir build && cd build
    cmake ..
    make
    
  • correr
    ./HelloPangolin
    
  • Ejecución de resultados
    inserte la descripción de la imagen aquí
    Como puede ver, tanto v0.6 como la última versión pueden ejecutarse

Modificar la carpeta principalCMakeLists.cpp
y comentar la tarea uno

# add_subdirectory(stereo)

simplemente descomentar

compilar y ejecutar

cd ~/Slam_ws
catkin_make
source devel/setup.bash

Ejecute
[para ingresar a la carpeta estéreo, de lo contrario no podrá leer las imágenes]

cd ~/Slam_ws/src/lec5/stereo/
rosrun lec5 imageBasics ~/Slam_ws/src/lec5/imageBasics/ubuntu.png

inserte la descripción de la imagen aquí

Tarea 3: nube de puntos coincidentes rgbd (configuración de Ubuntu Sophus)

Configurar
la referencia de Sophus ubuntu20.04 instalar la biblioteca de Sophus slambook2

El CMakeLists.txt a continuación también se ha movido de este artículo

Compruebe si la configuración se ha realizado correctamente.
Compruebe /usr/local/includesi hay una carpeta sophus.
inserte la descripción de la imagen aquí

CMakeLists.txt
Después de completar la configuración de rgbd , todavía no es posible catkin_make directamente, debe modificarse CMakeLists.txt
y reemplazarse con:

cmake_minimum_required( VERSION 2.8 )
project(rgbd)

##  使用模板类sophus
# set(Sophus_DIR "/usr/local/sophus-template/share/sophus/")
#或 
set(Sophus_INCLUDE_DIRS "/usr/local/sophus-template/include")
##set(Sophus_LIBS )

# 为使用 sophus,需要使用find_package命令找到它
find_package(Sophus REQUIRED)

find_package(Pangolin REQUIRED)
find_package(OpenCV REQUIRED)

include_directories(
	${Sophus_INCLUDE_DIRS}
	${OpenCV-INCLUDE_DIRS}
)
include_directories("/usr/local/include/eigen3")

add_executable(joinMap joinMap.cpp)
target_link_libraries(joinMap ${OpenCV_LIBS})
target_link_libraries(joinMap ${Pangolin_LIBRARIES})
target_link_libraries(joinMap ${Sophus_LIBS} fmt)

Su función es agregar dependencias eigon y fmt.

Modificar la carpeta principalCMakeLists.cpp
y comentar la tarea uno

# add_subdirectory(rgbd)

simplemente descomentar

compilar y ejecutar

cd ~/Slam_ws
catkin_make
source devel/setup.bash

Ejecutar
[para ingresar a la carpeta rgbd; de lo contrario, no se puede leer el archivo de ubicación]

cd ~/Slam_ws/src/lec5/rgbd/
rosrun lec5 joinMap

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_51772802/article/details/131579851
Recomendado
Clasificación