目录
引言
一、控制小海龟
二、键盘控制海龟
三、控制海龟案例的简单分析
四、ROS2之linux基础
4.1 linux终端命令
4.1.1 查看当前终端所在目录 pwd
4.1.2 切换终端所在目录 cd
4.1.3 查看当前目录下的文件 ls
4.1.4 主目录 ~
4.1.5 文件的操作
4.1.6 命令使用帮助 --help
4.1.7 软件安装常用命令
4.2 linux中编写程序
4.2.1 首个python程序
4.2.2 首个C++程序
4.2.2.1 初识g++编译工具
4.2.2.2 初识cmake编译工具
4.3 Linux的环境变量
引言
操作环境:
VMWare17.6,虚拟机ubuntu22.04
在虚拟机ubuntu22.04操作系统中安装好ros2环境后,进行第一个小demo——海龟模拟器,同时了解需要了解的几个linux命令,在ros2中使用C++和python编写hello,world,一起走进ros2的机器人的世界。
一、控制小海龟
进入ubuntu22.04,同时按下Ctrl+Alt+T快速启动一个新的终端,接着输入ros2,验证ros2环境是否安装成功:
若输入ros2回车后终端输出如上图所示内容,说明ros2安装成功。上图内容展示了ros2后面可以接的内容和使用方法等。
接着进入正题,在终端中输入ros2 run turtlesim turtlesim_node后回车,即可运行海龟模拟器节点,终端中呈现内容如下:
然后,会弹出如下图所示的一个有颜色背景的窗口,同时里面会有一只小海龟。其中海龟的形态是随机的,这是由其实现逻辑决定,这里可不必深究。
提示:输入一行命令时,通过单击键盘上的tab键,可将输入的不完整内容自动补全,节省时间,减少命令不熟悉带来的不便。如终端输入ros2 r时单击tab即可补全为ros2 run.
接下来,简单分析这段海龟模拟器的控制命令。
该指令由四部分组成:
1、ros2 和 run 表示该命令式用于运行ros2程序;
2、turtlesim 表示一个程序包名称,程序包可用于存放众多可执行程序;
3、turtlesim_node 表示可执行程序的名称,是前面输入的程序包中的其中一个。
即:该指令是使用ros2运行一个turtlesim程序包下的turtlesim_node可执行文件。
二、键盘控制海龟
在不关闭上面海龟模拟器程序的前提下,再开一个新的终端,输入ros2 run turtlesim turtle_teleop_key并回车执行:
依据前面的描述,可见该命令是用在使用ros2运行一个turtlesim程序包中的turtle_teleop_key可执行文件。运行之后,将鼠标停留在该终端后,即可捕获电脑键盘的输入,接下来就可以使用键盘控制前面打开的海龟在其窗口中随意运动了。
三、控制海龟案例的简单分析
接下来我们借助ros2提供的一个节点关系图工具分析这两个命令程序之间的联系,解开为什么键盘能够控制小海龟运动的疑惑。
不要结束前面执行的命令,再开启一个新的终端,输入rqt并回车,可以看见弹出一个默认的rqt窗口,如下图所示
四、ROS2之linux基础
4.1 linux终端命令
4.1.1 查看当前终端所在目录 pwd
ctrl+Alt+T开启一个新终端,输入pwd回车,可以看见下面输出了一个目录路径,该路径表示当前终端所在路径,也就是使用快捷键开启终端所在的默认路径主目录。
注:linux中,斜杠 “ / ” 表示整个文件系统的根目录,这是与日常使用的windows系统的一个显著区别,其他目录和文件位置均是相对这个根目录而言。
4.1.2 切换终端所在目录 cd
在终端中输入 cd / 回车,进入根目录下。然后输入pwd回车看看当前终端所在的目录已经变成了 / 根目录。
4.1.3 查看当前目录下的文件 ls
在终端输入ls回车,可以查看当前终端所在目录下包含的文件。
4.1.4 主目录 ~
前面说到,快捷键进入终端时,会默认进入主目录下。本例的用户名为zzl,因此主目录就是/home/zzl。因为linux中主目录经常用到,所以使用 ~ 表示。
当想回到主目录时,终端输入 cd ~ 回车即可。
4.1.5 文件的操作
进入主目录,来进行几个文件的基本操作。
1、创建文件夹 mkdir <文件夹名>
终端中输入mkidr chapt并回车,即可在住目录下创建一个叫做 chapt 的文件夹
然后,输入 cd chapt 进入该文件夹
2、创建空白文件 touch <文件名.后缀名>
进入chapt文件夹后,输入 touch hello_world.txt回车,即可在该文件夹下创建一个空白的hello_world.txt文本文件,然后我们查看当前终端所在的目录,以及该目录下存在的文件
3、文件的编辑 nano <文件名.后缀名>
nano是安装ubuntu时自带的文本编辑工具,终端中输入nano hello_world.txt回车,即可进入该文件的编辑模式,然后我们输入 hello ros2 !,按 ctrl + O后再回车,即可将内容写入该文件中,最后按ctrl + X即可退出对该文件的编辑。
4、文件的查看 cat <文件名.后缀名>
终端输入 cat hello_world.txt回车,即可看见上一步向该文件中写入的内容。
5、文件的删除 rm <文件名.后缀名>
终端输入 rm hello_world.txt回车,即可删除该文件
4.1.6 命令使用帮助 --help
Linux中的命令远比这些丰富,碰到某些命令的不记得是正常的事情,我们可以使用命令 --help 来查看命令的使用帮助,如输入 rm --help 可以查看 rm命令使用帮助
亦或是输入 ros2 run --help 查看ros2 run的使用方式
4.1.7 软件安装常用命令
1、 包管理工具 dpkg
在linux中,我们可以使用 dpkg 相关命令来进行软件的安装,如 sudo dpkg -i <软件包名.deb>
1. sudo,表示以管理员权限执行后面的命令;
2. dpkg,ubuntu中的包管理工具,可用于安装、查看和卸载软件包;
3. -i,代表安装的意思。
默认情况下,我们从官网下载的软件包会存放在 ~/下载 或者 ~/Downloads 目录下,ubuntu中下载的软件包后缀名一般为 .deb
2、 更高级的包管理工具 apt
使用dpkg可以直接安装下载好的deb格式的安装包,另外还可以使用 apt 命令,直接通过软件名自动下载后进行安装。
如版本管理工具git的安装:
终端输入git命令,若ubuntu中没有安装,则会显示找不到该命令,并提示你使用apt命令安装它
因此,输入sudo apt install git并回车,就会开始下载和安装。
因为我这里已经安装过,所以输入的内容比较简洁。
安装完成后,输入git进行测试,当终端输出类似如下内容时,说明git已经安装成功
4.2 linux中编写程序
我们在linux中使用VSCode进行代码编写和运行,关于vscode的下载安装和配置(需要的插件安装)这里不再赘述,比较简单,不会可自行搜索或者合理运用AI。
4.2.1 首个python程序
快捷键Ctrl+Alt+T快速开启一个新终端,在终端输入code并回车,打开vscode进入主界面。
首次使用vscode时,显示都是英文,大家可以点击左边竖栏中从上至下数第五个图标,然后在搜索框搜索 chinese,然后安装插件,接着重启即可显示中文。
然后我们打开前面创建的chapt文件夹,然后新建python文件,命名为 hello_world.py回车,即可创建成功。
接着,在新建的python文件中编写第一段程序,输出一句 'Hello, World!',然后ctrl+s保存。
最后,在vscode的终端中,输入 python3 hello_world.py回车即可执行程序,运行成功。
4.2.2 首个C++程序
与前面python程序创建同理,这里不再赘述。然后同样编写一个经典的“Hello, World!”,然后记得保存。
4.2.2.1 初识g++编译工具
ubuntu22.04中含C++编译工具g++,所以我们可以在终端中输入 g++ hello_world.cpp,对该C++文件进行编译
编译后,使用ls命令可以看到目录下生成了一个绿色的a,out文件,绿色代表该文件是一个可执行文件。终端输入 ./a.out 回车即可执行程序,输出打印的 Hello, World!
4.2.2.2 初识cmake编译工具
使用g++可以方便地编译一些较为简单的代码,对于功能复杂、需要较多依赖的复杂代码的编译,我们常使用CMake更为方便。
首先,在chapt目录下,我们新建一个文件CMakeLists.txt,然后编辑该文件,在文件中写入如下图所示三行内容,具体操作参照前面叙述的文件的创建、编辑操作即可,这里不再赘述。
这三条代码具体含义:
1. cmake_minimum_required (VERSION 3.8),表示用于构建当前文件的CMake版本最低为3.8;
2. project (HelloWorld),用于声明当前工程名;
3. add_executable(learn_cmake hello_world.cpp),用于添加一个可执行文件,learn_cmake表示可执行文件的名字,hello_world.cpp是可执行文件相对CMakeLists.txt文件的路径。
编写后保存,终端进入chapt目录,输入 cmake . 命令,然后回车即可将编写的CMakeLists.txt文件转换成CMakeFiles。
cmake . 命令的具体含义:用于构建CMakeLists.txt,参数 . 代表在当前终端所在的同级目录搜索CMakeLists.txt文件。
构建完成后,会在当前目录生成结果文件,其中Makefile文件使用make读取并进行代码编译
编译后如上图,使用make命令可以调用编译器将代码文件转换成可执行文件。使用ls查看当前文件,可以看出新产生可一个绿色的可执行文件learn_cmake,这就是我们在CMakeLists.txt中设置的可执行文件名。
同样地,在终端进入chapt目录,输入 ./learn_make 后回车,即可看见C++代码运行的结果了。
4.3 Linux的环境变量
linux的环境变量,是一种全局变量,用于存储系统和用户级别的配置信息。
打开一个新的终端,输入 echo $ROS_DISTRO ,然后回车
可以看见终端输出了ROS2的版本信息humble。
以上内容可能存在不足和纰漏,仅供参考,各位阅读时请带着批判性思维学习,遇到问题多查查,谢谢。