本博客讨论了关于在实际机器人或者模拟机器人系统上的选项。
作为初学者的教程,我们应该对ROS的核心概念有一个了解。
假设存在一个robot能够运行ROS,我们可以用此来了解通过robot发布话题和订阅话题,为了确定这些主题所使用的消息,然后编写自己的节点来处理传感器数据并在真实世界中行动。
ROS真正具有吸引力的地方不在于发布话题和订阅话题中间件本身,而在于ROS为世界各地的开发人员提供了一种标准机制来共享他们的代码。ROS最好的特性就是其庞大的社区。其可用的package非常多,所以本博客尝试介绍一下怎么探索下一步的学习。
启动一个模拟器
尽管我们可能有一个真正的robot,但还是从使用一个模拟器开始比较好,以避免出现一些错误来伤害到自己或者昂贵的robot。
我们可以通过使用 PR2 Simulator 或者Turtlebot Simulator开始,或者也可以搜索自己的robot型号,检查是否有其自己的模拟器。
在此情况下,你可能尝试使用“teleop”包(如 turtlebot_teleop)来控制一个模拟机器人。或者使用你对ROS的理解来找到一个topic并写代码发送合适的消息来驱动自己的robot。
探索RViz
RViz是一个强大的可视化工具,能够让我们来查看robot的传感器和内部状态。使用教程如下,我们有时间的话也会对其进行介绍,这里就不过多叙述了。
理解TF
TF包用于转换我们robot中所使用的不同坐标框架,并随着时间的推移来跟踪这些变换。对TF包有一个较好的理解在任何真实robot工作过程中都是非常重要的。
如果我们要构建一个自己的robot,那么我们可能在此为robot考虑构建一个URDF模型。如果我们使用一个标准robot,那么其可能已经创建好了一个URDF模型。尽管如此,我们也值得去简要的熟悉一下URDF包。
更加深入理解
此时,我们可能已经准备好进行更加复杂的任务,下述的页面将帮助我们进行学习:
1、actionlib:actionlib包能够为更高级别的任务提供一个标准的接口,其在高级别的ROS包中广泛应用。
2、navigation:是一个2D navigation包,构建地图以及路径规划。
3、moveit:控制robot的手臂。