ROS问题汇总

ROS 问题汇总

1. 环境变量刷新

方法一:临时刷新

在运行相关launch文件之前,输入以下命令刷新环境变量:

source devel/setup.bash

方法二:永久刷新

  1. 在home目录下打开终端。
  2. 编辑.bashrc文件:
    gedit ~/.bashrc
    
  3. 在文件末尾添加工作空间setup.bash文件的绝对路径,例如:
    source /home/username/xxx/devel/setup.bash
    
    • username为你的电脑用户名。
    • xxx为你的工作空间名称。
  4. 保存文件后使其生效:
    source ~/.bashrc
    

2. APT源

ROS的APT源网站为:

index.ros.org

3. 脚本文件存放

  • scripts目录用于存放Python脚本文件。

4. 将source指令添加到.bashrc脚本中

  1. 打开.bashrc文件:
    gedit ~/.bashrc
    
  2. 在文件中添加:
    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
  )
posted @   study_all_day  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示