Continuamente actualizado....
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_ws
en 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.txt
el 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
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
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:
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.cpp
el formato de la imagen leída para que sea imageBasics.cpp
coherente 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
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:
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.
- Ingresar
Pangolin/examples/HelloPangolin/
- compilar
# 进入examples/HelloPangolin/目录下 mkdir build && cd build cmake .. make
- correr
./HelloPangolin
- Ejecución de resultados
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
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/include
si hay una carpeta sophus.
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