API

Author: kuzen, Natsu-Akatsuki

rosrun

rosrun <package_name> <executable>

注意

有可执行权限的文件,其文件名才能被命令行补全;使用该命令行启动python脚本时需要在首行添加解释器路径

rosbag

CLI

---回放---
rosbag play <包名>
只发布自己想要的主题
rosbag play school.bag --topic /rslidar_points
主题重映射
rosbag play school.bag /rslidar_points:=/velodyne_points
--clock     # publish the clock time
-r <n>      # 以n倍速播放
---录制---
rosbag record <主题名>
---裁剪---
这种时刻指的是ros时间戳,类似 1576119471.511449
rosbag filter <输入包名> <输出包名> "t.to_sec() < 某个时刻 and t.to_sec() > 某个时刻"
---压缩和解压---
rosbag compress/decompress <待压缩的包名>

拓展插件

  • 命令行rqt-bag:一个rosbag录制和回放,查看topic的图形化程序

rosnode

rosnode list

# python
import rosnode
node_list = rosnode.get_node_names()

rosnode kill

# python
node_list = rosnode.get_node_names()
_, _ = rosnode.kill_nodes(node_list)

rostopic

CLI

rostopic list       # 查看当前发布和订阅的主题
rostopic type <topic_name> # 查看主题的类型
rostopic echo <topic_name> # 查看主题中的数据
rostopic pub /topic_name topic_type [args...]  # 发布数据
options
-r: 指定发布的频率
-f: 从yaml文件中读取args
-s: 需配合-r模式使用,可使用auto和now这两个词的substitution
example
rostopic pub -s -r 4 /clicked_point geometry_msgs/PointStamped "header: auto
point:
  x: 0.0
  y: 0.0
  z: 0.0"
rostopic pub -s--use-rostime -r 4 /clicked_point geometry_msgs/PointStamped "header:
  seq: 0
  stamp: now
  frame_id: ''
point:
  x: 0.0
  y: 0.0
  z: 0.0"

注意

-s`好像只能替换命令行中的keyword;使用上-f`时,只能替换第一次的数据

rostopic list

# python
import rospy
topic_list = rospy.get_published_topics()

roslaunch

rospack

CLI

返回某个包的绝对路径
rospack find <pkg>

rospack find

# python
# 获取某个package的绝对路径
from rospkg import RosPack
rp = RosPack()
path = rp.get_path('package_name')   # 返回某个包的绝对路径

// cpp
#include <ros/package.h>
std::string path = ros::package::getPath("package_name");

rviz(cpp)

rosdep

rosdep相关于ros的apt,用于下载依赖包

rosdep install --from-paths src --ignore-src -r -y
-i, --ignore-packages-from-source, --ignore-src:若ROS_PACKAGE_PATH有这个包,则不rosdep安装
--from-paths:搜索路径
-r:Continue installing despite errors.
-y:Tell the package manager to default to y or fail when