1、古月居ROS入门21讲第十讲
Error: package 'learning_topic' not found
解决方法:
在同一个终端里面同时进行环境配置source devel/setup.bash和rosrun learning_topic velocity_publisher
source devel/setup.bash
rosrun learning_topic velocity_publisher
2、古月居ROS入门21讲第12讲
在对定义的消息类型进行编译时提示Cmake Error
解决方法:
在添加CMakeLists.txt编译选项时,需要在catkin_package()添加CATKIN_DEPEND message_runtime,即:
catkin_package
(
CATKIN_DEPENDS message_runtime
)
3、VsCode配置ROS开发环境:修改代码不生效问题原因及解决方法
在使用VsCode进行ROS程序开发的时候,经常会出现一个问题,就是代码已经做了修改,但是编译之后得到的可执行文件却始终没有更新代码中做的修改内容,如图修改后ROS_INFO端应输出“hello VSCode!哈哈哈哈哈哈哈哈哈哈”,但实际输出仍为修改前的“hello”。
通过查找Cmake Tools自动输出的日志和检查build文件夹下目录结构发现,CmakeTools在自动执行cmake配置时将devel目录设置到了build目录下。也就是说,本该生成到工作空间devel文件夹下的可执行文件,通过插件编译后生成到了build/level文件夹下,导致后来通过插件编译的结果全都生成到了该文件夹下。因此工作空间devel文件夹下的可执行文件始终未得到更新,进而导致问题。
解决方法:
通过日志可以看出,devel文件夹的位置是通过一个名为 C A T K I N _ D E V E L _ P R E F I X 的cmake变量来设置的,该变量默认为devel文件夹,但是是在build文件夹下的devel文件夹,因此我们只需要将这个变量的值指定为工作空间下的devel文件夹即可。
1.打开VsCode的管理->扩展->CMake Tools->扩展设置,进入CMake Tools插件的详细设置界面,找到CMake:Configettings选项,如图所示,点击“在settings.json中编辑”
2.点击将会打开配置文件,记住该配置文件与工程目录下.vscode/setting.json不是同一个文件,一定要通过这里打开。配置文件如下图,点开后会自动添加并定位到"cmake.configureSettings"设置内容,我们在其中添加变量 C A T K I N _ D E V E L _ P R E F I X CATKIN\_DEVEL\_PREFIX CATKIN_DEVEL_PREFIX的值为工作空间的devel文件夹。
{
"cmake.configureOnOpen": true,
"explorer.confirmDelete": false,
"window.zoomLevel": 2,
"files.autoSave": "onFocusChange",
"cmake.configureSettings": {
"CATKIN_DEVEL_PREFIX" : "${workspaceFolder}/devel"
}
}
3.到此问题已经得到解决。删除原来的build文件夹,重新编译即可。
4、Ubuntu中VScode中空格长度过小问题解决办法
由于ubuntu更新后字体设置有所改变,VScode中出现空格长度过短,字符间距不够,代码观看适宜度极差。
解决方法:安装firacode字体
1.对可用软件包进行更新
sudo apt update
2.通过安装/升级软件来更新系统
sudo apt upgrade
3. 安装字体管理器
sudo apt install font-manager
4. 安装 firacode 字体
sudo apt install fonts-firacode
5. 卸载自动安装且多余的软件包
sudo apt autoremove
6.在VScode中更改字体设置
在vscode中的设置(可使用ctrl + 逗号快捷键直接打开)里面搜索找到并双击打开 settings.json 文件。在 settings.json 文件的大括号中添加如下两行并保存配置 (不要另起一段,否则不生效)
"editor.fontFamily": "Fira Code",
"editor.fontLigatures": true,
5、小海龟跟随实操"turtle2" passed to lookupTransform argument target_frame does not exist问题
在进行小海龟坐标跟随实操时,在发布第一个和第二个海龟的坐标后,会出现如下报错,这是因为tf的会把监听的内容存放到一个缓存中,然后再读取相关的内容,而这个过程可能会有几毫秒的延迟,也就是说在进行计算时,两个主题的转换还没有发布和生成。
解决方法:
在原本的lookupTransform函数中添加第四个参数ros::Duration(),也就是超时等待时间
geometry_msgs::TransformStamped tfs = buffer.lookupTransform("turtle2","turtle1",ros::Time(0),ros::Duration(1));
6、在gazebo加载模型时报错:[ERROR] [1666315910.881115, 257.460000]: Spawn service failed. Exiting.
原因是launch文件或者xacro文件中存在注释,删除中文注释即可。 或者添加支持UTF-8编码格式的程序,过程如下:
1.在终端中输入
sudo gedit /usr/lib/python2.7/xml/etree/ElementTree.py
2. 在头文件后添加
reload(sys)
sys.setdefaultencoding("utf-8")
7、pytorch2.2.2+cuda11.8使用FlowNetC光流预测网络”from spatial_correlation_sampler import spatial_correlation_sample“报错
解决方案:
1.对于cuda<11.0 并且 torch<1.7 的机器安装spatial-correlation-sampler,只需要
pip install spatial_correlation_sampler
2.对于cuda>11.0,需要下载源码后,将源码移入conda虚拟环境,
# 下载源码
git clone https://github.com/ClementPinard/Pytorch-Correlation-extension.git
# 进入文件夹
cd your-name-env/Pytorch-Correlation-extension
# 编译(需要激活虚拟环境)
python setup.py install
8、Ubuntu20.04+Ros-noetic+Anaconda使用CvBridge报错“ImportError: /lib/x86_64-linux-gnu/libp11-kit.so.0: undefined symbol: ffi_type_pointer, version LIBFFI_BASE_7.0”
libffi的版本不一致,导致了libp11-kit.so.0在使用时出现了未定义符号问题,libffi.so.7链接至libffi.so.8.1.0
解决方案:
1.将python 在安装过程中,就会默认安装libffi,在该库中,就会出现旧版本兼容老版本问题,即出现libffi.so.7链接至libffi.so.8.1.0,将conda虚拟环境的pyhton版本替换为ros-noetic默认的python3.8.10即可
2.将路径下的libffi.so.7文件备份后(重命名为libffi_bak.so.7),再在该路径下创建一个新的libffi.so.7链接至/lib/x86_64-linux-gnu/libffi.so.7.1.0,即输入命令:
sudo ln -s /lib/x86_64-linux-gnu/libffi.so.7.1.0 libffi.so.7
sudo ldconfig
9、Ubuntu20.04+ROS-noetic+Anaconda(python3.8)源码安装PyKDL,报错:
fatal error: pybind11/pybind11.h: 没有那个文件或目录
#include <pybind11/pybind11.h>
1.源码下载
GitHub - orocos/orocos_kinematics_dynamics: Orocos Kinematics and Dynamics C++ library
2.C语言文件的编译
cd /orocos_kinematics_dynamics/orocos_kdl
mkdir build
cd build
cmake ../
make
sudo make install
3.python文件编译
cd /orocos_kinematics_dynamics/python_orocos_kdl
mkdir build
cd build
cmake ../ -DPYTHON_EXECUTABLE:FILEPATH=(虚拟环境路径)/bin/python3.8
make
sudo make install
4.pybind11下载编译,没有这步在对python文件进行make时,就会出现fatal error: pybind11/pybind11.h: 没有那个文件或目录#include <pybind11/pybind11.h>
cd orocos_kinematics_dynamics/python_orocos_kdl
git clone https://github.com/pybind/pybind11.git
cd pybind11
mkdir build
cd build
cmake ..
make
sudo make install
5.编译完成后,copy~/orocos_kinematics_dynamics/python_orocos_kdl/build/devel/lib/python3/dist-packages/PyKDL.so 到你的虚拟环境/lib/python3.8/site-packages
6.测试