文章目录
- 前言
- 一、检测到 #include 错误。请更新includePath。
- 二、虚拟机打开笔记本内置摄像头灯亮却黑屏问题
- 三、bash: install/setup.bash: 没有那个文件或目录
- 四、rclcpp/rclcpp.hpp: 没有那个文件或目录
- 五、colcon: error: unrecognized arguments: --packages-select learning_topic
- 六、找不到自定义的接口包
- 七、ros2 param dump /turtlesim 无反应/未保存
- 八、创建srv文件时出现"fatal error: xxx/xxx.h: 没有那个文件或目录"
- 九、删掉某个文件后,编译仍然出现not found: "/home/***/towm_ws/install/learning_interfaces/share/删掉的文件名/local_setup.sh"
- 十、bash: 未预期的记号 "newline" 附近有语法错误
- 十一、jupyter中/home/xxx/minicnda3/lib/libstdc+t.so.6: version 'GLIBcx_3.4.38'not found
- 十二、failed to create symbolic link '/home/xxx/learning_interfaces2' because existing path cannot be removed: Is a directory
- 十三、正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 6347(unattended-upgr)持有
- 总结
前言
自用,持续更、不定时更
如果对于以下的问题有更好的方法,或是以下哪部分内容存在错误,欢迎大家指出和更正,非常希望能和大家一起交流!!
一、检测到 #include 错误。请更新includePath。
检测到 #include 错误。请更新includePath。已为此翻译单元(/home/lty/ros2_21_tutorials/learning_node_cpp/src/node_helloworld_class.cpp)禁用波形曲线。C/C++(1696)
方法一: 找到.vscode
文件中c_cpp_properties.json
添加以下两行代码
"/opt/ros/humble/include/**",
"/opt/ros/humble/include/std_msgs"
crtl+s
保存之后报错消除
代码整体:
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/opt/ros/humble/include/**",
//在ROS2中,通常会将ROS2的头文件安装在 /opt/ros/humble/include 目录下,其中 humble 是你所使用的ROS2发行版。
//因此,添加这些路径可以确保编译器能够找到ROS2的头文件,从而顺利编译和构建你的ROS2节点程序。
"/opt/ros/humble/include/std_msgs"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c17",
"cppStandard": "gnu++17",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
方法二: 将鼠标放在红波浪线上,点击快速修复
-> 编辑includePath设置
在包含路径下添加刚刚两行代码
二、虚拟机打开笔记本内置摄像头灯亮却黑屏问题
1.连接摄像头
虚拟机
-> 可移动设备
-> Bison Intergrated Camera
(不同电脑名字不一样) -> 连接
-> 确定
2.下载webcam
sudo apt install webcam
3.下载cheese
sudo apt install cheese
4.虚拟机设置
虚拟机
-> 设置
USB控制器
-> USB兼容性
(2改3,3改2)
5.打开cheese
cheese
若提示未发现设备可能是步骤1没有连接
三、bash: install/setup.bash: 没有那个文件或目录
source install/setup.bash
//将bash改成sh
source install/setup.sh
四、rclcpp/rclcpp.hpp: 没有那个文件或目录
空
五、colcon: error: unrecognized arguments: --packages-select learning_topic
输入 colcon build --packages-select learning_topic
xx:~/ros2_ws$ colcon build --packages-select learning_topic
出现报错
usage: colcon [-h] [--log-base LOG_BASE] [--log-level LOG_LEVEL] {build,test,test-result} ...
colcon: error: unrecognized arguments: --packages-select learning_topic
方法:
输入sudo apt install python3-colcon-common-extensions
,(重新)安装colcon后即可
六、找不到自定义的接口包
从错误消息来看,CMake
在尝试查找learning_ros2_interfaces
包的配置文件时失败了。这通常意味着CMake
在预期的路径中没有找到这个包,或者该包尚未被安装。
可能原因:
(1)检查CMakeLists.txt
确保CMakeLists.txt
文件正确调用了find_package
。
find_package(learning_ros2_interfaces REQUIRED)
ament_target_dependencies(interfaces_robot
rclcpp
learning_ros2_interfaces
)
(2)检查package.xml
<depend>learning_ros2_interfaces</depend>
(3)若是误删接口某些文件或改动过接口文件名
简单粗暴:重建功能包
补充:
删除了learning_ros2_interfaces接口包后,重建接口包重新编译,出现警告仍然显示之前接口包路径不存在时,可以尝试以下具体步骤来解决问题:
- 清理构建系统缓存文件
在ROS 2工作空间中执行以下命令,清理构建系统生成的缓存文件
cpp rm -rf install build log
- 重新构建项目
colcon build
- 重新加载配置文件:
如果在修改shell配置文件后没有重新加载配置文件,可以执行以下命令重新加载配置文件:
source ~/.bashrc
通过执行以上具体步骤,解决警告显示路径不存在的问题。
七、ros2 param dump /turtlesim 无反应/未保存
输入ros2 param dump /turtlesim
,没有显示保存文件
解决方法:
(1)输入命令
ros2 param dump /turtlesim --output-dir ~/turtle_ws
出现--output-dir
选项被弃用的警告,并建议使用重定向来保存到文件,将输出保存到/home/***/turtle_ws/turtlesim.yaml
文件中。
WARNING: '--output-dir' is deprecated; use redirection to save to a file
Saving to: /home/***/turtle_ws/turtlesim.yaml
可以通过路径找到此文件,可在此文件内直接改动param
(2)将小乌龟关闭重新打开,输入命令,后边是刚刚保存的路径
ros2 param load /turtlesim /home/***/turtle_ws/turtlesim.yaml
注: /turtlesim
[空格]/home/***/turtle_ws/turtlesim.yaml
(3)补充:输入加载命令时出错,注意文件路径(同上)
ros2 run turtlesim turtlesim_node --ros-args --params-file /home/***/turtle_ws/turtlesim.yaml
八、创建srv文件时出现"fatal error: xxx/xxx.h: 没有那个文件或目录"
编写服务自定义接口时,编译出现错误
但是我是没有编写msg文件的。
经过检查可能有以下原因:
(1).srv
的文件编写时,格式出现错误
(2)看CmakeLists.txt
有没有添加依赖和srv文件目录
(3)看在package.xml
中有没有添加xxx.srv所需的依赖
经过检查,重新编译,成功。
九、删掉某个文件后,编译仍然出现not found: “/home/***/towm_ws/install/learning_interfaces/share/删掉的文件名/local_setup.sh”
去工作空间的build
和install
中删掉相关的文件夹
删掉后,报错消失。
十、bash: 未预期的记号 “newline” 附近有语法错误
输入
conda create -n ros2 python=<3.10>
出现报错
bash: 未预期的记号 "newline" 附近有语法错误
把 <>
去掉即可
conda create -n ros2 python=3.10
十一、jupyter中/home/xxx/minicnda3/lib/libstdc+t.so.6: version 'GLIBcx_3.4.38’not found
在jupyter
输入代码运行时,出现报错/home/xxx/minicnda3/lib/libstdc+t.so.6: version 'GLIBcx_3.4.38'not found
参考大佬文章:解决 libstdc++.so.6: version ‘GLIBCXX_3.4.30‘ not found 问题
第一步: 使用 ll
命令列出了/xxx/../lib/libstdc++.so.6
这个符号链接的详细信息。
ll /home/lty/miniconda3/envs/ros2/bin/../lib/libstdc++.so.6
第二步: 使用 strings
命令和 grep
工具尝试查找libstdc++.so.6
文件中是否包含特定的版本字符串GLIBCXX_3.4.30
。
strings libstdc++.so.6 | grep GLIBCXX_3.4.30
很明显,并没有
第三步: 用于安装 plocate
包,它是 mlocate
的一个分支,用于跟踪文件系统上文件的位置。
sudo apt install plocate
第四步: 使用locate
命令来搜索文件
locate libstdc++.so.6
第五步: 使用strings
命令和grep
查找到了/usr/lib/x86_64-linux-gnu/libstdc++.so.6
文件确实包含GLIBCXX_3.4.30
版本。
strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.30
第六步: 删除/home/lty/miniconda3/envs/ros2/bin/../lib/libstdc++.so.6
这个符号链接。
rm /home/lty/miniconda3/envs/ros2/bin/../lib/libstdc++.so.6
第七步: 创建一个指向 /usr/lib/x86_64-linux-gnu/libstdc++.so.6
的符号链接到指定的 Conda
环境中。
ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6
现在,Conda
环境ros 2应该链接到了系统中正确的libstdc++.so.6
版本。这应该解决了之前遇到的版本不兼容问题。
重新启动jupyter
,无报错。
十二、failed to create symbolic link ‘/home/xxx/learning_interfaces2’ because existing path cannot be removed: Is a directory
问题原因
错误信息 “because existing path cannot be removed: Is a directory” 指出在尝试删除一个路径时,该路径实际上是一个目录,而不是一个文件。
解决方法
删除或重命名现有目录:
rm -rf /home/xxx/learning_interfaces2
十三、正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 6347(unattended-upgr)持有
今天在Ubuntu下安装软件时,出现报错!
sudo apt install ros-$ROS-DISTRO-xacro
报错信息: 正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 6347(unattended-upgr)持有
问题原因: 根据提供的信息,进程 6347(/usr/bin/python3 /usr/bin/unattended-upgrade)正在运行并占用了 dpkg 锁,导致我们无法安装软件包。
解决方法:
方法一:运行以下命令来终止进程:
sudo kill -9 6347
方法二:等待一会就能下载了。。
再次安装就能安装成功啦!
总结
自用