2

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

 11 months ago
source link: https://blog.csdn.net/feixiaoxing/article/details/132729348
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

original.png
嵌入式-老费 newUpTime2.png 已于 2023-09-07 10:17:41 修改 articleReadEyes2.png 151

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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订阅一下即可。

5112392901dc45fd8f86205cb9683024.png

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的架构还是很优秀的,它告诉我们一个合适的架构应该是什么样的,该提供哪些功能,又不该做哪些事情,这些都是很有借鉴意义的。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK