ROS入门学习笔记(一)—–Linux基础、ROS命令行工具、创建工作空间与功能包

129
0
2020年11月12日 09时24分

   本系列文章是与大家分享一下,我在学习ROS入门过程中所做的笔记,目前主要的学习资料是古月老师(胡春旭老师)的 ROS入门21讲(文章中部分图片来自于21讲课件),以及其编著的《ROS机器人开发实践》,当然其中也加入了我自己的理解和其他的相关资料,本系列文章共无篇,本篇文章是本系列第一篇文章,主要介绍Linux基础、ROS命令行工具、创建工作空间与功能包部分


一、Linux部分

 1、命令sudo用于提升权限,由使用者提升为管理员权限
 2、在输入某个名字时按Tab键可以将剩余的部分自动输入
3、在下载软件时,要选择合适的下载源
4、使用Ctrl+Alt+T可以快速的调出终端
5、在终端使用命令pwd可以查看当前终端所在的位置(路径)
6、在终端使用命令cd可以切换路径,比如通过cd /home/ 可以切换路径至home下,cd jzx 切换至下层目录jzx文件夹下 , cd . . 可以切换至上层路径下 (/开头表示根目录,否则表示当前目录下的子文件夹)
 7、在终端使用命令mkdir可以在当前目录下创建一个新的文件夹,如mkdir 000 在当前目录下创建一个名叫000的文件夹
 8、ls命令可以查看当前路径下有没有其他文件
 9、touch命令可以在当前路径下创建一个文件, 如touch text_1 创建一个名为text_1 的文件(相当于记事本文件)
10、mv命令相当于剪切命令,将一个文件移动至另一个路径下 如 mv text_1 /home/jzx 将text_1 文件移动至jzx 路径下(注意只能移动当前路径下的文件)
11、cp命令可以复制某个文件,如cp text_1 000/text_2 将当前路径下的文件text_1 复制到000文件夹下,并且重命名为text_2 (若不加/text_2 则,保持原名)
12、rm命令可以删除文件,例如:rm text_1 删除文件text_1 ,rm-r 可以删除整个文件夹 如rm-r 000,删除文件夹000
13、在终端ctrl+c是暂停
14、在终端使用↑可以快速输入之前输入过的命令(可配合↓使用)
15、命令sudo apt-get update 用来更新软件列表
16、在终端执行命令时,按ctrl+c可以暂停
17、在终端通过 —help 指令可以查看该指令的说明,比如 cd —help 可以查看cd命令的帮助,help用起来是十分方便的,可以帮助我们便捷的了解一条指令
18、通过 sudo apt-get install g++ 命令来安装g++编译器(针对c++的编译器),通过 sudo apt-get install python 来安装python编译器(解析器)
19、将电脑中的文件复制到虚拟机中,安装完VMware Tools后发现还是不能直接将电脑中的文件拖拽到虚拟机中,这时候我们需要在虚拟机中打开一个文件夹,然后发现可以将电脑中的文件复制到虚拟机的该文件夹下了
20、g++ A -o B 将c++文件A编译成可执行文件B(A和B是文件名),比如 g++ c++_for.cpp -o c++_for 将名为c++_for.cpp的文件编译成名为c++_for的文件
21、./ 用来执行某个程序或脚本 比如 ./c++_for 执行当前路径下的c++_for程序
22、python python_for.py (python文件不需要编译,直接执行就行了) 执行名为python_for.py的程序
23、在当前文件夹下,右键打开终端时,路径自动变成当前文件夹下的路径

二、系统安装部分

 本部分内容在之前的博文中已做过介绍,在这里放一下链接

详细介绍如何在ubuntu20.04中安装ROS系统,以及安装过程中出现的常见错误的解决方法,填坑!!!

Ubuntu如何通过简单的几步操作来配置系统的软件源、找不到软件和更新怎么办?(带动态图文介绍)

简单几行命令解决ubuntu右上角的网络连接图标消失的问题

三、ROS命令行工具

 1、roscore命令用来打开节点管理器,是我们在运行ROS系统时必须要首先运行的指令
 2、 rosrun命令用来运行某个功能包里的某个结点,后面跟两个参数,第一个参数是功能包名,第二个参数是结点名,在输入功能包名后,按tab键,可以显示该功能包内的节点名。 如:rosrun turtlesim turtlesim_node
