一、ROS 框架+工具+功能+社区(生态)
分布式架构 节点为进程
gazbo rvis slam
控制 规划 视觉 建图
软件包管理 apt-get(包管理工具)
ROS学习软件包:1、ROS官网的ROS Wiki 有各种文档 资料 教程
2、github ros相关的源代码都在上面
软件包的两种安装方式:
1、apt-get 二进制的安装方式 安装好后可以直e接使用 不会看到软件的源代码
2、另一种是源代码包 需要编译之后才能运行
二、工程结构,就是文件系统
catkin 是编译构建系统 也就是对代码进行编译的工具
rosbuild 老旧的一套编译系统 移植性不好
workspace:
src 自己建的 放代码包pkg(下面的是catkin_make生成的)
build 放cmake缓存文件和中间文件等
devel 放生成的目标文件
pkg:
cmakelisits:规定catkin编译规则
package.xml:自我描述 (rosbuild生成的是manifest.xml)
源代码
scripts:。py。sh
include:。h
src:。cpp/。py
自定义通信格式/内容
srv:
msg:
action:
其他
launch:一次性运行多个可执行文件
config:。yaml
指令
rospack find
rospack list
roscd
rosls
rosed (vi?)
catkin_create_pkg
rosdep install
三、metabackage
虚包,方便人们安装,通过依赖装一个等于装所有
四、通讯架构
roscore 启动ros master
rosrun [pkg_name][node_name] 启动一个node
roslaunch [pkg][file.launch] 启动master和launch里所有的node
管理node 可以看到消息收发和功能
rosnode list
rosnode info [node_name]
rosnode kill [node_name]
通信方式
1、topic(string) pubulish-subscribe
异步:发布者只管发布,不管返回状态;订阅者有消息就订阅,没消息就干别的
数据类型:message 或者说是数据规范 类 数据内容 对象 “类和对象”
类型定义:pkg/.msg
rostopic list
rostopic info/echo/pub /topic_name
rosmsg list
rosmsg show /msg_name
echo:显示某topic的内容
深度图+rgb+点云????? 定位 建图 识别
kinect相机范围1m-2/3m左右
××这一讲差一点指令应用 大概最后几分钟
2、service request-reply
同步:提供一个服务 client调用服务才会计算 不调用就不执行
远程过程调用RPC 偶尔需要的任务用service
数据格式:/.srv里定义
只能嵌套msg文件 (可以自定义 要在pkg.xml里添加依赖和在cmakelist里添加一些东西)
rosservice list
rosservice info service_name
rosservice call service_name args
srv是service的类型 就像msg是topic的数据类型 一般是request — reply
rossrv list
rossrv show srv_name
调用一个service:
info这个service 可以查到是由哪个node提供的服务和数据类型srv(type)
show一下这个srv的内容 知道要用什么样的格式request reply的又是什么
再用rosservice call 这个service 参数是show里看到的request里写的(也可以用tab提示)
也就是show的作用 就是让你知道call时最后的参数args 比如
$ rosservice call /gazebo/delete_light sun
3、parameter service
参数服务器 存的是字典 key对应的value 一些不怎么改动的配置参数可以放在这里面
rosparam list
rosparam get param_key
rosparam set param_key param_value
rosparam dump file_name
rosparam load file_name
rosparam delete param_key
get相当于info
dump 保存参数到文件 load 从文件读取参数 参数都是yaml格式的
launch文件里也涉及参数的读写 param设定标签后交给参数服务器维护 rosparam读取yaml格式的文件 相当于rosparam load
还一种是API里