問題引入
- ROS Melodic的默認(rèn)環(huán)境是python2, 最新發(fā)布的ROS noetic才完全支持python3陡鹃。因此對(duì)用ROS Melodic開發(fā)項(xiàng)目茵宪, 同時(shí)需要使用python3編寫程序的使用者造成了一定的困擾轿偎。
- vscode集成編譯器為ros開發(fā)提供了很大的便利台谍,但其包含了一些特殊的使用方法如json文件等
- ros主要用于機(jī)器人的開發(fā)镐依,機(jī)器人的感知與決策往往需要使用機(jī)器學(xué)習(xí)和深度學(xué)習(xí)技術(shù)匹涮,python的第三方庫(如:pytorch、tensorflow和sklearn)就提供了很大的便利槐壳,為了便于管理開發(fā)者往往使用anaconda環(huán)境,但網(wǎng)上針對(duì)于ros使用python3很少有在anaconda基礎(chǔ)上解決的然低。
環(huán)境
1.編輯器vscode 2.ROS版本melodic 3.系統(tǒng)ubuntu18.04
4.anaconda(python3.7.4)
解決步驟(已經(jīng)滿足并正確安裝上述環(huán)境)
1.首先保證python默認(rèn)環(huán)境是anaconda
1.png
2.安裝python依賴庫
pip install catkin-tools
pip install rospkg
3.正常創(chuàng)建ros工作空間
-DPYTHON_EXECUTABLE=后面為你自己anaconda解釋器的路徑
mkdir -p xxx_ws/src(必須得有 src)
cd xxx_ws
catkin_make -DPYTHON_EXECUTABLE=/home/zhw/anaconda3/bin/python
4.啟動(dòng)vscode
cd xxx_ws
code .
5.在vscode配置tasks.json
使用快捷鍵ctrl+shift+b,出現(xiàn)下圖界面,選擇catkin_make:build后面的齒輪
2.png
修改.vscode/tasks.json 文件,注意 -DPYTHON_EXECUTABLE=后面的路徑
{
// 有關(guān) tasks.json 格式的文檔务唐,請(qǐng)參見
// https://go.microsoft.com/fwlink/?LinkId=733558
"version": "2.0.0",
"tasks": [
{
"label": "catkin_make:debug", //代表提示的描述性信息
"type": "shell", //可以選擇shell或者process,如果是shell代碼是在shell里面運(yùn)行一個(gè)命令雳攘,如果是process代表作為一個(gè)進(jìn)程來運(yùn)行
"command": "catkin_make",//這個(gè)是我們需要運(yùn)行的命令
"args": ["-DPYTHON_EXECUTABLE=/home/zhw/anaconda3/bin/python "],//如果需要在命令后面加一些后綴,可以寫在這里枫笛,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
"group": {"kind":"build","isDefault":true},
"presentation": {
"reveal": "always"http://可選always或者silence吨灭,代表是否輸出信息
},
"problemMatcher": "$msCompile"
}
]
}
到這步已經(jīng)可以使用ctrl+shift+b快捷編譯,相當(dāng)于catkin_make DPYTHON_EXECUTABLE=/home/zhw/anaconda3/bin/python
命令
6.在scripts文件夾下創(chuàng)建python文件
3.png
創(chuàng)建代碼,代碼第一行要給出解釋器位置刑巧。
#! /home/zhw/anaconda3/bin/python
"""
Python 版本的 HelloVScode喧兄,執(zhí)行在控制臺(tái)輸出 HelloVScode
實(shí)現(xiàn):
1.導(dǎo)包
2.初始化 ROS 節(jié)點(diǎn)
3.日志輸出 HelloWorld
"""
import numpy
import rospy # 1.導(dǎo)包
if __name__ == "__main__":
rospy.init_node("Hello_Vscode_p") # 2.初始化 ROS 節(jié)點(diǎn)
rospy.loginfo("Hello VScode, 我是 Python ....") #3.日志輸出 HelloWorld
修改編譯文件后正常測試即可。