文章目录
一.ROS文件系统
$ export | grep ROS # 确保已经正确配置了脚本环境
$ echo $ROS_PACKAGE_PATH # 查看ros环境变量是否包含工作空间目录
$ rospack find [包名称] # 返回软件包的路径信息
$ roscd [本地包名称[/子目录]] # 直接切换工作目录到某个软件包或软件包集当中
$ pwd # 输出当前工作目录
$ roscd long # 切换到ROS保存日志文件的目录下
$ rosls [本地包名称[/子目录]] # 罗列目录,允许直接按软件包的名称而不是绝对路径执行命令
二.创建ROS程序包\编译ROS程序包
$ mkdir [工作空间名称] && cd [工作空间名称] && mkdir src #创建工作空间
$ catkin_make
$ echo "source ~/ork_ws/devel/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
$ catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
# 创建一个名为package_name,且依赖于depend1-3的软件包
# package.xml为说明标签文件
$ rospack depends1 [软件包名] # 查看一级依赖
$ rospack depends [软件包名] # 查看所有依赖包
三.ROS节点
$ rosnode list # 列出当前活跃的节点
$ rosnode info [节点名] # 返回一个特定节点的信息
$ rosrun [package_name] [node_name] # 运行一个包内的节点
$ rosnode ping [节点名] # 测试节点连接情况
四.ROS话题
$ sudo apt-get install ros-<distro>-rqt
$ sudo apt-get install ros-<distro>-rqt-common-plugins
# 安装rqt_graph,显示当前系统运行情况的动态图形
$ rosrun rqt_graph rqt_graph # 运行rqt_graph
$ rqt_graph
$ rostopic -h # 使用帮助选项查看rostopic子命令
$ rostopic echo [topic] # 显示在某个话题上发布的数据
$ rostopic list # 列出所有当前订阅和发布的话题
$ rostopic list -h #
$ rostopic list -v # 显示出有关所发布和订阅的话题及其类型的详细信息
$ rostopic type [topic] # 查看所发布话题的消息类型
$ rostopic pub [topic] [msg_type] [args]# 把数据发布到当前某个正在广播的话题上
$ rostopic pub -r # 发布一个稳定的命令流
$ rostopic hz [topic] # 用来查看数据发布的频率
$ rostopic type [topic] | rosmsg show # 查看某个话题的更深层次的信息
$ rosrun rqt_plot rqt_plot # 实时显示一个发布到某个话题上的数据变化图形
命令成分 | 作用 |
---|---|
rostopic pub | 发布消息到话题的指令 |
-1 | 只发送一次 |
-r | 表示重复发送命令 |
/turtle1/cmd_vel | 发送给哪个话题 |
geometry_msgs/Twist | 发送消息类型 |
- - | 表示后面出现的 ’ - ’ 不表示命令 |
‘[2,0,0]’ ‘[0,0,1.8]’ | 发送消息内容,格式可以查询http://wiki.ros.org/ROS/YAMLCommandLine |
例:rostopic pub /turtle1/cmd_vel geometry_msgs/Twist -r 1 -- '[2.0, 0.0, 0.0]' '[0.0, 0.0, -1.8]'
五.ROS服务和参数
$ rosservice list # 输出可用服务的信息
$ rosservice call [service] [args] # 调用带参数的服务
$ rosservice type [service] # 输出服务类型
# empty,服务类型为空,表明在调用这个服务时不需要从参数
$ rosservice find # 依据类型寻找服务
$ rosservice uri # 输出服务的ROSRPC uri
$ rosparam set [param_name] # 设置参数
$ rosparam get [param_name] # 获取参数
$ rosparam get / # 显示参数服务器上的所有内容
$ rosparam load [file_name] # 从文件读取参数
$ rosparam dump [file_name] # 向文件中写入参数
$ rosparam delete # 删除参数
$ rosparam list # 列出参数名
六.使用rqt_console和runlaunch
$ rosrun rqt_console rqt_console # ROS日志框架的一部分,用来显示节点的输出信息
$ rosrun rqt_logger_level rqt_logger_level # 允许我们修改节点运行时输出信息的日志等级(logger levels)(包括DEBUG,WARN,INFO,ERROR)
日志等级优先级:Fatal > Error > Warn > Info > Debug
$ roslaunch [package] [filename.launch] # 用来启动定义在launch文件中的多个节点
$ touch [filename.launch] # 创建.launch文件
七.使用rosed编辑ROS中的文件
$ rosed [package_name] [filename] #rosed是rosbash(/rosbash)的一部分,利用它可通过包名来获取到待编辑文件
八.ROS消息(msg)和ROS服务(srv)
$ cd ~/catkin_ws/src/beginner_tutorials
$ mkdir msg
$ echo "int64 num" > msg/Num.msg
$ rosmsg show [message type] #检查ROS是否能够识别消息
$ roscd [package]
$ mkdir srv
$ roscp [package_name] [file_to_copy_path] [copy_path] #实现将文件从一个package复制到另外一个package的功能
$ rossrv show <service type> #检查ROS是否能够识该服务
$ ros命令 -h
九.消息发布器和订阅器
$ roscore # 启动ros发布器
$ source ./devel/setup.sh
$ rosrun [pakage] [发布器节点] # 启动发布器
$ rosrun [pakage] [发布器节点.py]
$ rosrun [pakage] [订阅器节点] # 启动订阅器节点
$ rosrun [pakage] [订阅器节点.py]
$ rostopic list -v #查看当前系统中发布的所有话题
$ rosbag record -a #录制所有节点发布的所有信息
$ rosbag info <your bagfile> # 查看bag文件中的内容
$ rosbag play <your bagfile> # 回放录制的bag数据
$ rosbag play -r 2 <bagfile> # 通过设定一个参数来改变消息的发布速率,此处为两倍
$ rosbag record -O <your bagfile> <topic1> <topic2> # 录制指定的话题1和话题2
$ roscd # 进入当前工作空间
$ roswtf # 没有启动roscore时,roswtf做的是安装检查;