0
点赞
收藏
分享

微信扫一扫

随想录(ros学习笔记)

一点读书 2022-11-23 阅读 91


 

    ros,全称robot operating system。说它是操作系统,其实也不全对,因为它实现的其实是一个类似于中间件的作用。使用者只需要在上面关注于自己算法的实现,这就可以了,不需要重复造轮子,因为通信、工具、仿真、通用算法、常用硬件驱动,所有这些别人都替你做好了。如果大家有这方面的兴趣,可以先了解下ros,再一步步去做,

 

1、找一个靠谱的学习视频

    在b站上面,有一个ros入门21讲,个人觉得还是比较适合的,​​https://www.bilibili.com/video/BV1zt411G7Vn​​。至于他的书,可以买,可以不买。比如,如果视频上面的内容都能理解,就可以不买。

 

2、ros的构成

    ros主要可以分成4个部分,分别是ros通信框架、ros基础命令工具(包括rviz、gazebo)、ros场景算法(导航、slam、moveit)、ros生态(比如第三方硬件厂商的ros包、各种网站,论坛、bbs、wiki等等)。

 

3、ros依赖的软件平台

    ros是运行在linux上面,一般使用ubuntu,不过注意不同的ubuntu版本对应不同的ros版本。

 

4、ros依赖的硬件平台

    通常而言,如果是学习的话,一般ros直接运行在pc上面,如果是开发和部署,一般运行在类似的树莓派这样的开发板上。

 

5、机器人的硬件平台

    不管是导航还是机械臂,除了ros运行在ubuntu的开发板上面,一般还是需要一个stm32的嵌入式开发板,这个是控制电机的,常采用rtos来控制。

 

6、ros安装

    ros的安装,其实非常简单,一句话就可以

sudo apt-get install ros-kinetic-desktop-full

    当然,第一次使用的时候,一般需要初始化一下,

sudo rosdep init
sudo rosdep update

    接着,将ros的path路径加到环境变量里面

source /opt/ros/kinetic/setup.bash

    这个时候,我们输入roscore,如果程序正常运行,其实代表ros已经安装好了,

roscore

    如果需要知道详细的安装细节,可以看一下这个链接,​​http://wiki.ros.org/cn/kinetic/Installation/Ubuntu​​

 

7、ros开发常用的语言

    主要是python和cpp,其他就是各种脚本的编写、命令的运行了

 

8、常用的ros命令有哪些

    有一些常用的命令都是以ros开头,这些命令都是为了让你调试目前的系统,分析下当前的分布式系统有哪些信息、哪些节点,或者是启动脚本等等,比如

roscore

rosrun

roslaunch

rosparam

rosmsg

rossrv

rosbag

9、创建自己的工作区

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_init_workspace

cd ~/catkin_ws
catkin_make

source devel/setup.bash

cd ~/catkin_ws/src
catkin_create_pkg learning_communication std_msgs rospy roscpp

cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash

 

10、ros中比较值得学习的navigation和slam

    如果是navigation,那么就是amcl算法

    如果是slam,那么就是gmapping算法

    这两个在工业生产中是用的比较多的。但是,知道了这两个算法,并不等于,可以直接拿来在工业中使用,这还是远远不够的,必须要做一些修改和优化。比如,实际生产中,嵌入式开发板的算力和pc不能比,但是运行效率又不能太低,如何对算法进行加速就是各位小伙伴需要做的事情了。

 

11、ros其他值得学习的模块

    理论上,作为一个框架或者生态,ros除了上面说的导航、slam、moveit,还可以顺带学习下嵌入式电路、rtos、电机控制、图像处理、语音识别、机器学习、深度学习这些,对系统实时性有要求的同学可以看一下ros2、rtlinux这些,看自己的兴趣了。

 

12、ros生态或者第三方支持

    很多硬件厂商都有ros支持包,比如lidar、3d lidar、3d camera,直接github下载、拿过来就能用,不需要自己造轮子,这也算是ros的优势把。

 

13、ros学习的误区

    很多同学,特别是本科学习,或者刚进入研究生的同学,一下子进入ros的世界里面,不知道怎么下手,ros学的又比较杂,其实没有必要,一步一步来,只要按照自己的节奏来,就可以了。重点关注与自己的领域,其他的方面够用就好。比如说,你从来没有学过linux,甚至只用过windows,那么你可以这么做,

先安装一个virtualbox,

然后安装一个ubuntu,

熟悉一下ubuntu的常用命令、使用方法、配置一下网络,

安装一个ros版本,

熟悉一下python语言,看看会不会编译、会不会配置文件

看一下cpp语言,不会的话,找一本《c++ primer》补一下知识,

按照b站上面的ros教程掌握一下分布式通信机制,

看看node、topic、subscribe、publish、service弄懂了没,

自己写几个小程序,测试一下

下载小乌龟程序,

编写程序控制小乌龟,

掌握常用的ros命令,

编译有问题的话,学一下cmake语法,

看看launch的脚本会不会配置

试试rviz、tf、gazebo这些工具,主要为了后面的场景搭建使用

选一个应用领域,比如slam看一下gmapping

搭建一个场景,看看能不能生成map

看看能不能下载amcl源码包

手动控制机器人,看看在map中,能不能用amcl定位

买一个便宜的robot实体,比如阿克曼差速底盘的机器人

将程序部署在robot上

看看pc和robot能不能正常通讯

看看能不能让robot动起来,在robot上运行amcl算法,能不能在map中定位自己

实现amcl在robot上面的加速

robot上压力测试

在robot上测试其他功能,比如摄像头等等

    14、最后的话

        ros本身内容比较多,也比较杂,专注于自己熟悉的领域就可以了。当然基础部分还是要掌握好,比如通信机制、ros命令,以及linux、python、cpp、cmake调试,这些都是基础中的基础,和专业没有很大的关系。等到领域知识和基础都没有大问题之后,就可以考虑一下如何用ros开发出合适的产品了,是选择工业机器人、消费、医疗,还是其他领域,这个就是另外一个topic了。 这个时候,或许你想做的,就是自己要不要做了扫地机器人呢?:-)反正,一步一步往前走就对了,没有什么捷径。

 

举报

相关推荐

0 条评论