话不多说,直接上步骤
1. 创建工作空间
1.1 创建工作空间
工作空间其实就是一个目录,我们命名为test_ws,并且在该目录下创建一个src文件夹,终端命令如下,文件结构图如下。
# mkdir是创建目录,-p是递归创建子目录
mkdir -p test_ws/src
1.2 创建功能包
我们这里新建一个rabbot_base_control文件夹放置可执行代码,创建两个子目录launch和scripts,并创建CMakeLists.txt和
package.xml文件,CMakeLists.txt和package.xml都是设置工作空间编译所需的配置文件,具体如何使用以及指令的含义,
可以网上自行搜索了解一下哈,这里就不细讲了,终端命令和文件结构如下所示。
# 博客中新建文件或文件夹都是相对位置,所以要先进入到相应位置
cd test_ws/src/
mkdir rabbot_base_control
cd rabbot_base_control
# 创建launch和scripts文件夹
mkdir launch
mkdir scripts
# 创建CMakeLists.txt和package.xml文件
touch CMakeLists.txt
touch package.xml
1.3 编写python代码文件
我们先在scripts文件夹下创建一个base_control.py文件,并在里面编写一点python代码,终端命令和python代码如下所示
cd scripts/
touch base_control.py
# 使用gedit编辑文件,也可以用vim
gedit base_control.py
1.4 编写launch文件
在launch文件夹下创建一个base_control.launch文件,并在里面添加如下内容,终端命令和添加内容如下所示
# 先返回到上级目录,再进入launch文件夹
cd ..
cd launch
touch base_control.launch
gedit base_control.launch
1.5 编写CMakeLists.txt文件
# 简单说明
# catkin_package()表明该文件夹是可以被catkin_make编译的功能包
# install(PROGRAMS)表明什么文件会被作为程序编译运行
# install(DIRECTORY)表明什么文件夹会被考虑
1.6 编写package.xml文件
# 简单说明
<name> <version> <description> <maintainer> <license> <buildtool_depend>这些标签都是必须在xml文件中添加的(你可以尝试不添加其中某个标签),内容根据情况填写即可。
但是<buildtool_depend>标签中的内容必须包含 catkin,后期才可以编译成功,编译报错如下。
1.7 编译工作空间
进入test_ws工作空间位置,然后使用catkin_make命令,终端命令如下
# 进入test_ws工作空间目录
cd ~/test_ws/
# 对工作空间进行编译
catkin_make
编译后工作空间下和src文件夹同级多了devel和build两个文件夹,src目录下增加了一个CMakeLists.txt,是一个链接文件。
1.8 运行launch文件
此时我们直接运行launch文件会发现是有错的,如下,提示我们不是一个launch文件。
is neither a launch file in package nor is a launch file name
解决:是不是记起来我们需要在bashrc文件中配置环境信息啦
# 编写bashrc文件内容,在bashrc文件最后一行添加 source /home/你的用户名/test_ws/devel/setup.bash
sudo gedit ~/.bashrc
# 更改退出后,使用如下命令更新一下bashrc环境信息
source ~/.bashrc
更改配置文件后,需要关闭目前终端,重新打开一个,此时运行launch文件,我们会发现还有下图的错误,
ERROR: cannot launch node of type [*/*.py]: can't locate node [*.py] in package
如果没有就跳过此步
错误是说无法在rabbot_base_control包中定位到base_control.py文件,经过网上搜索了解到,原因是我们编写的python文件
无法作为可执行文件,我们右键base_control.py文件,然后选择“Permissions”选项,勾选“Allow executing file as program”即可
勾选后我们再运行launch文件可以正常运行,并且输出了我们代码的提示信息“Workspace successfully be created”
附录. X Error of failed request: BadDrawable (invalid Pixmap or Window parameter)
问题:具体的报错当时忘记截图了,这一行是我当时从终端复制去网上搜索的内容,出现类似问题可以试试
解决:在 /etc/environment 文件末尾设置环境变量 QT_X11_NO_MITSHM = 1,终端命令和添加位置如下图
# 使用gedit打开environment文件
sudo gedit /etc/environment