ROS基本命令
文件系统
rospack
- 返回软件包的所在路径
$ rospack find [package_name]
roscd
- 直接切换目录到某个软件包或者软件包集当中
$ roscd roscpp
- 也可以切换到一个软件包或软件包集的子目录中
$ roscd roscpp/cmake
注意,roscd只能切换到那些路径已经包含在ROS_PACKAGE_PATH环境变量中的软件包
$ roscd log
# 进入ros的日志文件所在目录,可能返回log文件不存在
rosls
- 直接按软件包的名称执行ls命令
$ rosls roscpp_tutorials
ROS节点
roscore
- roscore是你在运行所有ROS程序前首先要运行的命令。
rosnode
- 显示当前正在运行的ROS节点信息
$ rosnode list
# 列出当前正在活动的节点
$ rosnode info /rosout
# rosnode info 命令返回的是某个指定节点的信息
rosrun
- 允许你用包名直接运行软件包内的节点(而不需要知道包的路径)
$ rosrun [package_name] [node_name]
- 使用重映射参数来改变节点名称
$ rosrun turtlesim turtlesim_node __name:=my_turtle
ROS话题
rqt_graph
- 用动态的图显示当前运行的节点和话题
$ rosrun rqt_graph rqt_graph
rostopic
- 查看可用的rostopic的子命令
$ rostopic -h
- 显示在某个话题上发布的数据
$ rostopic echo [topic]
- 查看list子命令需要的参数
rostopic list -h
- 列出所有发布和订阅的话题及其类型的详细信息
$ rostopic list -v
rostopic type
- 查看发布在话题上的消息的类型
$ rostopic type [topic]
- 查看消息的详细信息
$ rosmsg show [message type]
rostopic pub
- 把数据发布到当前某个正在广播的话题上
$ rostopic pub [topic] [msg_type] [args]
- 示例
$ rostopic pub -1 /turtle1/cmd_vel geometry_msgs/Twist -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
- 分析
rostopic pub
# 这条命令将消息发布到指定的话题
-1
# 这一选项会让rostopic只发布一条消息,然后退出
/turtle1/cmd_vel
# 这是要发布到的话题的名称
geometry_msgs/Twist
# 这是发布到话题时要使用的消息的类型
--
# 这一选项(两个破折号)用来告诉选项解析器,表明之后的参数都不是选项。如果参数前有破折号(-)比如负数,那么这是必需的
'[2.0, 0.0, 0.0]' '[0.0, 0.0, 1.8]'
# 一个turtlesim/Velocity消息有两个浮点型元素:linear和angular。在本例中,'[2.0, 0.0, 0.0]'表示linear的值为x=2.0, y=0.0, z=0.0,而'[0.0, 0.0, 1.8]'是说angular的值为x=0.0, y=0.0, z=1.8
rqt_plot
- 在滚动时间图上显示发布到某个话题上的数据
$ rosrun rqt_plot rqt_plot
ROS服务
rosservice
rosservice list 输出活跃服务的信息
rosservice call 用给定的参数调用服务
rosservice type 输出服务的类型
rosservice find 按服务的类型查找服务
rosservice uri 输出服务的ROSRPC uri
- 输出活跃的服务的信息
$ rosservice list
- 查看服务类型
$ rosservice type [service]
- 用给定的参数调用服务
$ rosservice call [service] [args]
ROS参数
参数服务器
- 节点使用参数服务器来存储参数以及在运行时检索参数
- 最好用于静态数据,例如配置参数
- 参数可以在启动文件或单独的YAML文件中定义
rosparam set 设置参数
rosparam get 获取参数
rosparam load 从文件中加载参数
rosparam dump 向文件中转储参数
rosparam delete 删除参数
rosparam list 列出参数名
- 列出参数名
$ rosparam list
- 设置参数
$ rosparam set [param_name] value
- 获取参数
$ rosparam get [param_name]
- 显示参数服务器上的所有内容
$ rosparam get /
- 将参数写入文件
rosparam dump params.yaml
- 从文件读取参数
rosparam load params.yaml
安装依赖
- 直接安装一个特定的依赖
sudo apt-get install ros-noetic-pointcloud_to_laserscan
# noetic为ROS版本,poincloud_to_laserscan为依赖包名称
- 为一个软件包安装所有依赖
rosdep <package_name>
PS:这个命令由于一些众所周知的原因,可能无法使用,这里有一个解决方法
- 一键安装一个功能包所有的依赖
rosdep install --from-paths src --ignore-src -r -y
# 用于安装工作空间中 src 路径下所有package的依赖项(由pacakge.xml文件指定)