ROS常用命令及问题 保存回放显示rosbag

0.需要修改的内容

0.1 修改package.xml

因为需要message_generation生成C++或Python能使用的代码,所以向package.xml文件中添加如下两行:

<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

0.2 修改CMakeLists.txt

CMakeLists.txt中有四个地方需要修改
1.向find_package()中添加message_generation

find_package(catkin REQUIRED COMPONENTS
  message_generation
  rospy
  std_msgs
)		

2.向add_message_files()中添加xxx.msg

add_message_files(FILES
  xxx.msg
)

3.去掉generate_messages()注释

generate_messages(DEPENDENCIES
  std_msgs
)

4.向catkin_package()添加message_runtime

catkin_package(
  CATKIN_DEPENDS
  message_runtime
)

返回工作空间执行:catkin_make
1.如果是cpp,catkin_make之后会在路径workspace/devel/include/package_name/下生产xxx.h的头文件。程序中包含改头文件即可。

#include <package_name/xxx.h>

2.如果是py,catkin_make之后会产生一个与包名相同的msg文件,从中import需要的消息类型即可。

from package_name.msg import xxx 

1.检查构建系统失败

CMake Error at /opt/ros/kinetic/share/catkin/cmake/catkin_package.cmake:196 (message):
  catkin_package() the catkin package 'std_msgs' has been find_package()-ed
  but is not listed as a build dependency in the package.xml
  ...
  Invoking "make cmake_check_build_system" failed

问题描述:
在CMakeList.txt中find_package已经包含了std_msgs,但是在package.xml构建中没有列出来。
在这里插入图片描述在这里插入图片描述
解决办法:
在package.xml中加入对应依赖即可
在这里插入图片描述

2.未知CMake命令

  CMake Error at xxx/CMakeLists.txt:17 (add_service_files):
  Unknown CMake command "add_service_files".
  ...
  CMake Error at xxx/CMakeLists.txt:17 (add_message_files):
  Unknown CMake command "add_message_files".
  ...
  CMake Error at xxx/CMakeLists.txt:17 (add_action_files):
  Unknown CMake command "add_action_files".
  ...
  Invoking "make cmake_check_build_system" failed

解决办法:
在CMakeList.txt中find_package加入message_generation 。

find_package(catkin REQUIRED COMPONENTS  
  message_generation  
  roscpp
  rospy
  std_msgs
)

3.ROS配置C++11环境

在ROS中,当c++里面有的关键字识别不了时,可能是c++编译环境出问题了。比如auto等关键字。
错误现象:
1.error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
2.error: ‘xxx’ has not been declared

sudo vim /opt/ros/kinetic/share/catkin/cmake/toplevel.cmake 

导数第二行插入:

set(CMAKE_CXX_FLAGS “-std=c++11 ${CMAKE_CXX_FLAGS}”)

或者在CMakeLists.txt取消注释行(最简单的方法)

## Compile as C++11, supported in ROS Kinetic and newer
add_compile_options(-std=c++11)

ROS相关命令

1.刷新运行

source ~/.bashrc  刷新工作环境
roscore
rosrun  package_name  exe_file 开始某个可执行文件(节点)

2.查找

rospack find package_name 查找包名路径
// 查看正在运行的节点
rosnode list
//查看ROS正在发布的话题
rostopic list

// 查看正在发布的topic的具体内容
rostopic echo topic_name

3.显示

// 显示消息类型详细信息
rosmsg show msgname

// 查看正在发布的topic的具体内容
rostopic echo topic_name
// 查看带宽
rostopic bw topic_name
// 查看发布频率
rostopic hz topic_name
// 查看topic相关信息
rostopic info topic_name

4.保存rosbag

// 保存所有节点的内容
mkdir ~/bagfiles
cd ~/bagfiles
rosbag record -a // -a选项表示将当前发布的所有 topic 数据都录制保存到一个rosbag文件中

// 只记录某些感兴趣的 topic
rosbag record /topic_name1 /topic_name2 /topic_name3
// 名称修改(-O表直接命名  -o表命名后跟日期时间)
rosbag record -O filename.bag /topic_name1

5.回放rosbag

// 显示数据包中的信息
rosbag info filename.bag

//回放
rosbag play  name.bag
//加速回放
rosbag play -r 2 name.bag
// 循环播放
rosbag play  -l   name.bag  
// 指定话题播放
rosbag play name.bag   --topic /topic1

// 查看正在发布的topic的具体内容
rostopic echo topic_name
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值