ROS2安装问题记录

0. import rclpy出错

安装ros2官网上的教程安装完,发现colcon build后可以通过ros2 run 运行,但是无法通过python直接运行.py文件,原因是在 import rclpy的情况下会报以下错误

The C extension '/opt/ros/humble/lib/python3.10/site-packages/_rclpy_pybind11.cpython-311-x86_64-linux-gnu.so' isn't present on the system. 

然后就对rclpy进行了源码的安装,遇到了一些问题,在此记录。

解决方法:

目前看来因为安装了conda环境,conda的python版本和rclpy的python版本不一致导致;

rclpy 使用humble对应 python3.10 

1. rclpy 源码安装

——————————————————————————————————————————

按照github上的代码运行,发现在colcon build 过程中报了一堆类似以下的错误

fatal error: rcl/service_introspection.h: 没有那个文件或目录

/usr/include/pybind11/detail/type_caster_base.h:482:26: error: invalid use of incomplete type ‘PyFrameObject’ {aka ‘struct _frame’}
 

解决方法:

rclpy版本 与 ubuntu版本 和python 版本强相关,我的电脑是ubuntu22.04, 对应的ros2版本(即rclpy版本)是humble,需要将github上clone下来的代码切换到humble分支,然后再按照README重新运行

cd rclpy
git checkout -b humble   remotes/origin/humble

——————————————————————————————————————————

/usr/include/pybind11/detail/common.h:215:10: fatal error: Python.h: 没有那个文件或目录

解决方法:
sudo apt install python3-sphinx python3-pip
sudo -H pip3 install sphinx_autodoc_typehints

___________________________________________________________________________

ModuleNotFoundError: No module named 'catkin_pkg'

解决方法:
pip install catkin_pkg

————————————————— 

2. rclpy 运行

import rclpy的时候

/home/zjlab/anaconda3/ros2/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/_rclpy_pybind11.cpython-310-x86_64-linux-gnu.so)

解决方法:

ubuntu 22.04 自带的gcc 版本是11.4.0, 这里需要安装gcc 12版本

如何是conda环境,运行

conda install -c conda-forge gcc=12.1.0

或者如果是直接是系统的python的话,可能可以升级g++版本

sudo apt-get install gcc-12 g++-12 #安装

ls /usr/bin/gcc*  
#查看gcc版本

'''
切换优先级
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 100
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 80
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 80


sudo update-alternatives --config gcc
sudo update-alternatives --config g++
'''

然后建立软链接,从系统libstdc++.so.6 链接到conda环境下

ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /home/zjlab/anaconda3/envs/ros2/bin/../lib/libstdc++.so.6

 

3. 自定义msg和srv后的编译问题 

按照官网

先后报了以下的错误

ModuleNotFoundError: No module named 'em'
AttributeError: module 'em' has no attribute 'BUFFERED_OPT'
 

解决方法:
pip install empy==3.3.4

 安装完后把install/和build/ 文件夹删除重新编译。

——————————————————————————————————————————

ModuleNotFoundError: No module named 'lark'

解决方法:
pip install lark

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用\[1\]和引用\[2\]的内容,你可以按照以下步骤在Ubuntu 22.04上安装PCL库和ROS2: 1. 首先,更新apt软件包列表并安装PCL库和pcl-tools: ``` sudo apt-get update sudo apt-get install libpcl-dev pcl-tools ``` 2. 接下来,安装ROS2的依赖项。运行以下命令安装编译依赖项: ``` sudo apt-get install python3-rosdep python3-rosinstall-generator python3-vcstools python3-vcstool build-essential sudo pip3 install -U rosdep rosinstall_generator vcstool sudo pip3 install --upgrade setuptools ``` 3. 然后,使用rosdep初始化ROS2的工作空间: ``` sudo rosdep init rosdep update ``` 4. 拉取ROS Noetic的源码并创建工作空间: ``` rosinstall_generator desktop --rosdistro noetic --deps --tar > noetic-desktop.rosinstall mkdir ./src vcs import --input noetic-desktop.rosinstall ./src ``` 5. 最后,编译ROS2工作空间: ``` cd <path_to_your_workspace> colcon build ``` 这样,你就可以在Ubuntu 22.04上成功安装PCL库和ROS2了。希望对你有帮助! #### 引用[.reference_title] - *1* [Ubuntu 22.04.2 LTS点云PCL库的安装](https://blog.csdn.net/Eaglewzw/article/details/129985506)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [EGO-PLANNER安装问题记录以及如何在Ubuntu22.04LTS上安装ROS noetic](https://blog.csdn.net/reyssalee/article/details/129969060)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值