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

    一直照教程安装,ROS2创建功能包时却报错,提示找不到命令

    已定时 已固定 已锁定 已移动
    动手学ROS2
    ros2创建功能包失败 ros2入门篇创建节点
    2
    2
    565
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 2
      254944954
      最后由 编辑

      ROS2版本:humble
      ubuntu:2022.04.5

      cjz@cjz-virtual-machine:/home/d2lros2/chapt2/chapt2_ws/src$ sudo ros2 pkg create example_cpp --build-type ament_cmake --dependencies rclcpp
      sudo: ros2:找不到命令

      cjz@cjz-virtual-machine:/home/d2lros2/chapt2/chapt2_ws/src$ ros2
      usage: ros2 [-h] [--use-python-default-buffering]
      Call ros2 <command> -h for more detailed usage. ...

      ros2 is an extensible command-line tool for ROS 2.

      options:
      -h, --help show this help message and exit
      --use-python-default-buffering
      Do not force line buffering in stdout and instead use
      the python default buffering, which might be affected
      by PYTHONUNBUFFERED/-u and depends on whatever stdout
      is interactive or not

      Commands:
      action Various action related sub-commands
      bag Various rosbag related sub-commands
      component Various component related sub-commands
      daemon Various daemon related sub-commands
      doctor Check ROS setup and other potential issues
      interface Show information about ROS interfaces
      launch Run a launch file
      lifecycle Various lifecycle related sub-commands
      multicast Various multicast related sub-commands
      node Various node related sub-commands
      param Various param related sub-commands
      pkg Various package related sub-commands
      run Run a package specific executable
      security Various security related sub-commands
      service Various service related sub-commands
      topic Various topic related sub-commands
      wtf Use wtf as alias to doctor

      Call ros2 <command> -h for more detailed usage.

      1 条回复 最后回复 回复 引用 0
      • 小伊小
        机器人小伊
        最后由 编辑

        从你提供的信息来看,ros2 命令在直接使用时是有效的,但是在使用 sudo 时却提示找不到命令。这通常是因为 ROS 2 的安装路径没有包含在 sudo 的环境变量中。这里有几个步骤可以帮助你解决这个问题:

        1. 确认 ROS 2 是否正确安装:
          首先,确保 ROS 2 已经正确安装在你的用户环境中。你可以通过直接运行 ros2 --version 来检查 ROS 2 的版本,看看是否返回了 humble。

        2. 检查环境变量:
          ROS 2 依赖于一些环境变量来正确运行,这些变量通常在安装 ROS 2 时被添加到用户的 .bashrc 或 .bash_profile 文件中。你需要确保这些变量也被 sudo 使用。你可以通过打印这些变量来检查它们:

          echo $ROS_DISTRO
          echo $PATH
          
        3. 使用 sudo -E:
          当你使用 sudo 时,可以添加 -E 选项来保留当前用户的环境变量。这样,sudo 将会使用你的 PATH 和其他环境变量,这通常包括 ROS 2 的路径。尝试使用以下命令:

          sudo -E ros2 pkg create example_cpp --build-type ament_cmake --dependencies rclcpp
          
        4. 修改 /etc/sudoers 文件(谨慎操作):
          如果你经常需要使用 sudo 来运行 ROS 2 命令,可以考虑修改 /etc/sudoers 文件来永久保留环境变量。使用 visudo 命令来安全地编辑这个文件,并添加一行:

          Defaults env_keep += "ROS_DISTRO PATH"
          

          这将保留 ROS_DISTRO 和 PATH 变量。

        5. 避免使用 sudo:
          通常,在 ROS 2 的工作空间中,你不需要使用 sudo 来创建或构建包。确保你的工作空间目录(如 chapt2_ws)的权限设置允许你的用户账户进行读写操作。

        6. 重新加载环境:
          如果你刚刚修改了 .bashrc 或 .bash_profile 文件,确保重新加载它们:

          source ~/.bashrc
          

        尝试上述步骤之一或几个,看看是否能解决你的问题。如果问题仍然存在,可能需要检查 ROS 2 的安装过程或查看是否有其他系统配置问题。


        以上为生成回答,仅供参考~

        我是小伊,已接入ChatGpt,所有回复,仅供参考~

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