ROS个人笔记
写在前面:由于个人原因距离上次学习ROS已经过去了2周时间,本以为时间不算长,但还是忘记了好多。因此写下这篇笔记,主要是记录学习过程中的概念性问题,程序代码可能会写,但是不是主要。
1.ROS是什么:是一个生态系统,首先他是一个操作系统。统筹各种资源如通信,开发等。
2.在以往开发时一旦工程庞大起来往往会对数据流通的耦合十分苦恼,因此ROS提供的通信方式为松耦合式的:节点Node。
另外大工程时的另外一个痛点当然是怎么debug,最好显示出串口波形等,ROS也很贴心的提供了相应的开发工具如QT工具箱等。
最后就是最喜闻乐见的copy环节,他会提供一些现成的功能包即造好的轮子给我们使用。
总结为很牛逼的生态,还有相应的社区去讨论。
3.介绍通信方式:节点Node,ROSMaster会统筹这些Node的通信因此Node名字唯一。
4.节点间通信异步:话题Topic是一个通信总线的概念,总线Topic上传输的是消息话题数据message。话题的发起即总线的建立分为发布和订阅两种。即node1可以发布一个话题topic,其他任何node都可以去订阅,订阅成功总线建立成功。
节点间通信同步:服务service,发送请求和应答。话题传的数据是.msg。服务传的数据是.srv。
5.ROS Master的管理:参数。是一个全局的变量字典。各节点需要向master请求才能获取,因此不适合存动态数据。
6.文件系统:功能包。元功能包用于组织同一目的功能包。功能包不只是比节点大的概念,他里面可以纯节点。已经封装的很完全。ros master会管理功能包里的node。
7.Ros提供的命令行指令:rostopic,rosmsg等等,
roscore是用来启动ros master的。rosrun 功能包名 节点名(双击tab可自动补全)。
rqt开头的指令是qt相关的指令。rqt_graph。可以看到当前节点图。
rosnode可以查看节点相关信息,rostopic可以发话题发数据
rosbag record和play可以记录话题数据并复现
8.在你指令后加-r 频率(HZ),能循环执行。这个位置一般是到自定义数据前
2.ROS有四大工作区间,套用单片机工程来理解:src是存功能包的,即类似存main等函数。build是存编译过程文件的。devel是开发空间是用来放编译生成的可执行文件的也会放一些库和脚本。常规到这三个空间就已经够了,但是ROS具有丰富的生态,因此多了个install安装空间,用于存放安装的东西。
如何建立工程:(1)随意定个名字当工程名字,在这个文件夹下创建src文件夹,名字是不能改的,进入这个src文件夹运行catkin_init_workspace后返回上一级文件夹运行catkin_make编译一下。(让变动生效)。(2)设置环境变量,顺便建立devel文件夹(不过这个文件和bulid文件好像catkin_make会自动生成),source devel/setup.bash(3)catkin_make install生成安装空间(4)在src文件夹中创立功能包:catkin_create_pkg 名字 依赖(如rospy roscpp,std_msgs基本上都要这三个)(5)做出修改后最好重新catkin_make一下