ubuntu18.04 melodic ROS机器人入门|学习以及Debug记录(第一章)

我正在使用的教程:

1.3.3 HelloWorld实现B(Python) · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程

同时还有b站的配套视频:

020HelloWorld实现(python)_Chapter1-ROS概述与环境搭建_哔哩哔哩_bilibili

视频中的教程用的是Noetic搭配的是Ubuntu20.04,我的系统是ubuntu18.04,记录一些有出入的地方以及debug记录,本篇博客需要配合教程使用哦,我涵盖了所有用18.04会出现的问题,如果对你有帮助的话可以点赞留言,我也更有动力更新文章了:)


目录

Q1: 1.2.6-安装版本问题

Q2: 1.3.3-melodic版本差异以及 Invoking "cmake" failed

Q3: 1.4.2-在虚拟环境中调用ide

Q4:1.4.2-写代码的补全提示

Q5:ModuleNotFoundError: No module named 'rospkg'

总结:


Q1: 1.2.6-安装版本问题

如果是ubuntu18.04版本, 那么要使用melodic,直接看教程的1.2.6, 注意在下载ROS的时候要用这个:

sudo apt install ros-melodic-desktop-full

cn/ROS/Installation - ROS Wiki

Q2: 1.3.3-melodic版本差异以及 Invoking "cmake" failed

注意这里不需要像教程里面一样去掉注释,再更改名字,只需要保持原样就可以了,不然就会报错

## Mark executable scripts (Python etc.) for installation
## in contrast to setup.py, you can choose the destination
# catkin_install_python(PROGRAMS
#   scripts/my_python_script
#   DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )

Q3: 1.4.2-在虚拟环境中调用ide

先启动虚拟环境,再启动vscode

conda env -n ros
conda activate ros
mkdir demo01_ws/src
cd demo01_ws
code .

Q4:1.4.2-写代码的补全提示

// "cppStandard": "c++14"
"cppStandard": "c++17"

Q5:ModuleNotFoundError: No module named 'rospkg'

ModuleNotFoundError: No module named 'rospkg'icon-default.png?t=N7T8https://stackoverflow.com/questions/66554561/modulenotfounderror-no-module-named-rospkg

Traceback (most recent call last):
  File "/home/pcia1/atest/src/test-pkg/scripts/helloworld_p.py", line 4, in <module>
    import rospy
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/__init__.py", line 49, in <module>
    from .client import spin, myargv, init_node, \
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/client.py", line 52, in <module>
    import roslib
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/__init__.py", line 50, in <module>
    from roslib.launcher import load_manifest  # noqa: F401
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/launcher.py", line 42, in <module>
    import rospkg
ModuleNotFoundError: No module named 'rospkg'

There is a confusion of version of python in interpretor and ROS package:

Try to change the shebang (line 1) according to the python version your ROS distro works with.

For melodic or earlier: #!/usr/bin/env python2

For noetic or later: #!/usr/bin/env python3

所以我改成了这样:

#! /usr/bin/env python2
(ros) pcia1@pcia1-P330:~/demo01_ws$ /usr/bin/env python2
Python 2.7.17 (default, Mar  8 2023, 18:40:28) 
[GCC 7.5.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> quit()
(ros) pcia1@pcia1-P330:~/demo01_ws$ /usr/bin/env python3
Python 3.12.2 | packaged by Anaconda, Inc. | (main, Feb 27 2024, 17:35:02) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
(ros) pcia1@pcia1-P330:~/demo01_ws$ /usr/bin/env python
Python 3.12.2 | packaged by Anaconda, Inc. | (main, Feb 27 2024, 17:35:02) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

在环境中其实存在python,python2, python3, 我们要创建一个链接符号, 每次在这个虚拟环境中调用python的时候,都是在调用python2(for melodic case)

sudo ln -s /usr/bin/python2 /usr/bin/python

我们在python文件最上面写的是:

#! /usr/bin/env python
(ros) pcia1@pcia1-P330:~/demo01_ws$ rosrun demo01_pkg helloVScode_p.py
[INFO] [1713278303.985389]: this is hello from python

但是我在转天调用的时候又不能用了, 我建议melodic用户直接写python2就好了,就多一个2,少很多烦恼,而且要注意每次有修改的时候要先保存,然后再进行后面的一系列操作:)

总结:

python运行不成功真的卡好久,希望大家看到我这篇可以少走点弯路。大致了解了ROS架构以及在C++和python编写的应用。教程真的很适合初学者,一边理论一边应用,很容易上手。

  • 11
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值