3、turtlesim中的turtle_teleop_key是键盘控制节点
4、ROS里面有一些rqt开头的工具,这都是一些可视化工具,比如rqt_graph是一个用来显示系统计算图的一个工具,通过这张图我们可以很快的了解这个系统的全貌
5、turtlesim是仿真器节点
6、rosnode工具用来显示系统中所有节点的相关信息
7、rosnode ping指令
8、rosnode list指令用来把系统中所有的节点都列出来
9、rosnode info指令用来查看某一个节点具体的信息是什么,如rosnode info /turtlesim (/turtlesim是节点名)
10、rosnode kill指令
11、rosnode cleanup指令
12、rosout是ros一个默认的话题,用来采集ros节点的运动信息,给上面的界面进行显示
13、rostopic list命令可以查看当前系统所有的列表
14、rostopic pub命令可以用来发布话题,后面跟的第一个参数是话题名,比如/turtle1/cmd_vel 这个时候双击两下tab键可以自动把后面的内容补全,按左右键可以设置输入位置,twist是我们发布的消息结构(数据结构),这个数据结构里包含两个部分一个是线速度linear,单位是m/s ,另一个是角速度angular,单位是rad/s,每个速度都分为xyz三个方向上的分量,若我们将linear的x设为1,则海龟将以1m/s的速度向前运行一次,这是因为rostopic pub命令只会发布一次,若在其后面加上-r 10 ,-r表示设定频率 ,-r 10 就是每秒运行10次循环 ,可以不断的发布,z轴是垂直于屏幕向外的,若将angular的z参数设为1,它就可以按圆的轨迹行走

 

在这里插入图片描述

 

在这里插入图片描述

15、如果我们想要查看某个消息的数据结构可以用 rosmsg show命令,比如rosmsg show geometry_msgs/Twist

 

在这里插入图片描述

 

16、rosservice list 可以查看当前仿真器下的提供的service服务,/spawn服务产生服务,可以用来产生一个新的海龟,如rosservice call /spawn 然后按tab键补全剩余的,其中call表示请求 ,x、y是产生新海龟的坐标,theta是初始角度,name是产生新海龟的名字

 

在这里插入图片描述
在这里插入图片描述
 17、rosbag工具是话题记录工具,记录系统中所有的话题记录并保存起来,下次用的时候再复现出来,例如话题记录命令 rosbag record -a -O cmd_record (其中record是记录的意思,-a是全部保存 -O是保存成压缩包,保存文件命名为cmd_record) 话题复现 命令rosbag play cmd_record.bag (play是表示复现,cmd_record.bag是文件名)在输入记录命令后,它会显示开始订阅一些信息,这时候我们用键盘去控制海龟移动,结束后按ctrl+c,他就会把这些数据保存下来,保存到我们的主文件(主目录)下,这个时候我们把之前打开的终端关掉,只打开节点管理器和仿真器节点,不需要启动键盘控制节点,此时使用话题复现命令,他就可以复现刚才我们保存的运动
在这里插入图片描述

四、创建工作空间与功能包

 1、工作空间用来存放工程的文件,里面的src文件夹是用来存放功能包的,功能包的配置文件等,build文件夹用来存放编译过程中产生的一些中间文件,devel文件夹存放编译生成的一些可执行文件,一些库,一些脚本等,install文件夹主要用来存放安装的一些文件,重点关注devel文件夹

在这里插入图片描述

2、创建工作空间:在主文件夹下用mkdir命令创建一个子文件夹,取名为catkin_ws ,这个名字是可以自己起的,后面的src是不能变的,接下来要利用命令cd进入到该文件夹下,然后用catkin_init_workspace命令将该文件夹变为ros工作空间的属性

 

创建完工作空间后,要对工作空间进行编译,编译时需要在工作空间的根目录下进行编译,也就是我们需要先进入catkin_ws文件夹下,再利用catkin_make命令对其进行编译,这个命令会编译src下面所有功能包的源码,并将结果放到devel文件夹下,编译后生成了build和devel这两个文件夹,这个命令不能生成install文件夹,需要用catkin_make install命令来生成install文件夹
 为了让系统找到我们的工作空间,还需要设置环境变量

在这里插入图片描述

3、在创建代码的时候一定要创建一个功能包,功能包是ROS里面放置源码的最小单元,所有的源码必须放到功能包下面,不允许直接放在src文件夹下,用catkin_create_pkg命令创建功能包,后面跟的第一个参数是功能包的名字,后面的参数是这个功能包的依赖,也就是这个功能包需要用到ros里面的那些其他的功能包,因为要用c++编程所以要添加依赖roscpp,因为要用Python编程,所以要添加依赖rospy ,标准的消息结构std_msgs ,创建的功能包要放在src文件夹下,添加完功能包后,我们返回到catkin_ws目录下,再对工作空间进行编译,就会把刚才添加的功能包也编译了。只有设置了环境变量后才能让系统找到我们的工作空间 ,用命令echo $ROS_PACKAGE_PATH来检查我们创建的环境变量

 

在这里插入图片描述

 

4、在创建的功能包test_pkg中有一个src文件夹,用来放置功能包的代码,比如cpp文件等,include文件夹可以用来存放头文件,另外两个文件是每个功能包必须存在的两个文件,这两个文件的存在才标志着,这个文件夹是一个功能包,而不是普通文件夹

 

在这里插入图片描述


发表评论

后才能评论