ROS中使用Python3的注意事项

ROS中使用Python3的注意事项

1 所有操作步骤

1.1 首先,强烈建议搭建一个只包含Python3虚拟环境,这样不会有各种各样的导入包产生的报错,也可以避免把你的ROS搞挂,roscore运行不起来。这一步请参考:

Python–Virtualenv简明教程

1.2 其次,安装一系列ROS用到的包的Python3版本,这里包括catkin,rospkg,tf等等。这些是非常常用的包,一般写ROS程序都会用到,所以肯定是要装的。当然,各位在开发过程中肯定还会遇到一些不支持Python3的ROS包,那么同理也需要安装其对应的Python3版本。详细可参考:

在ROS中使用Python3


% 注意tf包需要从源码重新编译,下面是编译步骤
% 编译得到的Python包存放在devel/lib/python3/dist-packages/里面,注意要将这个路径写到PYTHONPATH变量中
mkdir catkin_ws % 创建工作空间
cd catkin_ws
mkdir src
cd src
git clone https://github.com/ros/geometry %下载geometry和geometry2的源代码
git clone https://github.com/ros/geometry2
cd ..
source venv/bin/activate %激活你的虚拟环境
pip install catkin_pkg pyyaml empy rospkg numpy
catkin_make %在虚拟环境下编译的
source devel/setup.bash

1.3 第三,在Pycharm里面运行ROS的程序。很简单,三步。第一步,在shell中source ROS的路径,然后在这个shell里打开Pycharm,这样才能在Pycharm里运行ROS节点。第二步,设置虚拟环境中的python作为解释器。第三步,设置python包的搜索路径。详细方法参考:

在Pycharm中写ROS代码
ROS与Python入门教程-搭建开发环境(PyCharm)
PyCharm添加Python解释器及添加package路径

1.4 最后,也是最关键的一点。你一定要搞清楚的是PYTHONPATH这个环境变量。遇到的很多导入包的错误都是因为PYTHONPATH没有设置好。例如,要运行roscore会需要导入yaml这个python包,如果你PYTHONPATH没有设置Python2的路径,就会导致roscore引入Python3的yaml的包,造成错误,如下。总而言之,一定要搞清楚PYTHONPATH怎么设置,需要用到哪些路径,不需要用到哪些路径,哪些路径放在前面,哪些放在后面。PS:因为貌似只要一搜索到名字相同的包,系统就会直接引入,不管是版本2还是3;所以如果一个软件包既有2也有3的版本,那么一定要考虑好路径的排列顺序。
Traceback (most recent call last):
  File "/opt/ros/kinetic/bin/roscore", line 69, in <module>
    import roslaunch
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 51, in <module>
    from . import param_dump as roslaunch_param_dump
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/param_dump.py", line 40, in <module>
    import roslaunch.config
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/roslaunch/config.py", line 45, in <module>
    import rospkg.distro
  File "/usr/lib/python2.7/dist-packages/rospkg/distro.py", line 44, in <module>
    import yaml
  File "/usr/local/lib/python3.5/dist-packages/yaml/__init__.py", line 284
    class YAMLObject(metaclass=YAMLObjectMetaclass):
                              ^
SyntaxError: invalid syntax
  • 9
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
### 回答1: 要在ROS Melodic使用Python 3,需要安装Python 3的相关库和工具。可以按照以下步骤进行操作: 1. 安装Python 3 在Ubuntu 18.04Python 3已经预装。如果没有安装,可以使用以下命令安装: ``` sudo apt-get install python3 ``` 2. 安装Python 3的ROS依赖库 在ROS Melodic,需要安装Python 3的ROS依赖库。可以使用以下命令安装: ``` sudo apt-get install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential ``` 3. 创建Python 3的ROS工作空间 可以使用以下命令创建Python 3的ROS工作空间: ``` mkdir -p ~/catkin_ws_py3/src cd ~/catkin_ws_py3/ catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3 ``` 4. 设置Python 3的ROS环境变量 可以使用以下命令设置Python 3的ROS环境变量: ``` echo "source ~/catkin_ws_py3/devel/setup.bash" >> ~/.bashrc source ~/.bashrc ``` 5. 编写Python 3的ROS程序 现在可以使用Python 3编写ROS程序了。在Python文件的开头,需要添加以下代码: ``` #!/usr/bin/env python3 ``` 这样可以确保使用Python 3来运行程序。 6. 运行Python 3的ROS程序 可以使用以下命令运行Python 3的ROS程序: ``` rosrun package_name node_name.py ``` 其,package_name是ROS的名称,node_name.py是Python 3的ROS节点文件名。 ### 回答2: ROS是一个机器人操作系统,已经成为许多机器人和自动化领域的标准。ROS的版本很多,其ROS Melodic是针对Ubuntu 18.04操作系统的最新版本。与较老的ROS版本相比,ROS Melodic具有更大的兼容性和更多的功能。值得一提的是,ROS Melodic所使用Python版本已经从Python2转移到了Python3PythonROS最常用的编程语言之一。在ROS MelodicPython3被用作默认Python解释器。这意味着你应该使用Python3来编写ROS Melodic的程序,而不是使用Python2。使用Python3编写的ROS程序具有更好的性能和更长的生命周期,因为Python2的支持已经于2020年1月停止。 一些ROS的常用Python库也已经升级到Python3版本,例如rospy,其的一些API与Python2相比略有变化。所以,如果你的代码是用Python2编写的,若想迁移到ROS Melodic,则需要相应地更改它。 总的来说,ROS Melodic的Python3支持使得编写ROS应用程序更容易、更深入,并且更适合在现代计算机系统运行。如果你正在使用ROS Melodic,强烈建议开始使用Python3来编写你的ROS程序。 ### 回答3: ROS(机器人操作系统)是一个开源的、灵活的、分布式的机器人软件框架,用于构建机器人和其他自动化系统。它含大量工具和库,可以简化机器人应用程序的开发、测试和部署。ROS支持多种编程语言,如C ++、Python等。ROS Melodic是ROS的一个版本,它是ROS的第十个正式版本,于2018年5月23日发行。 在ROS MelodicPython 3成为了官方建议的编程语言。这意味着开发者可以使用Python 3编写ROS的节点、消息、服务和其他ROS组件,而无需改变ROS的基本运行原理。在 ROS MelodicPython 3已经默认成为ROSPython的解释器。 此外,ROS还提供了与Python 3兼容的库和工具,如rosbag、rviz、roscore等,他们可以使用Python 3脚本通过ROS API进行控制和交互。Python 3的高级功能可以更好地支持ROS的开发和自动化,例如异步编程和并发执行。 需要注意的是,在ROS MelodicPython 2仍然可以被使用,但是官方建议使用Python 3以便更好地支持未来的ROS版本。此外,一些ROS社区成员和开发者可能仍然使用Python 2来编写他们的ROS组件和应用程序。 因此,当编写ROS应用程序时,需要考虑Python 2和3之间的兼容性问题。 总结来说,ROS Melodic使用Python 3作为官方建议的编程语言,提供了与Python 3兼容的库和工具,并提供了支持异步编程和并发执行的高级功能,以更好地支持ROS的开发和自动化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值