3rd. VSCode下开发ROS的基本流程(C++/Python)

科普:ROS的文件体系

一个ROS的工作包可以被称为一个”catkin工作空间“, 在这个工作空间中,只含有三个文件夹:bulid, devel 和 src。在编译的过程中,这三个文件夹的工作流程是:src(package 源代码包)—— bulid(cmake&catkin 缓存和中间文件)—— devel(可执行目标文件)。所以在这三个文件夹中最核心的是src文件夹,它是package源代码包的集合,其他两个文件夹是src的编译过程和结果文件。

src文件夹由一个个package软件包组成,一个软件包中可以包含一个或多个节点的文件。在package中,必须包含的文件是:cmakelist.txt (描述package的编译规则),package.xml(package的信息描述)和src(源代码文件)。其他文件夹还包括:msg(自定义消息), srv(自定义服务), launch(launch文件), scripts(可执行脚本)等。

转载于:https://zhuanlan.zhihu.com/p/51430594

1.创建工作空间

mkdir -p xxx_ws/src        //创建文件夹  (必须得有 src) ,也可以鼠标点击来创建
cd xxx_ws                  //移动到目录下
catkin_make                //进行编译

在此目录下,运行终端:

2.启动VSCode

 进入 xxx_ws 启动 vscode

cd xxx_ws
code .

  

3.  配置vscode 编译 ros 

快捷键 ctrl + shift + B 调用编译,选择: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"
        }
    ]
}

4. 创建 ROS 功能包

5. 功能包下  C++ 的实现 

 

在cpp文件中加入内容:

#include "ros/ros.h"

int main(int argc, char  *argv[])
{
    //用于解决输出中文乱码问题
    setlocale(LC_ALL,"");

    
    //执行节点初始化
    ros::init(argc,argv,"HelloVSCode");

    //输出日志
    ROS_INFO("Hello VSCode!!!");
    return 0;
}

为了使编译器能够成功使用ros里的函数补齐提示,需要以下操作:

可能是ubuntu和ros的版本不同,没有cppstandard的可以自己加上这一行:并改成c++17:

 (小提示:当INFO后面加了一些中文之后,可能出现乱码。INFO: ????乱码        

                   解决办法:在函数开头加入下面代码的任意一句)

setlocale(LC_CTYPE, "zh_CN.utf8");
setlocale(LC_ALL, "");

 6. 配置 CMakeLists.txt文件(C++)

add_executable(节点名称
  src/C++源文件名.cpp
)

target_link_libraries(节点名称
  ${catkin_LIBRARIES}
)

 

7. 进行编译(C++)

Ctrl + Shift +B 进行编译,发现报错:

进行改错,显示的是 CMakeLists.txt:211: Parse error.  Function missing ending ")".

也就是说 CMakeLists.txt文件里的211行这少了右括号。

从211行往上找,发现都是注释,直到153行,确实少了个括号(见上图),补上:

 

 重新编译,没有问题:

 8.执行(C++)

新建终端:

运行:

//在一个终端运行
roscore 


//在一个新的终端运行
source ./devel/setup.bash        //添加环境变量
rosrun first_test  hello_vscode  //运行,格式 rosrun  功能包的名字  可执行的节点  

 9. python代码的实现

前4步一样,创建 ROS 功能包那。

新建一个scripts文件夹

(主要是为了和src进行区分开,其实放在一个文件夹中也是可行的)

 新建python文件

 写py文件内容

#! /usr/bin/python
# -*- coding: utf-8 -*-
"""
    Python 版本的 HelloVScode,执行在控制台输出 HelloVScode
    实现:
    1.导包
    2.初始化 ROS 节点
    3.日志输出 HelloWorld

"""

import  rospy # 1.导包

if __name__ == "__main__":

    rospy.init_node("Hello_Vscode_p")  # 2.初始化 ROS 节点

    rospy.loginfo("Hello VScode, 我是 Python ....")  #3.日志输出 HelloWorld

添加可执行权限

chmod +x *.py   //给所有py文件添加可执行权限

 配置可执行文件

catkin_install_python(PROGRAMS
  scripts/hello_vscode.py
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

 编译文件

Ctrl + Shift + B

运行

在工作空间下运行:

roscore


source ./devel/setup.bash
rosrun first_test  hello_vscode.py

(出现报错:Non-ASCII character '\xe7' in file

解决办法:在文件头部添加如下两行注释码:

#!/usr/bin/python

# -*- coding: <encoding name> -*- 例如,可添加# -*- coding: utf-8 -*-)

(下面是由于我之前创建过工作空间,并运行过很多程序,现在删掉重学导致的)

 如果终端提示bash: /home/wood/catkin_ws/devel/setup.bash: 没有那个文件或目录类似的话语,

 在终端输入:

gedit ~/.bashrc

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

是刃小木啦~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值