0%

ROS笔记(二)集成开发环境搭建

启动vscode

1
2
3
cd xxx_ws
code .

安装拓展

1
2
3
4
5
1、C/C++
2、CMake Tools
3、Python
4、ROS
5、Chinese(Simplified)Language

vscode 中编译 ros

快捷键 ctrl + shift + B 调用编译,选择:catkin_make:build

可以点击配置设置为默认,修改.vscode/tasks.json 文件

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

创建 ROS 功能包

选定 src 右击 —> create catkin package

设置包名 添加依赖

C++实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/*
控制台输出 HelloVSCode !!!

*/
#include "ros/ros.h"

int main(int argc, char *argv[])
{
setlocale(LC_ALL,"");
//执行节点初始化
ros::init(argc,argv,"HelloVSCode");

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

快捷键

1
2
3
ctrl+shift+K //删除整行
ctrl+/ //取消注释
ctrl+shift+B //编译

PS1: 如果没有代码提示

修改 .vscode/c_cpp_properties.json

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

PS2: main 函数的参数不可以被 const 修饰

PS3: 当ROS__INFO 终端输出有中文时,会出现乱码

INFO: ????????????????????????

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

1
2
3
setlocale(LC_CTYPE, "zh_CN.utf8");
setlocale(LC_ALL, ""); //推荐

运行

在vscode中新建终端,先roscore,再开一个终端,source完rosrun

Python实现

在 功能包 下新建 scripts 文件夹,添加 python 文件,并添加可执行权限

添加可执行权限:右键scripts,在终端中打开chmod +x *.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#! /usr/bin/env 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

配置 CMakeLists.txt

C++ 配置:

1
2
3
4
5
6
7
add_executable(节点名称
src/C++源文件名.cpp
)
target_link_libraries(节点名称
${catkin_LIBRARIES}
)

Python 配置:

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

noetic版本下需要对CMakeList的python部分进行配置,目的是1、正确安装python脚本
2、定位合适的python解释器

而在melodic及以前的版本,只需要对.py文件进行权限设置,直接rosrun即可。

在noetic版本下,现象:当不配置CMakeList.txt 执行python文件抛出异常:

/usr/bin/env: “python”: 没有那个文件目录

原因:当前noetic使用的是python3

解决:

1、直接声明解释器为python3(#! /usr/bin/env python3)(不建议)

2、通过软连接将python链接到python3

sudo ln -s /usr/bin/python3 /usr/bin/python

其他IDE

ROS 开发可以使用的 IDE 还是比较多的,除了上述的 VScode,还有 Eclipse、QT、PyCharm、Roboware ….,详情可以参考官网介绍:http://wiki.ros.org/IDEs