ROS学习笔记

目录

1 创建、编译和运行

1.1 创建程序包

1.2 编译

1.3 运行

2 ROS话题

2.1 rqt_graph

2.2 rostopic

2.3 rqt_plot

3 ROS服务和参数

3.1 rosservice call

3.2 rosparam

4 rqt_console、roslaunch和rosed

4.1 rqt_console

4.2 roslaunch

4.3 rosed

5 创建ROS消息和ROS服务

5.1 ROS消息(msg)

5.2 ROS服务(srv)

5.3 msg和srv都需要的步骤

6 c++消息发布器和订阅器代码解析

6.1 发布器代码

6.2 订阅器代码

6.3 编译发布器和订阅器

7 c++服务端和客户端代码解析

7.1 服务端代码

7.2 客户端代码


1 创建、编译和运行

1.1 创建程序包

$ cd ~/catkin_ws/src

# catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

例子:

$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

1.2 编译

# catkin_make [make_targets] [-DCMAKE_VARIABLES=...]

1.3 运行

$ roscore

新开一个终端:

# rosrun [package_name] [node_name]

包名+节点名 可在CMakeLists.txt文件中找到

 

2 ROS话题

两个节点间通过话题进行通信。在一个节点发布信息,然后另一个节点订阅该话题接受信息。

2.1 rqt_graph

rqt_graph能够创建一个显示当前系统运行情况的动态图形。即看清楚看出两个节点之间的通信。

$ rosrun rqt_graph rqt_graph

2.2 rostopic

$ rostopic -h
rostopic bw     display bandwidth used by topic
rostopic echo   可以显示在某个话题上发布的数据。
rostopic hz     可以用来查看数据发布的频率。
rostopic list   能够列出所有当前订阅和发布的话题。
rostopic pub    可以把数据发布到当前某个正在广播的话题上。
rostopic type   用来查看所发布话题的消息类型。

rostopic pub用法:

# rostopic pub [topic] [msg_type] [args]

[topic] 话题名称

[msg_type] 消息类型,可以用命令 rostopic type 获得

[args] 需要发布的参数 可以用命令 rosmsg show [topic] 获得需要输入的参数类型

例子:

$ rostopic type /turtle1/command_velocity
$ rosmsg show turtlesim/Velocity
$ rostopic pub -1 /turtle1/command_velocity turtlesim/Velocity  -- 2.0  1.8

注:-1 (单个破折号)这个参数选项使rostopic发布一条消息后马上退出。

   --  (双破折号)这会告诉命令选项解析器接下来的参数部分都不是命令选项。这在参数里面包含有破折号-(比如负号)时是必须要添加的。

2.3 rqt_plot

rqt_plot命令可以实时显示一个发布到某个话题上的数据变化图形。

$ rosrun rqt_plot rqt_plot

 

3 ROS服务和参数

服务(services)是节点之间通讯的另一种方式。服务允许节点发送请求(request) 并获得一个响应(response)

rosservice list         输出可用服务的信息
rosservice call         调用带参数的服务
rosservice type         输出服务类型
rosservice find         依据类型寻找服务find services by service type
rosservice uri          输出服务的ROSRPC uri

3.1 rosservice call

# rosservice call [service] [args]

args通过以下命令获取:

$ rosservice type [service]| rossrv show

3.2 rosparam

rosparam使得我们能够存储并操作ROS 参数服务器(Parameter Server)上的数据。参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。rosparam使用YAML标记语言的语法。一般而言,YAML的表述很自然:1 是整型, 1.0是浮点型, one是字符串, true是布尔, [1, 2, 3]是整型列表, {a: b, c: d}是字典. rosparam有很多指令可以用来操作参数。

rosparam set            设置参数
rosparam get            获取参数
rosparam load           从文件读取参数
rosparam dump           向文件中写入参数
rosparam delete         删除参数
rosparam list           列出参数名

Usage:

rosparam set [param_name]
rosparam get [param_name]
rosparam dump [file_name]
rosparam load [file_name] [namespace]
 

可以使用rosparam get /来显示参数服务器上的所有内容:

$ rosparam get /

将所有的参数写入params.yaml文件:

$ rosparam dump params.yaml

 

4 rqt_console、roslaunch和rosed

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值