ROS入门与实践--4
1 VScode下ROS开发环境搭建
VScode是一种简化且高效的代码编辑器,同时支持诸如调试,任务执行和版本管理之类的开发操作。它的目标是提供一种快速的编码编译调试工具。然后将其余部分留给IDE。VScode集成了所有一款现代编辑器所应该具备的特性,包括语法高亮、可定制的热键绑定、括号匹配、以及代码片段收集等。它支持Windows,Linux和macOS等操作系统以及开源代码。它支持测试,并具有内置的Git版本控制功能以及开发环境功能,例如代码完成(类似于IntelliSense),代码段和代码重构等。编辑器支持用户定制的配置,例如仍在编辑器中时,可以更改各种属性和参数,例如主题颜色,键盘快捷键等,内置的扩展程序管理功能。
1.1 VScode下载与安装
VScode官方网址:https://code.visualstudio.com/
VScode官方文档网址:https://code.visualstudio.com/docs
VScode历史版本记录网址:https://code.visualstudio.com/updates/v1_75
我们可以打开Ubuntu自带的浏览器,输入上方的VScode官方网址,找到安装包进行VScode的下载并安装。以下是操作流程:
1.在Ubuntu操作系统中打开链接,可以看到以下界面,找到.deb
拓展名的文件,这是适配Ubuntu操作系统的安装文件,点击即可下载
2.安装包下载完成后,我们可以直接点击浏览器中的下载按钮,点击图中框选的文件按钮,就可以直接定位到下载的目录
3.VScode的安装方式有两种
方式一:直接在下载目录下双击安装包,弹出窗口,点击安装,输入密码等待安装即可
方式二:Ctrl+Alt+T
快捷键打开终端,输入以下指令,回车输入密码即可安装
sudo dpkg -i xxx.deb
本教程中 xxx = code_1.75.1-1675893397_amd64.deb
3.如需卸载VScode,可以直接在终端中输入以下命令进行卸载
sudo dpkg --purge code
1.2 VScode中集成ROS插件的安装及配置
在VScode中开发ROS程序,需要依赖一些插件,通过安装这些插件,我们可以稳定运行ROS程序,同时提高我们的开发效率,t通过打开VScode侧边栏的Extensions(插件)选项或者使用快捷键Ctrl+Shift+X
打开插件窗口进行插件的安装。下图是开发ROS程序常用的一些插件,推荐大家安装。
后续大家可以根据自己的需求安装适合自己的其他插件。
1.3 VScode中关于ROS的开发流程
1.创建并编译ROS开发工作空间
通过下列指令进行工作空间的创建和编译
mkdir -p VScode_ws/src
cd VScode_ws
catkin_make
关于工作空间的创建和编译在第三节有详细介绍,这里不再赘述。
2.工作空间下启动VScode
在工作空间目录下,输入下列指令,即可在工作空间下启动VScode
cd xxx_ws 若不在工作空间目录下,可以通过此指令首先进入工作空间目录
code .
启动成功界面如下:
3.VScode环境下创建功能包
找到src
文件夹,鼠标右击选择create catkin package
,进行功能包的创建
弹出的第一个窗口输入功能包名demo01_helloworld_vs
,然后按下回车键
弹出的第二个窗口输入功能包依赖名roscpp rospy std_msgs
,然后按下回车键,功能包即创建成功
功能包创建成功界面
4.VScode开发环境下C++实现HelloWorld
在功能包的src
目录下新建一个*.cpp文件,命名为helloworld_vs_c
,并输入以下代码:
/*
实现功能:控制台输出 "Hello by vscode!,你好!"
步骤:
1.包含头文件
2.初始化ROS节点
3.日志输出
*/
#include "ros/ros.h" // 1.包含头文件
int main(int argc, char *argv[])
{
//解决中文乱码问题
//setlocale(LC_CTYPE, "zh_CN.utf8");或
setlocale(LC_ALL, "");
// 2.初始化ROS节点
ros::init(argc,argv,"hello_vs_c");
// 3.日志输出
ROS_INFO("Hello by vscode!,你好!");
return 0;
}
补充: 在.vscode
路径下的c_cpp_properties.json
文件中修改以下信息代码可以保证代码提示功能正常
"cppStandard": "c++17"
在空白行输入main
后,会提示出一个main
函数的框架,我们需要删除const
这个关键字,原因是main
函数的参数不可以被const
修饰
int main(int argc, char const *argv[])
{
/* code */
return 0;
}
==============修改为==============
int main(int argc, char *argv[])
{
/* code */
return 0;
}
第一次输入代码时,ros/ros.h
语句往往会抛异常,这是因为没有设置VSCode中c_cpp_properties.json
配置文件中includepath属性,我们可以打开c_cpp_properties.json
配置文件,输入以下代码即可
"/home/xxx/VScode_ws/src/demo01_helloworld_vs/include/**",
修改配置文件
抛异常现象消失
当然,我们也可以将鼠标光标移动到抛异常处,将会出现下面的提示,我们可以点击快速修复
选择第一个,添加到"includePath":/opt/ros/noetic/include
即可。
或者点击编辑"includePath"
设置,进入C/C++ 扩展编辑器的UI界面,找到包含路径功能,在输入界面输入以下代码:
/home/xxx/VScode_ws/src/demo01_helloworld_vs/include/**
抛异常现象也可消失。
5.VScode开发环境下Python实现HelloWorld
在功能包下新建scripts文件夹,在scripts目录下新建一个*.py文件,命名为helloworld_vs_p
,并输入以下代码:
#! /usr/bin/env python
"""
功能实现:控制台输出 "Hello by vscode_p!"
步骤:
1.导入rospy包
2.初始化ROS节点
3.日志输出
"""
import rospy # 1.导入rospy包
if __name__ == "__main__":
rospy.init_node("Hello_vs_p") # 2.初始化ROS节点
rospy.loginfo("Hello by vscode_p!") # 3.日志输出
在scripts目录下,添加Python文件可执行权限
cd scripts 进入到scripts目录下
chmod +X *.py 添加可执行权限
ll 查看可执行权限文件目录
下图即为执行权限添加成功
6.CMakeLists.txt文件配置
C++相关CMakeLists.txt文件配置
VScode下开发ROS程序的配置文件修改同上一节,只要注意名称一致即可
## Declare a C++ executable 声明一个C++可执行文件
## With catkin_make all packages are built within a single CMake context
## The recommended prefix ensures that target names across packages don't collide
# add_executable(${PROJECT_NAME}_node src/test01_node.cpp)
add_executable(cpp源文件的名称 src/cpp源文件的名称.cpp)
add_executable(helloworld src/helloworld.cpp)
=========================================================================================
## Specify libraries to link a library or executable target against 指定库来链接库或可执行目标
# target_link_libraries(${PROJECT_NAME}_node
# ${catkin_LIBRARIES}
# )
target_link_libraries(cpp源文件的名称
${catkin_LIBRARIES}
)
target_link_libraries(helloworld_vs_c
${catkin_LIBRARIES}
)
Python相关CMakeLists.txt文件配置
## Mark executable scripts (Python etc.) for installation
## in contrast to setup.py, you can choose the destination
# catkin_install_python(PROGRAMS
# scripts/my_python_script
# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )
catkin_install_python(PROGRAMS
scripts/python文件名.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
catkin_install_python(PROGRAMS
scripts/helloworld_vs_p.py
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
7.编译工作空间
在VScode开发环境下,可以直接通过快捷键Ctrl+Shift+B
进行工作空间的编译,在弹出的窗口选择catkin_make:build
即可
补充: 为了避免每次编译都出现弹窗,我们可以进行以下设置
点击catkin_make:build
后的齿轮设置按钮
这时候会在.vscode
目录自动创建一个tasks.json
文件,内容如下
我们将原始内容修改为以下内容,保存关闭即可。这样可以实现默认编译,无需再次选择。
{
// 有关 tasks.json 格式的文档,请参见
// https://go.microsoft.com/fwlink/?LinkId=733558
"version": "2.0.0",
"tasks": [
{
"label": "catkin_make:debug", //代表提示的描述性信息
"type": "shell", //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是process代表作为一个进程来运行
"command": "catkin_make",//这个是我们需要运行的命令
"args": [],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
"group": {"kind":"build","isDefault":true},
"presentation": {
"reveal": "always"//可选always或者silence,代表是否输出信息
},
"problemMatcher": "$msCompile"
}
]
}
8.执行程序
VScode开发环境下,我们可以在编辑器下新建终端,然后进行后续的操作
首先启动roscore
,然后在VScode新建的终端中刷新一下环境变量,也就是输入以下指令source ./devel/ssetup.bash
,然后输入程序运行命令
rosrun demo01_helloworld_vs helloworld_vs_c C++程序文件运行
rosrun demo01_helloworld_vs helloworld_vs_p.py Python程序文件运行
下图即为程序运行成功界面,我们可以看到,日志成功输出到终端界面。
2 Git的环境搭建
Git
是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。我们可以通过Git非常高效的管理我们的工程开发项目。
2.1 Git下载与安装
Git官方网站:https://git-scm.com/
在Ubuntu操作系统下,我们可以通过以下命令下载并安装Git
sudo apt install git
2.2 Git的环境配置及使用
对于Git的环境配置及使用,这里不做详细介绍,我们可以通过CSDN
官方的技能树功能进行了解和学习
Git技能树学习网址:https://edu.csdn.net/skill/git
3 Terminator终端的应用
在测试ROS程序时,需要频繁的开启终端,在Ububtu原始的终端上,只能每次都新打开一个窗口,随着程序的复杂度上升,要测试的节点的增加, 桌面可能会启动非常多的终端界面,为了解决这个问题,我们这里推荐安装一款软件:Terminator,它最大的特点就是可以在一个窗口中打开多个终端,可以有效解决上述问题。
3.1 Terminator的安装
通过下面的指令,我们可以成功安装Terminator
sudo apt install terminator
Terminator安装完成界面如下
3.2 Terminator的简单应用
对于Terminator
的启动,我们同样可以用快捷键Ctrl+Alt+T
来实现,启动一个终端界面后,我们可以在终端窗口空白处右击选择一些功能
通过操作,我们可以实现终端窗口的分屏,这样可以保证多个终端窗口在一个大窗口下,防止混乱不清
3.3 Terminator快捷键汇总与介绍
为了更好的进行Terminator的操作,便于以后的程序运行和节点测试,下面介绍一些常用的快捷键
1.同一个终端内的操作相关快捷键
快捷键 | 快捷键说明 |
---|---|
Alt+Up | 移动到上面的终端 |
Alt+Down | 移动到下面的终端 |
Alt+Left | 移动到左边的终端 |
Alt+Right | 移动到右边的终端 |
Ctrl+Shift+O | 水平分割终端 |
Ctrl+Shift+E | 垂直分割终端 |
Ctrl+Shift+Right | 在垂直分割的终端中将分割条向右移动 |
Ctrl+Shift+Left | 在垂直分割的终端中将分割条向左移动 |
Ctrl+Shift+Up | 在水平分割的终端中将分割条向上移动 |
Ctrl+Shift+Down | 在水平分割的终端中将分割条向下移动 |
Ctrl+Shift+S | 隐藏/显示滚动条 |
Ctrl+Shift+F | 搜索 |
Ctrl+Shift+C | 复制选中的内容到剪贴板 |
Ctrl+Shift+V | 粘贴剪贴板的内容到此处 |
Ctrl+Shift+W | 关闭当前终端 |
Ctrl+Shift+Q | 退出当前窗口,当前窗口的所有终端都将被关闭 |
Ctrl+Shift+X | 最大化显示当前终端 |
Ctrl+Shift+Z | 最大化显示当前终端并使字体放大 |
Ctrl+Shift+N / Ctrl+Tab | 移动到下一个终端 |
Ctrl+Shift+P / Ctrl+Shift+Tab | 移动到之前的一个终端 |
2.各终端之间的操作相关快捷键
快捷键 | 快捷键说明 |
---|---|
F11 | 全屏开关 |
Ctrl+Shift+T | 打开一个新的标签 |
Ctrl+PageDown | 移动到下一个标签 |
Ctrl+PageUp | 移动到上一个标签 |
Ctrl+Shift+PageDown | 将当前标签与其后一个标签交换位置 |
Ctrl+Shift+PageUp | 将当前标签与其前一个标签交换位置 |
Ctrl+Plus (+) | 增大字体 |
Ctrl+Minus (-) | 减小字体 |
Ctrl+Zero (0) | 恢复字体到原始大小 |
Ctrl+Shift+R | 重置终端状态 |
Ctrl+Shift+G | 重置终端状态并clear屏幕 |
Super+g | 绑定所有的终端,以便向一个输入能够输入到所有的终端 |
Super+Shift+G | 解除绑定 |
Super+t | 绑定当前标签的所有终端,向一个终端输入的内容会自动输入到其他终端 |
Super+Shift+T | 解除绑定 |
Ctrl+Shift+I | 打开一个窗口,新窗口与原来的窗口使用同一个进程 |
Super+i | 打开一个新窗口,新窗口与原来的窗口使用不同的进程 |
上述快捷键可以在学习过程中自行尝试,这里不再给出实例。
至此,机器人操作系统(ROS)入门与实践–4的内容全部更新完,下一节我们将进行ROS通信机制的介绍及各部分程序运行的教学,希望大家支持,本人是自学ROS的研究生小白,主要是根据赵虚左老师的课程、官方的文档以及按照自己的实际操作来写的教程,其中部分内容借鉴了赵虚左老师的方法,在这里给出教程的网址,希望大家一起学习,谢谢大家!!!