Ch0. 如何在ROS中创建一个自己的package
0. 开始
笔者在互联网上搜索有关 ROS 创建 workspace 的教程资料,在发现这些教程大多不够完善后,在意识到对于像我这样完全没有熟悉 ROS 和 Ubuntu 系统知识的新手来说,在学习过程中经常会遇到困难后,于是乎决定编写一篇基础性的 ROS 和 Ubuntu 学习指南。该文章主要参考 ROS Tutorial
1. 建立 workspace
通过以下命令创建 workspace 所需的文件夹:
cd
mkdir catkin_ws
cd ~/catkin_ws
mkdir src
值得注意两点是:
当使用catkin_make或catkin build命令来创建 workspace 时,请确保其中包含有src文件夹。
最好是同一个 workspace 中选择 catkin_make 命令而不是 catkin build 命令。
在 ~/catkin 中使用 catkin build 创建 workspace
cd ~/catkin
catkin build
2. 创建 package
基于已预先配置好的 workspace 的源文件夹中,按照以下指令生成包。
cd ~/catkin/src
catkin_create_pkg test rospy
在使用catkin_create_pkg命令时,在其后面紧跟你需要创建的 package 名称;此处指定为 test。
我们还可以利用roscpp与std_msgs等命令来配置我们需要创建的包所支持的语言。
catkin_create_pkg test rospy roscpp std_msgs
rospy 对应 python,roscpp 对应 C++。
3. 编写 node
此时已经生成并成功创建了一个包...(如果有的话),接下来就是撰写我们的代码文件了,在开始撰写代码之前,请确保做好以下准备工作。
通过以下命令安装 VS 作为编辑器:
cd ~/catkin_ws/src
sudo snap install code --classic
安装成功后通过如下指令进入 VS:
code .
在左侧的目录栏我们可以看到文件夹中只有初始的几个文件可供编辑

在项目开发初期必须设置一些扩展工具以支持我们的代码编写。这些工具包括C/C++、Python、CMake和ROS(仅用于提升代码编写效率与本文中的包安装流程无关)。
在 test 文件夹中继续推进流程,在 test 文件夹的 src 子目录下创建 scripts 目录以简化代码管理
cd test/src
mkdir scripts
使用touch命令创建代码文件
cd scripts/
touch my_first_node.py
赋予执行权限:
chmod +x my_first_node.py
回到 catkin_ws 的 src 文件夹中用code .看看多了什么吧:
cd ~/catkin_ws/src
code .

图中存在略微差异的文件夹名设置,在此位置上我们可以观察到我们新建的py文件已经被成功地加入到了指定目录中。
敲入我们的代码:
#! /usr/bin/env python3
import rospy #需要之前安装的扩展包
if __name__ == '__main__':
rospy.init_node("test_node")
rospy.loginfo("Hello from test node") #输出信息
rospy.logwarn("This is a warning") #输出警告
rospy.logerr("This is a error") #输出错误
rospy.sleep(1.0) #延迟一秒
rospy.loginfo("End of program")
ctrl+s 保存后退出。
4. 运行程序
先进入 scripts 文件夹下用 python 运行试试看吧:
cd ~/catkin_ws/src/test/src/scripts
python3 my_first_node.py
代码报错,因为我们这里没有运行roscore:

在一个新的Terminal中运行roscore后,再试一下:
新建一个Terminal,输入:
roscore
切换至原始窗口,并在根级src目录中再次运行catkin build(类似于编译)。然后设置新的source路径。
切换至原始窗口,并在根级src目录中再次运行catkin build(类似于编译)。然后设置新的source路径。
cd ~/catkin_ws
catkin build
source devel/setup.bash
再次尝试下运行:
cd
rosrun test my_first_node.py
结果如下:

运行成功,我们下期再见!
