目录
P6:《ros是什么》
ros = 通信机制+开发工具+应用功能+生态系统
主要目标:提高在机器人开发过程中的软件复用率
P7:《ros核心概念》
节点: 执行具体任务的进程、独立运行的可执行程序
节点管理器: ros master
话题Topic、消息Message、发布publish、订阅subscribe
服务Service、服务srv、请求Request、应答Reply
参数服务器Parameter
功能包
元功能包
P8:《ros命令行工具的使用》
rosrun: rosrun+功能包+节点
rqt_graph: 查看整个系统全貌
rosnode:查看所有节点
rosnode list 查看ros系统中所有节点
rosnode info 查看某个节点具体信息
rostopic:查看话题:
rostopic list
rostopic pub +话题名+消息结构+“具体数据”
rosmsg:查看消息结构
rosmsg show
rosservice:查看服务
rosservice list
rosservice call
rosbag:继续话题数据并保存
rosbag record -a(all) -O cmd_record 记录所有的话题
rosbag play cmd_record.bag
P9:《创建工作空间与功能包》
创建工作空间+编译
echo $ROS_PACKAGE_PATH
创建功能包:catkin_create_package+功能包名+依赖包
package.xml功能包的描述文件:版本号,功能包的名字,维护者邮箱,编译/运行所需依赖项
CMakeLists.txt功能包的编译规则:
P10:《发布者Publisher的编程实现》
初始化节点
向ros master注册节点消息
创建消息
发布消息
P11:《订阅者Subscriber的编程实现》
创建初始化节点
创建需要订阅的话题
循环等待消息
回调函数相应消息处理
P12:《话题消息的定义与使用》
1.数据接口的定义 file.msg (Person.msg 自定义消息文件与语言无关)
2.package.xml中添加功能包的依赖(动态生成程序的功能包)
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
3.CMakeList.txt添加编译选项
find_package(... message_generation)
add_message_files(FILES Person.msg)
generate_messages(DEPENDENCIES std_msgs)
catkin_package(... message_runtime)
//有些代码是动态生成的。add_dependencies作用是与msg生成的.h头文件去做连接的
add_dependencies(person_subscriber ${${PROJECT_NAME}_generate_messages_cpp) //跟自定义消息产生连接
P13:《客户端Client的编程实现》
初始化节点
创建客户端
发布请求数据 call
等待应答结果
P14:《服务端server的编程实现》
初始化节点
创建并注册服务端
循环等待,进入回调 spinonce (ROS消息回调处理函数,配合while循环使用)
回调处理并反馈应答
P15:《服务数据的定义与使用》
P16:《参数的使用与编程方法》
Parameter Server 全局字典
rosparam参数命令行工具:(yaml文件)
rosparam list
rosparam get /参数名
rosparam set /参数名 +参数值
rosparam dump 把参数保存成文件
rosparanm load +yaml 加载参数文件
P19:《launch启动文件的使用方法》
launch文件,能自启动roscore命令
<node>标签:启动节点 <node pkg="package-name" type="executable-name" name="node-name"/>
output打印日志到终端
respawn节点启动失败是否需要重启
required是否必须启动
ns:namespace 给每个节点做个命名空间
args:输入参数
<param>标签:加载参数到参数服务器
设置ros系统中的参数,存储在参数服务器中
<param name="output_frame" value="odom"/>
加载参数文件
<rosparam file="params.yaml" command="load" ns="params"/>
<arg>标签:launch文件内部的局部变量,仅限于launch文件使用
<arg name="arg-name" default="arg-value"/>
eg:调用
<param name="foo" value="$(arg arg-name)"/>
<remap>标签:重映射ros计算图资源的命名
<remap from="/turtle1/cmd_vel" to="/cmd_vel"/>
from:原名,to:重命名之后的名
<include>标签:包含其他launch文件
<include file="$(dirname)/other.launch"/>