使用VScode搭建ROS开发环境的教程详解
为了在 VScode 中开发 ROS 项目,我们需要以下常用插件:
C/C++
扩展插件ROS
扩展插件ROS msg
扩展插件
下面是一个详细的步骤列表,介绍如何准备环境、配置 VScode 以及开发在 ROS 中。
环境准备
为了完成本教程,你需要:
1. 一台安装有 Ubuntu 的电脑。
2. 你需要在电脑上安装了 ROS。您可以在 ROS 官网 上找到 ROS 安装教程和安装命令。
VScode 安装
在 Ubuntu 终端中输入以下命令(根据您的 Ubuntu 版本可能有所不同):
$ sudo snap install --classic code
VScode 插件安装
打开 VSCode,按下 Ctrl + Shift + X
打开插件列表。在搜索框中搜索需要的扩展插件并安装。
配置 VSCode
在本教程中,我们将介绍以下配置:
配置代码格式
-
打开文件格式化开关。点击 “文件” -> “首选项” -> “设置”,在搜索框中搜索 “Editor: Formaat On Save”,勾选该选项。
-
安装 ROS Linter 插件。在插件列表中搜索 “ROS Linter” 并安装。安装完成后,请配置插件,参考下面的步骤:
- 打开 VSCode 设置,搜索 “ROS Lint Config Path”,设置路径为
/opt/ros/<ROS版本>/share/ross_lint/config/ros_lint.yaml
- 打开终端,输入命令:
sudo apt-get install python3-pyflakes
进行安装。
- 打开 VSCode 设置,搜索 “ROS Lint Config Path”,设置路径为
配置语言服务
- 安装 CMake 工具:在终端中输入以下命令:
$ sudo apt install cmake
- 配置编译选项:
- 添加以下代码到用户
settings.json
文件中。用以设置 ROS 路径以及编译选项。
"C_Cpp.default.configurationProvider": "vector-of-bool.cmake-tools",
"C_Cpp.default.compilerPath": "/usr/bin/gcc",
"cmake.configureSettings": {"CMAKE_EXPORT_COMPILE_COMMANDS": true},
"cmake.configureArguments": ["-DCMAKE_BUILD_TYPE=Debug", "-DCATKIN_BUILD_BINARY_PACKAGE=ON", "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"],
"cmake.sourceDirectory": "${workspaceFolder}",
"cmake.buildDirectory": "${workspaceFolder}/build",
"C_Cpp.default.includePath": [
"/opt/ros/kinetic/include/**",
"${workspaceFolder}/include/**",
"${workspaceFolder}/src/**"
],
"C_Cpp.default.compileCommands": "${workspaceFolder}/build/compile_commands.json",
- 添加以下代码到用户
创建 ROS 工作区
创建 ROS 工作区并新建 ROS 包。在终端中输入以下命令即可创建工作区并新建 ROS 包:
$ mkdir -p ~/ros_ws/src
$ cd ~/ros_ws
$ catkin_make
$ source ~/ros_ws/devel/setup.bash
$ cd ~/ros_ws/src
$ catkin_create_pkg my_package std_msgs rospy
示例说明
下面是两个基本示例。
示例一:发布和订阅 ROS 消息
在 my_package
中创建一个 Python 节点,将信息发布到名为 talker
的主题中,然后从 listener
主题中订阅相同的信息。
#!/usr/bin/env python
import rospy
from std_msgs.msg import String
def talker():
pub = rospy.Publisher('chatter', String, queue_size=10)
rospy.init_node('talker', anonymous=True)
rate = rospy.Rate(10) # 10hz
while not rospy.is_shutdown():
hello_str = "hello world %s" % rospy.get_time()
rospy.loginfo(hello_str)
pub.publish(hello_str)
rate.sleep()
def listener():
rospy.init_node('listener', anonymous=True)
rospy.Subscriber('chatter', String, callback)
rospy.spin()
def callback(data):
rospy.loginfo(rospy.get_caller_id() + "I heard %s", data.data)
if __name__ == '__main__':
try:
talker()
listener()
except rospy.ROSInterruptException:
pass
示例二:使用自定义 ROS 消息类型
在 my_package
中创建 ROS 消息类型(Person.msg
),声明所包含的字段,然后创建一个 Python 节点,发布和订阅 Person
类型消息。
string name # name of the person
float32 age # age of the person
float32 weight # weight of the person
#!/usr/bin/env python
import rospy
from my_package.msg import Person
def talker():
pub = rospy.Publisher('person', Person, queue_size=10)
rospy.init_node('talker', anonymous=True)
rate = rospy.Rate(10) # 10hz
while not rospy.is_shutdown():
person = Person()
person.name = "John"
person.age = 30
person.weight = 95.3
pub.publish(person)
rate.sleep()
def listener():
rospy.init_node('listener', anonymous=True)
rospy.Subscriber('person', Person, callback)
rospy.spin()
def callback(data):
rospy.loginfo("I heard %s, age %f, weight %f", data.name, data.age, data.weight)
if __name__ == '__main__':
try:
talker()
listener()
except rospy.ROSInterruptException:
pass
以上说明,希望对你打造你的 ROS 开发环境有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用VScode搭建ROS开发环境的教程详解 - Python技术站