当前位置:   article > 正文

【ROS学习笔记2】使用vscode开发ROS全流程_vscode ros

vscode ros

【ROS学习笔记2】使用vscode开发ROS全流程

写在前面,本系列笔记参考的是AutoLabor的教程,具体项目地址在 这里


一、安装终端工具Terminator

输入以下命令行安装terminator终端

sudo apt-get install terminator
  • 1

terminator终端可以进行拆分,安装完成后启动的终端效果如下:


二、安装VsCode及插件

直接在snap商店中搜索vscode选择第一个软件进行安装即可,注意安装完成后需要对vscode进行更新

使用以下命令对vscode进行更新

sudo apt-get upgrade
sudo apt-get install vscode
  • 1
  • 2

需要安装的插件有c/c++ python ros,直接在插件商城搜索安装最多下载量的那个就可以。


三、使用VsCode开发全流程

1、创建工作空间

使用终端在用户目录下创建工作空间并且初始化

cd 用户目录
mkdir -p xxx_ws/src
cd xxx_ws
catkin_make
  • 1
  • 2
  • 3
  • 4

如果使用catkin_make进行编译时失败,出现

CMake Error at /opt/ros/melodic/share/catkin/cmake/empy.cmake:29 (message):
  Unable to find either executable 'empy' or Python module 'em'...  try
  installing the package 'python-empy'
Call Stack (most recent call first):
  /opt/ros/melodic/share/catkin/cmake/all.cmake:163 (include)
  /opt/ros/melodic/share/catkin/cmake/catkinConfig.cmake:20 (include)
  CMakeLists.txt:56 (find_package)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

那是因为,catkin找的python版本为anaconda下面的版本,所以需要改为指定采用下面的命令

catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3
  • 1

2、使用vscode打开工作空间

可以在vscode中通过图形化的方式来进行打开,不过这里推荐使用命令行的方式进行打开

cd xxx_ws
code .
  • 1
  • 2

然后在vscode中使用ctrl + shift + B执行第一次编译,在执行第一次编译之前我们需要对编译文件进行一些配置,选择这里的这个齿轮进入配置文件开始配置

将其修改为以下的内容:

{
// 有关 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"
        }
    ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

或者是以下内容,具体看会不报上面提到的错误

{
// 有关 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": ["-DPYTHON_EXECUTABLE=/usr/bin/python3"],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
            "group": {"kind":"build","isDefault":true},
            "presentation": {
                "reveal": "always"//可选always或者silence,代表是否输出信息
            },
            "problemMatcher": "$msCompile"
        }
    ]
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

即完成配置,这时我们使用ctrl + shift + B执行第一次编译,没有报错即可进行下一步

3、创建ROS功能包

在安装ROS插件的前提下我们可以直接用图形化的方式来创建ROS功能包,省去了使用命令行

cd src
catkin_create_pkg 自定义Ros包名 roscpp rospy std_msgs
  • 1
  • 2

的麻烦。
这里直接使用图形化的方式来创建ROS功能包,在路径xxx_ws/src中创建功能包,如果没有该选项说明你没有安装ROS插件。

然后确定自己的包名,这里取的包名为holavscode(注意:包名不能有大写字母

紧接着为包添加依赖,一般的依赖都包括roscpp rospy std_msgs

这样我们就创建好了一个ROS功能包,接下来我们就可以在这个ROS功能包中继续完成我们的源码文件了。

4、添加Python可执行脚本文件

首先为python脚本文件创建一个存放的文件夹,

然我们可以在这个文件夹中开始编写我们的python脚本文件,这里写一个简单的脚本文件,打印一条信息Holaaaaa Vscode!!!

#! usr/bin/env python
#为python选择解释器

import rospy

if __name__ == "__main__":
    rospy.init_node("hola")
    rospy.loginfo("Holaaaaa Vscode!!!")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

然后,使用chmod +x *.py可以为所有python文件添加可执行权限

接下来我们需要修改CmakeList.txt文件,找到

#############
## Install ##
#############
  • 1
  • 2
  • 3

的位置,修改

catkin_install_python(PROGRAMS scripts/自定义文件名.py
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
  • 1
  • 2
  • 3

修改完成后使用ctrl + shift + B执行编译,编译成功会出现以下的提示:

然后我们可以进行验证,打开两个终端,在第一个终端中输入

roscore
  • 1

在第二个终端中先进行数据刷新,然后运行节点

cd xxx_ws
source ./devel/setup.bash
rosrun 包名 脚本文件名.py
  • 1
  • 2
  • 3

5、添加Cpp可执行脚本

首先为包添加一个可执行Cpp文件,输入以下内容

#include "ros/ros.h"

int main(int argc, char *argv[])
{
    setlocale(LC_ALL, "");
    //执行节点初始化
    ros::init(argc, argv, "HolaVscode");
    //输出日志信息
    ROS_INFO("Holaaaaaa Vsode!!!");
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

注:如果使用cpp时没有代码提示:

修改 .vscode/c_cpp_properties.json

设置 “cppStandard”: “c++17”

然后修改CmakeList.txt文件

在CmakeList.txt文件中找到

###########
## Build ##
###########
  • 1
  • 2
  • 3

部分

add_executable(执行结点名
  src/源文件名.cpp
)
target_link_libraries(执行结点名
  ${catkin_LIBRARIES}
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

例如这样

需要记住这个执行结点名,因为在后面使用rosrun运行程序的时候需要使用这个节点名,

在运行包之前同样要进行编译ctril+shift+B和缓存刷新

cd 工作空间
source ./devel/setup.bash
  • 1
  • 2

运行Cpp脚本和Python脚本有一点区别,Cpp需要编译所以我们使用的是其执行结点名,而Python脚本不需要编译我们可以直接使用源文件

rosrun 包名 执行节点名    #运行cpp脚本
rosrun 包名 python源文件名 #运行python脚本
  • 1
  • 2

下面是一个例子


四、添加launch文件

1、介绍

当我们在一个程序中需要启动多个节点时,如果每次都用rosrun逐一启动,显然效率低下,那么更好的做法是使用launch文件,一次性启动多个节点。

2、实现

1.选定功能包右击–>添加launch文件夹

2.选定launch文件夹–>添加launch文件

3.编辑launch文件内容

<launch>
    <node pkg="helloworld" type="demo_hello" name="hello" output="screen" />
    <node pkg="turtlesim" type="turtlesim_node" name="t1"/>
    <node pkg="turtlesim" type="turtle_teleop_key" name="key1" />
</launch>
  • 1
  • 2
  • 3
  • 4
  • 5
  • node --> 包含的某个节点
  • pkg --> 功能包
  • type --> 被运行的节点文件
  • name --> 为节点命名
  • output --> 设置日志的输出目标

4.更新缓存

source ./devel/setup.bash
  • 1

5.运行launch文件

roslaunch 包名 launch文件名
  • 1

3、示例
为我们的上述代码编写launch文件,并且输出到终端

<launch>
    <node pkg="holavscode" type="holavs_c" name="hell_c" output="screen"/>
    <node pkg="holavscode" type="holavs_p.py" name="hello_p" output="screen"/>
</launch>
  • 1
  • 2
  • 3
  • 4

结果:


五、Reference

http://www.autolabor.com.cn/book/ROSTutorials/chapter1/14-ros-ji-cheng-kai-fa-huan-jing-da-jian/143-launchwen-jian-yan-shi.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/496724
推荐阅读
相关标签
  

闽ICP备14008679号