SLAM从入门到精通(ROS的使用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        ros,全称robot operating system。说它是操作系统,其实有点夸大了。一般认为,它是提供了robot处理的统一框架,有点类似os,但是和真实的os差的有点远。当前,ros和ubuntu的版本是一一匹配的。说它是框架,从驱动上说,目前大多数传感器厂商都会统一的ros设备驱动接口。从应用上说,它就是一个上层的分布式消息处理框架。从算法模块上说,它自身集成了很多的算法包,大家可以对这些算法继续迭代和优化,也可以通过一定的方式放到实际项目中,这些都是ok的。所以,ros本身无所谓好坏,就看用的人是如何处理的。对我们自己,要善于用好这些工具,而不是去夸大或者贬损,最主要的是,只会用算法包或者简单调参,这肯定是不行的。

1、ros的统一接口

        这个接口,包括两个部分。一个是软件接口,一个是硬件驱动接口。目前robot使用的传感器有很多种,imu、lidar、odom、camera、3d camera、voice recorder等等,只要有需求,都可以集成到ros平台上面来。另外一个接口则是软件接口。这是一个分散的结构。它的核心是roscore,所有的程序都通过roscore来进行信息的交流。如果希望发布这个消息,就用publish公布出去;如果希望订阅这个消息,就用subscribe订阅一下即可。

SLAM从入门到精通(ROS的使用)_第1张图片

2、ros命令

        作为一个完整的框架,ros不仅提供了统一的接口,而且还搭配了很多的第三方命令。有了这些命令,我们不仅可以对程序进行加载和执行,还能对ros系统进行分析和监控。命令主要有三种,第一种,ros shell命令,比如roscd、rosls等等;第二种,ros 执行命令,比如roscore、rosrun、roslaunch等等;第三种,ros信息命令,比如rosnode、rostopic、rosservice等等。有了这些命令,我们开发和验证程序就更加容易和方便了。

3、第三方算法包

        这个第三方算法包,可能是很多人使用ros的根本原因。定位导航的同学可以直接选择gmapping和amcl包。搭配参数修改,即使不是特别了解slam的同学,也可以在很短的时间内搭配出一个slam系统。做机械臂的同学也一样,用moveit包就可以快速达到自己的目的。至于视觉,用opencv的人比较多,在ros里面使用,就相当于用opencv库来专门处理机器人视觉,有点意思的。

        但是这个第三方包只是解决有无的问题,它既不能帮你发论文,也没法做项目。只能是说,他帮我们完成了0-1的工作,不用重复造轮子了。真正要落地,还是要优化算法、优化硬件的。

4、调试辅助工具

        除了传统的log、控制台等工具可以调试外,ros本身还提供了很多的工具。比如rviz工具,它可以帮助我们是实时生成的slam地图;再比如tf工具,可以帮我们快速实现坐标系的转变;还比如gazebo工具,用它来搭建仿真环境,这是最合适不过了。所以,如果要是学习的话,即使身边没有真实的机器人,也可以通过仿真工具、辅助软件来快速学习的。

5、真实环境的搭建

        仿真做久了,还是希望用真实的设备练练手,毕竟真实环境还是要比仿真环境复杂得多。这个时候就可以去电商网站购买一个真实的机器人。ros本身是支持分布式系统的,所以机器人上运行一个ros环境,个人电脑也运行一个ros环境,这样通过无线wifi,他们就可以通过网络实现局域网内的自由数据传输,整个ros系统就活起来了、机器人也可以动起来了。

6、ros系统 & 上层app

        ros本身是一个框架和生态,他虽然有很多的工具和算法包,但是能做出什么产品、解决客户什么具体问题,还有赖于每个人自己的思考。所以单独的ros不一定能构成商品,还需要搭配上层应用,比如是去巡检、扫地、搬货、堆叠,还是什么其他用途,这些都需要自己去好好思考的。

其他

        本身ros的架构还是很优秀的,它告诉我们一个合适的架构应该是什么样的,该提供哪些功能,又不该做哪些事情,这些都是很有借鉴意义的。

你可能感兴趣的:(SLAM从入门到精通,机器人)