鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    ros2导入conda环境里的python包出错

    已定时 已固定 已锁定 已移动
    VIP问答专区
    环境搭建 ros2 foxy
    2
    3
    409
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 1
      1041205456 年度VIP
      最后由 编辑

      环境是ubuntu20.04 ros2 foxy
      我在代码里用sys.path.append导入

      import os
      import sys
      sys.path.append("/home/sss/anaconda3/envs/yolov5-sort/lib/python3.8/site-packages/")
      import torch
      import math
      

      但用colcon build之后还是会报错

      [yolov5_tracker_node-1]     import torch
      [yolov5_tracker_node-1] ModuleNotFoundError: No module named 'torch'
      [ERROR] [yolov5_tracker_node-1]: process has died [pid 24618, exit code 1, cmd
      

      这是我的launch.py

      from launch import LaunchDescription
      from launch_ros.actions import Node
      from launch_ros.substitutions import FindPackageShare
      from launch.substitutions import PathJoinSubstitution
      
      def generate_launch_description():
          weights_path = PathJoinSubstitution([
              FindPackageShare("yolov5_vehicle_detector"),
              "weights", 
              "yolov5s.pt"
          ])
      
          return LaunchDescription([
              Node(
                  package="yolov5_vehicle_detector",
                  executable="yolov5_tracker_node",
                  name="yolov5_tracker_node",
                  output="screen",
                  env={'DISPLAY': ':0'},
                  parameters=[{
                      "weights": weights_path,
                      "device": "cpu",
                      "imgsz": [640, 640],
                      "conf_thre": 0.5,
                      "iou_thre": 0.5,
                      "camera_source": 0,
                      "visualize": True,
                  }],
              )
          ])
      
      

      这是我的setup.py

      from pathlib import Path
      from glob import glob
      from setuptools import setup, find_packages
      
      package_name = "yolov5_vehicle_detector"
      
      weight_file = Path("src") / "yolov5_vehicle_detector" / "weights" / "yolov5s.pt"
      
      data_files = [
          ("share/ament_index/resource_index/packages",
           [f"resource/{package_name}"]),
          (f"share/{package_name}", ["package.xml"]),
          (f"share/{package_name}/launch", glob("launch/*.launch.py")),
          (f"share/{package_name}/weights", [str(weight_file)]),
      ]
      
      package_data = {package_name: ["weights/yolov5s.pt"]}
      
      setup(
          name=package_name,
          version="0.0.0",
          packages=find_packages(where='src', include=[package_name, f"{package_name}.*"]),
          package_dir={'': 'src'},
          package_data=package_data,
          data_files=data_files,
          install_requires=[
              "setuptools",
              "numpy",
              "pandas",
              "Pillow",
          ],
          zip_safe=True,
          maintainer="",
          maintainer_email="",
          description="ROS2 Node for YOLOv5 Vehicle Detection and Tracking",
          license="Apache License 2.0",
          entry_points={
              'console_scripts': [
                  'yolov5_tracker_node = yolov5_vehicle_detector.yolov5_tracker_node:main',
              ],
          },
      )
      
      

      我构建的命令是

      rm -rf build/ install/ log/
      
      colcon build --packages-select yolov5_vehicle_detector_msgs yolov5_vehicle_detector --symlink-install
      
      source install/setup.bash
      
      ros2 launch yolov5_vehicle_detector tracking.launch.py
      
      1 条回复 最后回复 回复 引用 0
      • 1
        1041205456 年度VIP
        最后由 编辑

        还是在代码中添加

        sys.path.append("/home/sss/anaconda3/envs/yolov5-sort/lib/python3.8/site-packages/")
        

        然后我重新安装build之后生成的包

        cd ~/ros2_ws/src/yolov5_vehicle_detector
        pip3 install .
        

        就会提示我

        [yolov5_tracker_node-1]     import rclpy
        [yolov5_tracker_node-1] ModuleNotFoundError: No module named 'rclpy'
        [ERROR] [yolov5_tracker_node-1]: process has died [pid 8048, exit code 1, cmd '/home/errorsteved/ros2_ws/src/yolov5_vehicle_detector/install/yolov5_vehicle_detector/lib/yolov5_vehicle_detector/yolov5_tracker_node --ros-args -r __node:=yolov5_tracker_node --params-file /tmp/launch_params_zffexw5t'].
        
        小鱼小 1 条回复 最后回复 回复 引用 0
        • 小鱼小
          小鱼 技术大佬 @1041205456
          最后由 编辑

          @1041205456 source /opt/ros/foxy/stup.bash 了吗

          新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

          1 条回复 最后回复 回复 引用 0
          • 第一个帖子
            最后一个帖子
          皖ICP备16016415号-7
          Powered by NodeBB | 鱼香ROS