启动vscode
安装拓展
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