说明
ROS基础指令及开发入门,参考ROS官方核心教程(http://wiki.ros.org/ROS/Tutorials,中文版http://wiki.ros.org/cn/ROS/Tutorials),这里记录自己学习教程时的提要和解决碰到问题的过程。
注:学习环境:Ubuntu18.04 + ROS melodic.
ROS-环境与package的基本指令
检查变量环境
$ printenv | grep ROS
查看ROS_ROOT 和ROS_PACKAGE_PATH 等相关的变量是否设置到与该工程一致。否则 source ~/project-env/devel/setup.sh
查找ros包及其信息
$ rospack find [package_name]
$ roscd [package_name]
$ rosls [package_name]
注意:自定义的ros包查找之前,需要先编译,否则ROS找不到,可以在输入ROS包名的时候tab自动不全,如果不会自动不全,说明相关的包没有编译。编译后,在当前终端下是生效的,其他之前打开的终端依然无效,可以打开新终端。
复制ROS包文件到指定地方
$ roscp [package_name] [file_to_copy_path] [copy_path]
#如:将rospy_tutorials包下面的AddTwoInts.srv文件到当前目录srv文件夹下,并命名为AddTwoInts.srv
$ roscp rospy_tutorials AddTwoInts.srv srv/AddTwoInts.srv
快捷打开一个ROS包中的文件
$ rosed [package] [filename]
文件将会在vim下打开。
使用rosed+tab tab浏览包中的文件
$ rosed [package] <tab><tab>
ros日志文件查询和清理
$ rosclean check
$ rosclean purge
新建一个ROS包
$ catkin_create_pkg [package_name] [depend1] [depend2] [depend3]
手动新建一个ROS包
- src下创建一个文件夹通常与package同名。
- package文件夹中加入package.xml,描述一个包参考如下,成功后使用
rospack find [package]
可以返回包的路径。更详细的说明参见http://wiki.ros.org/catkin/package.xml
<package>
<name>foobar</name>
<version>1.2.4</version>
<description>
This package provides foo capability.
</description>
<maintainer email="foobar@foo.bar.willowgarage.com">PR-foobar</maintainer>
<license>BSD</license>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>std_msgs</build_depend>
<run_depend>roscpp</run_depend>
<run_depend>std_msgs</run_depend>
</package>
- 同目录下新建CMakeLists.txt,编写cmake脚本,参考如下:具体可参考http://wiki.ros.org/catkin/CMakeLists.txt获取更多。
cmake_minimum_required(VERSION 2.8.3)
project(foobar)
find_package(catkin REQUIRED roscpp std_msgs)
catkin_package()
查看ros包的依赖
$ rospack depends1 [package_name] #列出一级依赖(常用)
$ rospack depends [package_name] #列出所有依赖
build一个ROS包
$ cd ~/catkin_ws #进入到工作空间根目录
$ catkin_make
$ catkin_make --source [source_path] #编译指定源文件目录
#如果没有实现添加到.bashrc,需要运行以下配置
$ . ~/catkin_ws/devel/setup.bash
#等效的
$ source ~/catkin_ws/devel/setup.bash
ROS-运行中的基础指令
运行ROS
$ roscore
#运行包中的节点
$ rosrun [pakage_name] [node_name]
以新名字运行的节点
$ rosrun [package_name] [node_name] __name:=[new_node_name]
查看运行的ROS节点
$ rosnode list
ping节点
$ rosnode ping my_turtle
查看节点连接图
$ rosrun rqt_graph rqt_graph
#或
$ rqt_graph
ROS-主题(topic)
查看ROS活跃的主题topic
$ rostopic list
$ rostopic list -v #显示详细的信息,包含message名
查看topic中的message(即消息数据结构)
#查看消息名
$ rostopic type [topic_name]
#查看消息具体结构
$ rosmsg show [message_name]
查看topic中发布的实时message数据
$ rostopic echo [topic]
查看topic发布的频率
$ rostopic hz [topic]
在终端发布topic
#发布一次结束
$ rostopic pub -1 [topic] [msg_type] [args]
#以xHz频率发送
$ rostopic pub -r 1 [topic] [msg_type] [args]
例如: