碰到的bug,解决方法

2023-05-16

问题解决


1.[build] Error: Unable to find source space /home/xxx/src

在新建的工作空间下进行 catkin build 编译工作空间,工作空间下没有产生 devel, logs, build 文件,但是用catkin_make编译,就没有问题。

在这里插入图片描述
看一下编译过程,发现编译的 workspace 是在主目录下,并没有在新建的工作空间 Planner 下编译,而是在它的根目录下编译。由于我的主目录下有一个 src 文件,所以编译没有报错,在主目录下产生了 devel, logs, build 文件。

如果主目录没有 src 文件,就会报错 :Error: Unable to find source space /home/yue/src ,没有找到源文件。
始终不能在目标工作空间下编译。

➡ 新建的工作空间被锁定,无法进行catkin build 编译
解决

  1. 在主目录下 ctrl + h 显示隐藏文件;
  2. 删除文件夹 .catkin_tools

再重新新建工作空间,在工作空间根目录进行 catkin build 编译。
编译成功!


2.planner.cpp:(.text+0x6d6):对‘TrajectoryGeneratorTool::SolveQPClosedForm(int, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::Matrix<double, -1, -1, 0, -1, -1> const&, Eigen::Matrix<double, -1, 1, 0, -1, 1> const&)’未定义的引用

实现在一个cpp文件中调用另一个cpp文件class定义的成员函数,出现报错未定义引用。

在这里插入图片描述
一直以为是没有调用成功,修改了好几种调用方式;
实际上是Cmake文件在添加cpp文件的时候没有添加add_executable,所以在编译的时候没有编译到新加的cpp文件,但是在初始化class后,如果没有调用成员函数并不会报错,所以会认为是调用的方式问题。

解决:

  1. 在CMakeLists.txt 中add_executable后添加cpp文件
  2. 重新编译

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

编译成功!

添加cpp文件要记得在CMakeLists.txt 中生成可执行文件目标指令add_executable 后添加源文件。

3.ROS订阅话题的 subscribe 重载问题

在这里插入图片描述在订阅消息的时候,subscribe 缺少一个参数,后面加上一个参数指针this。


4.rviz 插件无法加载问题

在这里插入图片描述
根据教程出现了如上错误。这是没有加载rviz_plugins。

sudo apt-get install ros-melodic-rviz-rviz-plugins

安装完成后如果还是报错,检查工作空间中是否有rviz_pulgin 功能包,没有的话需要添加。下载文件夹:rviz_pulgins
将文件夹解压后作为一个功能包;
放在工作空间src目录下,重新编译;
source 一下
重新roslaunch即可
成功载入插件


5.gazebo仿真插件iris_downward_depth_camera.sdf 报错

[vehicle_spawn_yue_HP_288_Pro_G6_Microtower_PC_24187_3369715323510675347-5] process has died [pid 24244, exit code 1, cmd /opt/ros/melodic/lib/gazebo_ros/spawn_model -sdf -file /home/yue/PX4_Firmware/Tools/sitl_gazebo/models/iris_downward_depth_camera/iris_downward_depth_camera.sdf -model iris -x 0 -y 0 -z 0 -R 0 -P 0 -Y 0 __name:=vehicle_spawn_yue_HP_288_Pro_G6_Microtower_PC_24187_3369715323510675347 __log:=/home/yue/.ros/log/394ec706-6c95-11ed-b588-bce92fa545dc/vehicle_spawn_yue_HP_288_Pro_G6_Microtower_PC_24187_3369715323510675347-5.log].
log file: /home/yue/.ros/log/394ec706-6c95-11ed-b588-bce92fa545dc/vehicle_spawn_yue_HP_288_Pro_G6_Microtower_PC_24187_3369715323510675347-5*.log

在这里插入图片描述
gazebo成功运行,但是iris无人机上没有摄像头,只有一个小盒子,也没有图像话题。

在这里插入图片描述----

6.关于 catkin_simple 报错

在这里插入图片描述

Could not find a package configuration file provided by “catkin_simple”
with any of the following names:

catkin_simpleConfig.cmake
catkin_simple-config.cmake

Add the installation prefix of “catkin_simple” to CMAKE_PREFIX_PATH or set
“catkin_simple_DIR” to a directory containing one of the above files. If
“catkin_simple” provides a separate development package or SDK, be sure it
has been installed.

找不到catkin_simple工能包,解决办法:

cd $(write down your workspace)/src
git clone git@github.com:catkin/catkin_simple.git
cd $CATKIN_WS
catkin_make

7.找不到 -lpose_utils

在这里插入图片描述
Errors << odom_visualization:make /home/yue/catkin_ws/logs/odom_visualization/build.make.000.log
/usr/bin/ld: 找不到 -lpose_utils
collect2: error: ld returned 1 exit status
make[2]: *** [/home/yue/catkin_ws/devel/.private/odom_visualization/lib/odom_visualization/odom_visualization] Error 1
make[1]: *** [CMakeFiles/odom_visualization.dir/all] Error 2
make: *** [all] Error 2

解决方法:
用locate命令定位XXX库文件

locate libXXX.so

在这里插入图片描述

定位结果:

/home/yue/.local/share/Trash/files/Utils/pose_utils/lib/libpose_utils.so

再用软链接将两者链接起来

sudo ln -s /home/yue/.local/share/Trash/files/Utils/pose_utils/lib/libpose_utils.so /usr/lib/libpose_utils.so

再编译就没问题了。


8.没有那个文件或目录 #include <multi_map_server/MultiOccupancyGrid.h>

fatal error: multi_map_server/MultiOccupancyGrid.h: 没有那个文件或目录
#include <multi_map_server/MultiOccupancyGrid.h>
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
在这里插入图片描述
在使用无人机路径规划,fast planner 算法github开源代码时,产生的错multi_map_server/MultiOccupancyGrid.h: 没有那个文件或目录

解决方法:
工程文件可能包含很多个 include 文件夹,编译检索的不是我们目标的文件夹
把报错缺失的头文件复制到其他的 include 路径文件下
将之前编译产生的build devel logs 文件夹删除后,重新编译。


9.没有那个文件或目录 #include <nlopt.hpp>

系统提示无法找到nlopt.hpp文件

#获取libnlopt
sudo apt-get install libnlopt-dev

安装完成后重新编译。


10.没有规则可制作目标

make[2]: *** 没有规则可制作目标“/usr/local/lib/libnlopt.so”,由“/home/yue/ws/
devel/.private/bspline_opt/lib/libbspline_opt.so” 需求。 停止。

在这里插入图片描述
将cmake中的link连接注释掉:
在这里插入图片描述


11.对‘tf2_ros::TransformBroadcaster::TransformBroadcaster()’未定义的引用

在这里插入图片描述
首先使用 rospack find tf2_tools 查看是否安装了 tf2_tools,如果没有则安装
但直接采用 sudo apt install tf2_tools 是无法安装成功的,会显示 E: 无法定位软件包 tf2_tools
应采用:

sudo apt install ros-melodic-tf2-tools

再次查看就可以看到已经安装成功了,并且显示了安装路径。

如果已经安装好了功能包,检查cmakelists文件中是否添加 tf2 功能包。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

碰到的bug,解决方法 的相关文章

随机推荐