ROS入门与实践--4(VScode下ROS开发环境搭建)

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操作系统的安装文件,点击即可下载
VScode下载界面
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程序常用的一些插件,推荐大家安装。
VScode插件
后续大家可以根据自己的需求安装适合自己的其他插件。

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,进行功能包的创建
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/**",

ros/ros.h语句抛异常
修改配置文件
修改配置文件
抛异常现象消失
抛异常现象消失
当然,我们也可以将鼠标光标移动到抛异常处,将会出现下面的提示,我们可以点击快速修复
快速修复
选择第一个,添加到"includePath":/opt/ros/noetic/include即可。
或者点击编辑"includePath"设置,进入C/C++ 扩展编辑器的UI界面,找到包含路径功能,在输入界面输入以下代码:
/home/xxx/VScode_ws/src/demo01_helloworld_vs/include/**
编辑“includePath”设置
抛异常现象也可消失。
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.joson文件
我们将原始内容修改为以下内容,保存关闭即可。这样可以实现默认编译,无需再次选择。

{
// 有关 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安装完成界面如下
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的研究生小白,主要是根据赵虚左老师的课程、官方的文档以及按照自己的实际操作来写的教程,其中部分内容借鉴了赵虚左老师的方法,在这里给出教程的网址,希望大家一起学习,谢谢大家!!!

参考资料:
http://www.autolabor.com.cn/book/ROSTutorials/

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羊羊羊ox

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值