目录
首先创建一个工作空间以及一个src子目录,然后再进入工作空间调用catkin_make命令编译
- mkdir -p demo02_ws/src
-
- cd demo02_ws/
-
- catkin_make
启动VScode
code .
按Ctrl+Shift+B,点击catkin_make:build
将里面的文本全部替换
- {
- "version": "2.0.0",
- "tasks": [
- {
- "type": "catkin_make",
- "problemMatcher": [
- "$catkin-gcc"
- ],
- "group": "build",
- "label": "catkin_make: build"
- }
- ]
- }
将上面代码全部替换成下面代码
- {
- "version": "2.0.0",
- "tasks": [
- {
- "label":"catkin_make:debug",
- "type": "shell",
- "command":"catkin_make",
- "args":[],
- "group": {"kind":"build","isDefault":true},
- "presentation":{
- "reveal":"always"
- },
- "problemMatcher":"$msCompile"
- }
- ]
- }
这样做的目的是为了方便编译,以后在VScode中按Ctrl+Shift+B就可以实现编译
在src中生成一个功能包,该功能包依赖于roscpp,rospy,std_msgs,其中roscpp是使用C++实现的库,rospy是使用python实现的库,std_msgs是标准消息库,创建ROS功能包时,一般都会依赖这三个库实现。
建议写要求性能高,算法复杂的代码用C++,写一些功能简单的工具包的代码使用python。
用鼠标右键点击src,选择create catkin package,在输入框填一个名字hello_vscode
再到输入框输入 roscpp rospy std_msgs
在hello_vscode目录下面新建目录scripts
然后在scripts新建hello_vscode_p.py
然后修改scripts文件权限,右键点击scripts选择以终端方式打开,输入
chmod +x *.py
再到hello_vscode_p.py中写代码
- #! /usr/bin/env python
-
-
- #导入包
- import rospy
- #入口
- if __name__=="__main__":
- #初始化ros节点
- rospy.init_node("hello_p")
- #输出日志
- rospy.loginfo("hello vscode! 这是python!")
此时打开与里面src同目录的CmakeLists.txt文件
找到
# catkin_install_python(PROGRAMS
# scripts/my_python_script
# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )
去掉 #
#
#
#
将scripts/my_python_script改成scripts/hello_vscode_p.py
最后按Ctrl+Shift+B进行编译
- #当不配置CmakeLists.txt 执行python文件会抛出异常
- #/usr/bin/env :"python":没有那个文件或目录
- #原因是:当前ros版本是 noetic ,它使用的是python3
- #解决方案
- #1、直接声明解释器为python3:#! /usr/bin/env python3(不建议,如果调用别人的代码就可能不能直接修改到他的py文件)
- #2、通过软链接的方式将python链接到python3(建议)
- sudo ln -s /usr/bin/python3 /usr/bin/python
点击终端里面的+,新建终端
进入工作环境
cd ~/demo02_ws/
roscore
再新开一个终端, 然后再新建终端输入
- source ./devel/setup.bash
-
- rosrun hello_vscode hello_vscode_p.py
成功后如图所示