参考链接:
文章目录
ROS简介
1.最常用 ROS 2016 kinetic 长期版本,支持5年。ROS 运行在linux下的中间件=框架+工具+功能+社区。
2.框架:定好的规范,分布式架构(扩展性高),进程管理,进程间通讯,叫节点node。可以仿真和调试。
3.功能:有很多可视包。官网有软件包,还有github。
catkin:工作空间
用来组织和管理功能包的文件夹。1.mkdir -p ~/catkin_ws/src 新建文件夹 catkon_init_workspace 2.cd ~/catkin_ws/ 3.catkin_make 系统可以自动构建并生成目标文件。 注意:.cd ~/catkin_ws/ 要回到工作空间才可以 然后source ~/catkin_ws/ devel/setuo.bash 编译完成后刷新环境,这样系统才知道我们生成的可执行文件放在哪里,才可以运行。source环境 build 存放cmake&catkin缓存和中间文件 devel 目标文件 头文件,动态静态链接库,可执行文件。 package1是catkin编译的基本单位,是ros软件的基本组织形式。一个package包含多个可执行文件。最精简的结构要包含:CMakeLists.txt和package.xml。也可以放自定义通信格式:消息(msg),服务(srv),动作(action)。 CML:规定catkin的编译规则。例如:源文件,依赖项,目标文件。 pack.xml 定义pack的属性:包含,版本号,作者,依赖等 代码文件:python,c++,shell。通常在package下新建:scripts文件夹(放*.py,.sh),include(.h),src(.cpp),srv(,srv)。launch以及配置文件 launch文件,config(配置文件,*.yaml)
通信架构
计算图层:master节点管理器:启动时先注册,管理,rosout:日志输出 parameter server:参数服务器。可执行文件就是node,node是动态的,可执行文件就是静态的。node是以功能划分的。
rosrun [pkg_name][node_name]启动一个node
rosnoed list 列出当前运行的node
rosnode info[node_name]小说某个node的详细信息
rosnode kill [node_name]结束某个node
roslaunch[pkg_bame][file_name.launch]启动master和多个nodw 机器人启动时候的包名:pr2-bringup pr2.launch
通讯方式
通信方式:topic用的最多,类似一个频道,A发B收,/topic类似一个字符串。异步通讯方式:一个发一个收,也可以多个收多个发,接收者收到数据有回调函数 message:topic内容的数据类型,定义在*.msg中,类似于类。
打印数据
打印数据使用 ROS_INFO 和 ROS_INFO_STREAM 。
ROS_INFO_STREAM("frame_id"<<msg->header.frame_id);
ROS_INFO("frame_id:%s",msg->header.frame_id.c_str());
注意: ROS_INFO 在打印字符串的时候一定要转换,因为不能直接输出 std::string,需要转成 c_str:
数据类型包括
bool,int8,int16,int32 int64,float32,float64,string,time,duration,header,可变长数组array[] 类似 vector,固定长数组array[]。
创建PKG时常用的msg
pcl_conversions
pcl_ros
roscpp
std_msgs,
sensor_msgs
nav_msgs
geometry_msgs
tf2
tf2_geometry_msgs
tf2_ros