ROS问题汇总
ROS 问题汇总
1. 环境变量刷新
方法一:临时刷新
在运行相关launch文件之前,输入以下命令刷新环境变量:
source devel/setup.bash
方法二:永久刷新
- 在home目录下打开终端。
- 编辑
.bashrc
文件:gedit ~/.bashrc
- 在文件末尾添加工作空间
setup.bash
文件的绝对路径,例如:source /home/username/xxx/devel/setup.bash
username
为你的电脑用户名。xxx
为你的工作空间名称。
- 保存文件后使其生效:
source ~/.bashrc
2. APT源
ROS的APT源网站为:
index.ros.org
3. 脚本文件存放
scripts
目录用于存放Python脚本文件。
4. 将source
指令添加到.bashrc
脚本中
- 打开
.bashrc
文件:gedit ~/.bashrc
- 在文件中添加:
source ~/ROS_WS/catkin_ws/devel/setup.bash
5. VSCode设置快捷编译
修改task.json
文件如下:
{
"version": "2.0.0",
"tasks": [
{
"type": "catkin_make",
"args": [
"--directory",
"/home/andy/ROS_WS/catkin_ws",
"-DCMAKE_BUILD_TYPE=RelWithDebInfo"
],
"problemMatcher": [
"$catkin-gcc"
],
"group": {"kind":"build","isDefault": true},
"label": "catkin_make: build"
}
]
}
6. 意外未关闭roscore
使用以下指令删除roscore
进程:
killall -9 roscore
killall -9 rosmaster
7. Gazebo启动问题
问题描述:
启动Gazebo后关闭,再次启动时出现如下报错:
[gazebo-1] process has died [pid 10999, exit code 255, cmd /opt/ros/melodic/lib/gazebo_ros/gzserver -e ode worlds/empty.world __name:=gazebo __log:=/home/will/.ros/log/5ee74f98-0ca5-11ec-9c23-b8ca3a8092a4/gazebo-1.log].
log file: /home/will/.ros/log/5ee74f98-0ca5-11ec-9c23-b8ca3a8092a4/gazebo-1*.log
解决方法:
关闭Gazebo时,有些程序未完全关闭,导致再次启动时无法正常开启。使用以下指令关闭相关程序:
killall gzserver
8. ROS 常用指令
- 编译工作空间:
catkin_make
- 创建ROS包:
例如:catkin_create_pkg <pkgname> <依赖列表>
catkin_create_pkg ssr_pkg rospy roscpp std_msgs
9. 常见报错及解决
报错信息:
terminate called after throwing an instance of 'ros::InvalidNameException'
what(): Character [ ] at element [2] is not valid in Graph Resource Name [my control]. Valid characters are a-z, A-Z, 0-9, / and _.
已放弃 (核心已转储)
解决方法:
通常是因为节点的cpp文件代码或文件名中包含空格或其他非法字符。删除或替换为下划线即可。
10. ros::ok
的使用
在代码中使用ros::ok
代替true
,可以响应外部信号(如Ctrl+C):
// Crtl+C 无法停止
while(true){
}
// Crtl+C 可以停止
while(ros::ok()){
}
11. TOPIC发布端不要忘记 ros::spin()
12. darknet_ros 编译问题
nvcc fatal : Unsupported gpu architecture 'compute_30'
原因:这是不支持compute_30的gpu构架,这是由于GPU太新,与CUDA版本不兼容导致
找到makefile下图处,根据自己CUDA的版本注释不同的行
# Find CUDA
find_package(CUDA QUIET)
if (CUDA_FOUND)
find_package(CUDA REQUIRED)
message(STATUS "CUDA Version: ${CUDA_VERSION_STRINGS}")
message(STATUS "CUDA Libararies: ${CUDA_LIBRARIES}")
set(
CUDA_NVCC_FLAGS
${CUDA_NVCC_FLAGS};
-O3
# -gencode arch=compute_30,code=sm_30
# -gencode arch=compute_35,code=sm_35
-gencode arch=compute_50,code=[sm_50,compute_50]
-gencode arch=compute_52,code=[sm_52,compute_52]
-gencode arch=compute_61,code=sm_61
-gencode arch=compute_62,code=sm_62
)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人