3.分布式通信
ROS是一种分布式软件框架,节点之间通过松耦合的方式进行组合。
如何实现分布式多机通信:
1.设置IP地址,确保底层链路的联通:
可以用ssh命令在终端远程操控另一台计算机。首先ifconfig查看计算机的ip地址,然后用sudo vim etc/hosts,将另一台计算机的ip地址放入hosts文件中,例如:192.168.1.1 pc-name。可以用ping pc-name,查看是否配置成功。
2.在机端设置ROS_MASTER_URI,让从机找到ROS MASTER:
因为ROS系统只能有一个ROS MASTER,所以要在从机上设置环境变量,告诉从机谁是ROS MASTER。sudo vim ~/.bashrc进入环境变量配置文件,加入export ROS_MASTER_URI=http://pc-name:11311,使得所有终端都有效。(11311是ROS MASTER的端口号)
4.ROS中的关键组件
4.1 Launch文件
通过XML文件实现多节点的配置和启动(可自动启动ROS MASTER),这样就比rosrun方法好很多了,还可以不用roscore来运行ROS MASTER。
4.2TF坐标变换
这些坐标是以树形结构存储的。若想要得到一个节点的坐标数据,就要缓冲整个树形结构的坐标数据。
如何实现一个TF广播器:
- 定义TF广播器(Transformer Broadcaster);
- 创建坐标变换值;
- 发布坐标变换(sendTransform)。
如何实现一个TF监听器:
- 定义TF监听器(Transform Listener);
- 查找坐标变换(waitForTransform、lookupTransform)。
如何编译代码:
- 设置编译的代码和文件;
- 设置链接库。
4.3Qt工具箱
用来看debug信息。
显示当前系统的节点关系。
可以绘制一些简单直观的图。
用可视化的界面来配置参数。
4.4Rviz可视化平台
ROS当中使用最为频繁的工具。将数据可视化显示出来,方便开发者理解。
rviz的插件机制,十分适合人机交互,可以利用Qt编程来达到以可视化的效果来实现机器人控制。
4.5Gazebo物理仿真环境
- 创建仿真环境;
- 配置机器人模型;
- 开始仿真
总结
http://wiki.org.org/ROS/Tutorials
http://wiki.ros.org/APIs
http://wiki.ros.org/roslaunch/XML
《机器人学导论(第三版)》