ros rospy 常用命令
ROS 常用命令
工作空间与包管理
# 创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
# 创建 ROS 包
cd ~/catkin_ws/src
catkin_create_pkg my_package rospy roscpp std_msgs
# 查找包路径
rospack find package_name
# 查看包依赖
rospack depends package_name
rospack depends1 package_name # 查看直接依赖
# 检查包依赖是否安装
rosdep check package_name
# 安装缺失的包依赖
rosdep install --from-paths src --ignore-src -r -y
节点管理
# 启动 ROS 核心
roscore
# 运行节点
rosrun package_name node_name
# 通过 launch 文件启动多个节点
roslaunch package_name launch_file.launch
# 列出所有活动节点
rosnode list
# 查看节点信息
rosnode info node_name
# 终止节点
rosnode kill node_name
# 清除死亡节点
rosnode cleanup
话题管理
# 列出所有话题
rostopic list
rostopic list -v # 详细信息
# 查看话题类型
rostopic type /topic_name
# 查看话题消息详情
rosmsg show topic_type
# 打印话题消息
rostopic echo /topic_name
# 发布话题消息
rostopic pub /topic_name message_type "data: value"
rostopic pub -r 10 /topic_name message_type "data: value" # 以 10Hz 频率发布
# 查看话题发布频率
rostopic hz /topic_name
# 查看话题带宽使用情况
rostopic bw /topic_name
服务管理
# 列出所有服务
rosservice list
# 查看服务信息
rosservice info /service_name
# 查看服务类型
rosservice type /service_name
# 查看服务请求和响应结构
rossrv show service_type
# 调用服务
rosservice call /service_name "request_parameters"
参数服务器管理
# 列出所有参数
rosparam list
# 获取参数值
rosparam get /parameter_name
# 设置参数值
rosparam set /parameter_name value
# 删除参数
rosparam delete /parameter_name
# 从文件加载参数
rosparam load file.yaml
# 将参数保存到文件
rosparam dump file.yaml
可视化工具
# 启动 RViz
rviz
# 启动 Gazebo 仿真环境
roslaunch gazebo_ros empty_world.launch
# 启动 rqt 工具集
rqt
rqt_graph # 节点关系图
rqt_plot /topic_name # 绘制话题数据曲线
日志与调试
# 查看 ROS 日志文件位置
roscd log
# 查看节点的日志信息
roslaunch --screen package_name launch_file.launch # 启动时显示日志
# 查看节点的 CPU 和内存使用情况
rosnode hz node_name # 节点发布频率
rosnode info node_name | grep "cpu" # CPU 相关信息
消息与服务定义
# 查看消息定义
rosmsg show message_type
# 查看服务定义
rossrv show service_type
# 生成消息和服务的代码
catkin_make
快速导航
# 快速切换到包目录
roscd package_name
# 直接编辑包内文件
rosed package_name file_name
# 搜索文件
roslocate find file_name
rospy 常用函数
1. 节点初始化与管理
rospy.init_node
- 功能:在 ROS 系统里对节点进行初始化,向 ROS 主节点注册该节点。
- 参数:
name:节点的名称,必须提供。anonymous:布尔值,默认为False。若设为True,会在节点名称后添加随机数,保证节点名称唯一。log_level:日志级别,如rospy.DEBUG、rospy.INFO等,默认为rospy.INFO。disable_signals:布尔值,默认为False。若设为True,会禁用 ROS 信号处理。
- 示例代码:
import rospy
rospy.init_node('my_node', anonymous=True, log_level=rospy.DEBUG)
- 应用场景:每个 ROS 节点启动时都要调用此函数。
rospy.is_shutdown
- 功能:检查节点是否关闭,常用于循环中判断是否继续执行。
- 参数:无
- 示例代码:
while not rospy.is_shutdown():
# 循环执行的代码
pass
- 应用场景:在需要持续运行的节点中,用该函数判断是否退出循环。
2. 话题通信
rospy.Publisher
- 功能:创建话题发布者对象,向指定话题发布消息。
- 参数:
name:话题名称。data_class:消息类型,如std_msgs.msg.String。queue_size:消息队列大小,当队列满时,旧消息会被丢弃。latch:布尔值,默认为False。若设为True,最后发布的消息会被缓存,新订阅者会立即收到该消息。
- 示例代码:
from std_msgs.msg import String
pub = rospy.Publisher('chatter', String, queue_size=10)
- 应用场景:需要向某个话题发布消息的节点。
rospy.Subscriber
- 功能:创建话题订阅者对象,订阅指定话题的消息,并在接收到消息时调用回调函数。
- 参数:
name:话题名称。data_class:消息类型。callback:回调函数,接收到消息时调用。callback_args:传递给回调函数的额外参数。queue_size:消息队列大小。
- 示例代码:
def callback(data):
rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.data)
rospy.Subscriber('chatter', String, callback)
- 应用场景:需要接收某个话题消息的节点。
3. 服务通信
rospy.Service
- 功能:创建服务服务器对象,处理客户端的服务请求。
- 参数:
name:服务名称。service_class:服务类型。handler:处理服务请求的函数。
- 示例代码:
from rospy_tutorials.srv import AddTwoInts, AddTwoIntsResponse
def handle_add_two_ints(req):
return AddTwoIntsResponse(req.a + req.b)
s = rospy.Service('add_two_ints', AddTwoInts, handle_add_two_ints)
- 应用场景:提供服务的节点。
rospy.ServiceProxy
- 功能:创建服务客户端对象,向服务服务器发送服务请求。
- 参数:
name:服务名称。service_class:服务类型。persistent:布尔值,默认为False。若设为True,会保持与服务服务器的持久连接。
- 示例代码:
rospy.wait_for_service('add_two_ints')
try:
add_two_ints = rospy.ServiceProxy('add_two_ints', AddTwoInts)
resp1 = add_two_ints(1, 2)
print(resp1.sum)
except rospy.ServiceException as e:
print("Service call failed: %s"%e)
- 应用场景:需要调用服务的节点。
4. 参数服务器操作
rospy.get_param
- 功能:从参数服务器获取参数值。
- 参数:
key:参数名称。default:默认值,当参数不存在时返回该值。
- 示例代码:
param_value = rospy.get_param('my_param', 'default_value')
- 应用场景:节点启动时读取配置参数。
rospy.set_param
- 功能:将参数设置到参数服务器。
- 参数:
key:参数名称。val:参数值。
- 示例代码:
rospy.set_param('my_param', 'new_value')
- 应用场景:在运行过程中动态修改配置参数。
rospy.has_param
- 功能:检查参数服务器中是否存在指定参数。
- 参数:
key:参数名称。
- 示例代码:
if rospy.has_param('my_param'):
print("Parameter exists.")
- 应用场景:在获取参数前先检查参数是否存在。
rospy.delete_param
- 功能:从参数服务器删除指定参数。
- 参数:
key:参数名称。
- 示例代码:
rospy.delete_param('my_param')
- 应用场景:清理不再需要的参数。
5. 时间与频率控制
rospy.Rate
- 功能:控制循环的执行频率。
- 参数:
hzv:频率值,单位为 Hz。
- 示例代码:
rate = rospy.Rate(10) # 10Hz
while not rospy.is_shutdown():
# 循环执行的代码
rate.sleep()
- 应用场景:需要按照固定频率执行任务的节点。
rospy.Time
- 功能:处理 ROS 中的时间,如获取当前时间、进行时间计算等。
- 常用方法:
rospy.Time.now():获取当前时间。rospy.Time.from_sec(secs):从秒数创建Time对象。rospy.Time.to_sec():将Time对象转换为秒数。
- 示例代码:
current_time = rospy.Time.now()
- 应用场景:在需要进行时间同步、计时等操作的节点中使用。
rospy.Duration
- 功能:表示一段时间间隔,可用于时间计算。
- 常用方法:
rospy.Duration(secs, nsecs):创建Duration对象。rospy.Duration.to_sec():将Duration对象转换为秒数。
- 示例代码:
duration = rospy.Duration(1, 500000000) # 1.5 秒
- 应用场景:在需要进行时间延迟、定时任务等操作的节点中使用。
6. 日志输出
rospy.logdebug
- 功能:输出调试级别的日志,通常用于开发和调试阶段。
- 参数:
msg:日志消息。
- 示例代码:
rospy.logdebug("This is a debug message.")
- 应用场景:在开发和调试时输出详细的调试信息。
rospy.loginfo
- 功能:输出信息级别的日志,用于记录正常运行时的信息。
- 参数:
msg:日志消息。
- 示例代码:
rospy.loginfo("This is an info message.")
- 应用场景:记录节点的正常运行状态、重要事件等信息。
rospy.logwarn
- 功能:输出警告级别的日志,用于提示可能存在的问题。
- 参数:
msg:日志消息。
- 示例代码:
rospy.logwarn("This is a warning message.")
- 应用场景:当节点遇到一些可能影响正常运行但不严重的问题时输出警告信息。
rospy.logerr
- 功能:输出错误级别的日志,用于记录严重的错误信息。
- 参数:
msg:日志消息。
- 示例代码:
rospy.logerr("This is an error message.")
- 应用场景:当节点遇到严重错误,无法正常运行时输出错误信息。
rospy.logfatal
- 功能:输出致命级别的日志,用于记录导致节点崩溃的错误信息。
- 参数:
msg:日志消息。
- 示例代码:
rospy.logfatal("This is a fatal message.")
- 应用场景:当节点遇到无法恢复的错误,即将崩溃时输出致命信息。
本文来自博客园,作者:Hany47315,转载请注明原文链接:https://www.cnblogs.com/hany-postq473111315/p/18795289

浙公网安备 33010602011771号