ROS2 学习笔记(一)新建项目的基础流程
参考链接;
古月居的视频+网站
【古月居】古月·ROS2入门21讲 | 带你认识一个全新的机器人操作系统_哔哩哔哩_bilibili
ROS2入门教程
鱼香肉丝的帖子
【ROS2机器人入门到实战】_ros2机器人编程实战 pdf-CSDN博客
网上直接搜的新建项目的起手式都比较雷同,一般是要从克隆一个小乌龟的例程开始,可这在正常的任务中是没啥用的。
这篇笔记内容是正常情况下应该怎么开始一个ros2的项目,用来给自己做备忘的。防止自己以后把这些完全忘了,所以写的可能有点罗里吧嗦。文中特地创建了和古月居不同的路径,以帮助以后的自己对比两者发现本质。
如果刚好能帮到您,麻烦给个赞。
一、创建工作空间
创建工作空间分三步:创建路径、编译工作空间、设置环境变量
1.1 创建路径
首先,打开终端,用普通的命令创建一个文件夹作为工作空间的路径,且文件夹下右一个src子文件夹。
(后续的功能包啥的都是放到src子文件夹里的,所以必须有这个src)
(因为这里只是普通的新建文件夹,所以不使用命令行,直接到目标位置右键新建文件夹也行。)
工作空间的名称可以随便取,一般为了方便辨认,会在命名时加上“ws”字样
具体操作:在终端里敲以下代码:
mkdir -p ~/Code/ROS2/MyRobot_ws/src
这行代码里,-p表示自动创建目标目录的上层目录,即使该上层目录已经存在也不会报错。我将该工作空间创建到了我的~/Code/ROS2/目录下了,这个可以根据实际情况进行修改。
古月居的教程里,创建好路径后要去克隆一个小乌龟的例程,并且要自动安装小乌龟需要的依赖,本笔记只追求最简单的创建流程,所以不需要这样,直接进入下一步。
1.2 编译工作空间
编译的操作是在刚才新建好的工作空间目录下执行:
cd ~/Code/ROS2/MyRobot_ws/
colcon build
执行后,MyRobot_ws文件夹内出现了一些新的文件夹:build, install, log
这里的colcon不用管是啥意思,和ros1里的catkin一样有历史渊源,感兴趣的同学自己去搜一下。
不光是创建工作空间时需要编译,以后创建功能包后,修改代码后都要重新编译
在古月居教程中,首先执行了安装命令,如图:
我感觉应该是不需要的,编译时如果有报错再安装吧。
1.3 设置环境变量
编译完成后,还需要设置环境变量才能让系统知道这个工作空间内有哪些功能包和可执行文件,因此还需要设置环境变量。这一步的作用是初始化工作区
有两种操作,第一种操作使环境变量只在当前终端内生效,第二种操作使环境变量在所有终端生效。两种操作并不冲突,使用第二种后,也可以使用第一种手动刷新环境变量。
第一种:先进入工作空间路劲下,然后执行source
cd ~/Code/ROS2/MyRobot_ws/
source install/local_setup.sh
第二种:
echo " source ~/Code/ROS2/MyRobot_ws/install/local_setup.sh" >> ~/.bashrc
设置环境变量的操作在每次编译之后都要执行,编译后只要在所有终端上执行第一种设置环境变量的命令即可。若用第二种方法设置了环境变量,则打开新的终端时自动生效。
二、创建功能包
功能包都在工作空间下的src文件夹内新建,区别于工作空间,不能用普通的右键新建文件夹或者mkdir命令直接新建,需要使用ros2 pkg create 命令新建。
按照古月居的教程的内容,一个功能包里最好只有一种编程语言编写的内容,可是神奇的chatgpt说可以有多种不同的语言,需要修改CMakeLists.txt的内容。
这里将建立编译的常规方法和同时存在两种语言的进阶方法都试一下。实际操作中建议还是怎么简单怎么来,不同语言分不同的功能包算了。
在c++写的功能包里有两个比较重要的文件
2.1 创建只有一种语言的功能包
2.1.1 创建
创建计划使用C++编写的功能包:
cd ~/Code/ROS2/MyRobot_ws/src
ros2 pkg create rbt_ctrl_c --build-type ament_cmake --dependencies rclcpp std_msgs
package.xml
文件是ROS2项目的功能包管理文件。 CMakeLists.txt
是ROS2项目的编译配置文件
创建计划使用python编写的功能包:
cd ~/Code/RO