-----------------------------------------------------------------------------
第一步、我们要使用ROS首先要知道ROS是什么?
ROS—(Robot Operating System)是一个机器人软件平台,提供一些标准操作系统服务,例如硬件抽象,底层设备控制,常用功能实现,进程间消息以及数据包管理。ROS是基于一种图状架构,从而不同节点的进程能接受,发布,聚合各种信息(如传感,控制,状态,规划等等)。目前ROS主要支持Ubuntu,是开源软件,并能免费用于研究和商业用途。
第二步、掌握ROS的基本操作
ROS基本操作方法这里就不介绍了,网上有很多比较详细的教程,下面列举一些比较好的ROS学习网站,建议先按这些教程操作一遍,对ROS的一些基本概念与操作有一个了解,比如什么是ROS节点、怎么创建ROS程序包,怎么发布订阅话题、怎么查看发布的话题内容等等
- ROS教程
这是ROS官网,上面介绍了ROS环境搭建与配置,ROS程序包、节点、话题、服务与参数的基本概念,ROS基本指令的使用,以及简单的消息发布与订阅,ROS相关工具的介绍,通过这个网站的学习ROS就基本入门了 - ROS源码
这是GitHub上的源码,怎么快速使用ROS看看源码就知道了,后续开发可以参照这些源码,能更快的上手 - ROS视频教程
这是中国大学慕课,是ROS视频讲解,给不想看文档的同仁提供了另一个选择,内容大同小异,这是它的讲义地址:https://sychaichangkun.gitbooks.io/ros-tutorial-icourse163/content/ - https://www.ncnynl.com/
这个网站关于ROS的资料比较多,有跟语言相关的、有跟开发平台相关的、也有跟各种传感器相关的,有兴趣的上去看看就知道 - https://blog.csdn.net/hcx25909
这是我觉得比较好的个人博客,图文并茂,看看也许能提供些帮助
第三步、机器人上玩转ROS
这一步我只说个大概,有兴趣的可以不看,因为细说的话需要大量篇幅~~
现在假如你手头有台使用了ROS的机器人
-
像我们通常是使用Teamviewer通过IP远程连上机器人(连同一个wifi更稳定)
-
进入机器人后,开启ros服务
终端1:roscore
终端2:roslaunch 你自己的启动脚本.sh
开启所有结点后ROS就在机器人上运行起来了,可以用指令查看订阅与发布的相关信息 -
用手机APP控制运动
安装Teleop, 连接到相应的wifi上,打开APP
Master URL:http://192.168.1.99:11311/,然后CONNECT
之后就可以在手机上进行遥控,可查看手机下发话题:rostopic echo /cmd_vel -
可视化工具:rviz
可以直接在终端中输入rviz即可打开,这个工具可以看到各种各样的传感器可视化信息,用tf转换一下rviz可识别的数据,比如超声波:rosrun tf static_transform_publisher 0.18 0 0 0 0 0 base_link sonar_link1 100
注意事项
-
环境初始化:如:source ~/.bash,有些是source ~/.zshrc
这个很重要,像你代码更新重新编译之后,因为结点更新了,你如果用roslaunch指令启动,你就需要
source一下环境,不然你启动的可能就不是最新结点 -
单独编译某个node
我们知道整体编译,是在根目录下如:/catkin_ws下:catkin_make一下,不过当结点多了你只想编译其中一个结点,同样在:/catkin_ws下,使用该指令:catkin_make -DCATKIN_WHITELIST_PACKAGES=“kinco” //””中跟的是包名 -
单独运行某个node
运行某个node的方式有多种,比如到node当前目录./运行,或者rosrun 包名 node名运行,
还有就是用roslaunch文件运行,我们使用的是第三种,如:roslaunch base.launch -
模拟导航发布数据
rostopic pub -r 10 /cmd_nav geometry_msgs/Twist “linear:
x: 100.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0”
其中-r 10表示以10hz的频率一直发布
5.测试,可参考ROS指令总结
rostopic list //查看有哪些话题
rosropic echo //查看某个话题的发布内容
rosnode list //查看开启了哪些节点
rosnode info //查看某节点的信息
目前我们YYD机器人上所用的版本是Ubuntu16.04 + Kinetic,雷达是倒装的,需要用到tf转换.