1、启动ROS
roscore
2、创建工作环境
# 创建工作空间
mkdir -p catkin_ws/src # 创建代码空间
cd ~/catkin_ws/src # 进入代码文件夹
catkin_init_workspace # 初始化当前文件夹
3、创建功能包
cd ~/catkin_ws/src
catkin_create_pkg <package_name> [depend1] [depend2] [depend3]
注意: 同一个工作空间下,不允许存在同名功能包;不同工作空间下,允许存在同名功能包
4、编译ROS程序
# 编译工作空间
cd ~/catkin_ws
catkin_make
catkin_make install
5、添加程序包到全局路径
source ~/catkin_ws/devel/setup.bash # 设置环境变量
echo $ROS_PACKAGE_PATH # 检查环境变量
6、文件操作相关命令
sudo apt install XXX # 安装ROS功能包
sudo apt purge XXX # 删除某个功能包
apt search XXX # 搜索某个功能包
rosed 包名 文件名 # 修改功能包文件,需要先安装vim
1、rospack
rospack是对package管理的工具,命令的用法如下:
rospack命令 | 作用 |
---|---|
rospack help | 显示rospack的用法 |
rospack list | 列出本机所有package |
rospack depends [package] | 显示package的依赖包 |
rospack find [package] | 定位某个package |
rospack profile | 刷新所有package的位置记录 |
注:以上命令如果package缺省,则默认为当前目录(如果当前目录包含package.xml)
2、roscd
roscd [package] # 切换到ROS package所在路径
3、rosls
rosls [package] # 列出package下的文件
4、rosdep
rosdep 是用于管理ROS package依赖项的命令行工具,用法如下:
rosdep命令 | 作用 |
---|---|
rosdep check [package] | 检查package的依赖是否满足 |
rosdep install [package] | 安装package的依赖 |
rosdep db | 生成和显示依赖数据库 |
rosdep init | 初始化/etc/ros/rosdep中的源 |
rosdep keys | 检查package的依赖是否满足 |
rosdep update | 更新本地的rosdep数据库 |
常用命令演示:
打开一个终端,输入 roscore
后,再打开一个终端,假设我们要查看 turtlesim
,如下:
rospack list # 查看软件包列表和定位软件包
rospack find turtlesim # 寻找一个软件包的目录
rosls turtlesim # 查看软件包
roscd turtlesim # 切换至软件包目录
rospack depends turtlesim # 查看软件包的依赖
1、rosrun
rosrun [--prefix cmd] [--debug] pkg_name node_name [ARGS]
# rosrun将会寻找PACKAGE下的名为EXECUTABLE的可执行程序,将可选参数ARGS传入。
2、rosnode
rosnode相当于ros节点管理命令,通过此命令可以查看、操作以及监测已经运行的ros节点,详细命令如下:
rosnode命令 | 作用 |
---|---|
rosnode list | 列出当前运行的node信息 |
rosnode info node_name | 显示node的详细信息 |
rosnode kill node_name | 结束某个node |
rosnode ping | 测试连接节点 |
rosnode machine | 列出在特定机器或列表机器上运行的节点 |
rosnode cleanup | 清楚不可到达节点的注册信息 |
常用命令演示:
rosrun turtlesim turtlesim_node # 启动小海龟仿真器
rosnode list # 查看当前系统运行的ros节点
rosnode info /turtlesim # 查看节点/turtlesim的信息
rosnode ping /turtlesim # 测试节点/turtlesim是否正常
rosnode kill /turtlesim # 关闭节点/turtlesim
rosnode ping -all # 测试系统所有节点是否正常运行
rosnode kill --all # 关闭所有节点
运行结果如下图:
rostopic包含rostopic命令行工具,用于显示有关ROS 主题的调试信息,包括发布者,订阅者,发布频率和ROS消息。它还包含一个实验性Python库,用于动态获取有关主题的信息并与之交互。
rostopic命令 | 作用 |
---|---|
rostopic list | 列出当前所有的topic |
rostopic info topic_name | 显示某个topic的属性信息 |
rostopic echo topic_name | 显示某个topic的内容 |
rostopic pub topic_name … | 向某个topic发布内容 |
rostopic bw topic_name | 查看某个topic的带宽 |
rostopic hz topic_name | 查看某个topic的频率 |
rostopic find topic_type | 查看某个类型的topic |
rostopic type topic_name | 查看某个topic的类型(msg) |
rostopic delay | 显示带有 header 的主题延迟 |
常用命令演示:
rostopic -h # 查看 rostopic 所有操作
rostopic list # 查看当前系统中存在的话题
rostopic info /turtle1/pose # 查看话题/turtle1/pose信息
rostopic echo /turtle1/pose # 查看话题/turtle1/pose内容,获得小海龟位置信息
rostopic hz /turtle1/pose # 查看话题/turtle1/pose通信频率
rostopic bw /turtle1/pose # 查看话题/turtle1/pose通信带宽
# 原型:rostopic pub [-1] [-r 1] -- [args] [args]
# 发布话题/turtle1/cmd_vel,只需要输入rostopic pub /turtle1/cmd_vel后,按两次Tab键,命令会自动补齐,然后加上后面的“-r 1”,
表示发布频率为1Hz,修改z值,将0.0改为1.0,表示绕Z轴按照逆时针方向,角速度为1rad/s。
rostopic pub /turtle1/cmd_vel geometry_msgs/Twist "linear:
x: 0.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 1.0"-r 1
运行效果如下图所示:
rosmsg是用于显示有关 ROS消息类型的信息的命令行工具。
rosmsg命令 | 作用 |
---|---|
rosmsg list | 列出系统上所有的消息 |
rosmsg show msg_name | 显示某个消息的描述 |
rosmsg info msg_name | 显示某个消息的信息 |
rosmsg md5 | 显示 md5 加密后的消息 |
rosmsg package | 显示某个功能包下的所有消息 |
rosmsg packages | 列出包含消息的功能包 |
常用命令演示:
rosmsg package turtlesim # rosmsg package 包名,列出某个包下的所有msg
rosmsg show turtlesim/Pose # rosmsg show 消息名称,显示消息描述
rosservice包含用于列出和查询ROSServices的rosservice命令行工具。调用部分服务时,如果对相关工作空间没有配置 path,需要进入工作空间调用 source ./devel/setup.bash
,详细命令如下表:
rosservice命令 | 作用 |
---|---|
rosservice list | 显示服务列表 |
rosservice info | 打印服务信息 |
rosservice type | 打印服务类型 |
rosservice uri | 打印服务ROSRPC uri |
rosservice find | 按服务类型查找服务 |
rosservice call | 使用所提供的args调用服务 |
rosservice args | 打印服务参数 |
常用命令演示:
rosservice -h # 查看所有service操作
roservice list # 查看 service 列表
rosservice args /spawn # 打印服务参数
roservice type /spawn | rossrv show # 查看 service 格式并显示数据
# roservice call [service] [args],调用 service调用服务,为小乌龟的案例生成一只新的乌龟
rosservice call /spawn "x: 1.0
y: 2.0
theta: 0.0
name: 'turtle2'"
name: "turtle2"
rossrv是用于显示有关ROS服务类型的信息的命令行工具,如下表:
rossrv命令 | 作用 |
---|---|
rossrv show | 显示服务消息详情 |
rossrv info | 显示服务消息相关信息 |
rossrv list | 列出所有服务信息 |
rossrv md5 | 显示 md5 加密后的服务消息 |
rossrv package | 列出某个包下所有服务消息 |
rossrv packages | 列出包含服务消息的所有包 |
常用命令演示:
rossrv list # 会列出当前ROS中的所有srv消息
rossrv package turtlesim # rossrv package 包名,列出某个包下的所有msg
rossrv show turtlesim/Spawn # rossrv show 消息名称,显示消息描述
rosparam包含rosparam命令行工具,用于使用YAML编码文件在参数服务器上获取和设置ROS参数使用命令行来维护参数服务器,如下表:
rosparam命令 | 作用 |
---|---|
rosparam set param_key param_value | 设置参数 |
rosparam get param_key | 显示参数 |
rosparam load file_name | 从外部文件加载参数 |
rosparam dump filename | 保存参数到外部文件 |
rosparam delete | 删除参数 |
rosparam list | 列出所有参数名称 |
常用命令演示:
rosparam list # 列出所有参数
rosparam set name nuaa # rosparam set [parame_name] [args],设置service parameter
rosparam get name # 获得parameter
rosparam delete name # 删除parameter
rosparam load xxx.yaml # rosparam load [file_name] [namespace],从外部文件加载参数
rosparam dump yyy.yaml # 将参数写出到外部文件
rqt是一个基于qt开发的可视化工具,拥有扩展性好、灵活易用、跨平台等特点,相关命令如下:
1、rqt_graph
rqt_graph是来显示通信架构,可以通过计算图显示当前有哪些Node和topic在运行,可以直观的看到ROS的通信架构和信息流,方便我们的理解。
2、rqt_plot
rqt_plot将一些参数,尤其是动态参数以曲线的形式绘制出来。当我们在开发时查看机器人的原始数据,我们就能利用rqt_plot将这些原始数据用曲线绘制出来,可以极大的帮助我们了解数据的变化态势,理解数据流的作用,用曲线来显示我们的操作,精确直观。
3、rqt_console
rqt_console里存在一些过滤器,我们可以利用它方便的查到我们需要的日志。
常用命令演示:
rqt_graph # 查看系统中运行的计算图
# 图形化显示 topic
rosrun rqt_graph rqt_graph
rosrun rqt_plot rqt_plot
了解更多,请参考:rqt工具箱。
rosbag是一套用于记录和回放ROS主题的工具。它旨在提高性能,并避免消息的反序列化和重新排序。rosbag对软件包来操作,一个包是ROS用于存储ROS消息数据的文件格式,rosbag命令可以记录、回放和操作包。指令列表如下:
rosbag命令 | 作用 |
---|---|
rosbag cheak | 确定一个包是否可以在当前系统中进行,或者是否可以迁移 |
rosbag decompress | 压缩一个或多个包文件 |
rosbag filter | 解压一个或多个包文件 |
rosbag fix | 在包文件中修复消息,以便在当前系统中播放 |
rosbag help | 获取相关命令指示帮助信息 |
rosbag info | 总结一个或多个包文件的内容 |
rosbag paly | 以一种时间同步的方式回放一个或多个包文件的内容 |
rosbag record | 用指定主题的内容记录一个包文件 |
rosbag reindex | 重新索引一个或多个包文件 |
常用命令演示:
rosbag record -a -O 目标文件 # 开始录制,并将目标文件保存在当前文件夹
rosbag info 文件名 # 查看文件
rosbag paly 文件名 # 回放文件
rosbag record -a # 录制所有topic变化
补充:
rosbag通过命令行能够对软件包进行很多的操作,更重要的拥有代码API,可以对包进行重新编写。增加一个ROS API,用于通过服务调用与播放和录制节点进行交互。了解更多,请参考:rosbag使用。