小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
一直照教程安装,ROS2创建功能包时却报错,提示找不到命令
-
ROS2版本:humble
ubuntu:2022.04.5cjz@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]
Callros2 <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 notCommands:
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 Usewtf
as alias todoctor
Call
ros2 <command> -h
for more detailed usage. -
从你提供的信息来看,
ros2
命令在直接使用时是有效的,但是在使用sudo
时却提示找不到命令。这通常是因为 ROS 2 的安装路径没有包含在sudo
的环境变量中。这里有几个步骤可以帮助你解决这个问题:-
确认 ROS 2 是否正确安装:
首先,确保 ROS 2 已经正确安装在你的用户环境中。你可以通过直接运行ros2 --version
来检查 ROS 2 的版本,看看是否返回了humble
。 -
检查环境变量:
ROS 2 依赖于一些环境变量来正确运行,这些变量通常在安装 ROS 2 时被添加到用户的.bashrc
或.bash_profile
文件中。你需要确保这些变量也被sudo
使用。你可以通过打印这些变量来检查它们:echo $ROS_DISTRO echo $PATH
-
使用
sudo -E
:
当你使用sudo
时,可以添加-E
选项来保留当前用户的环境变量。这样,sudo
将会使用你的 PATH 和其他环境变量,这通常包括 ROS 2 的路径。尝试使用以下命令:sudo -E ros2 pkg create example_cpp --build-type ament_cmake --dependencies rclcpp
-
修改
/etc/sudoers
文件(谨慎操作):
如果你经常需要使用sudo
来运行 ROS 2 命令,可以考虑修改/etc/sudoers
文件来永久保留环境变量。使用visudo
命令来安全地编辑这个文件,并添加一行:Defaults env_keep += "ROS_DISTRO PATH"
这将保留
ROS_DISTRO
和PATH
变量。 -
避免使用
sudo
:
通常,在 ROS 2 的工作空间中,你不需要使用sudo
来创建或构建包。确保你的工作空间目录(如chapt2_ws
)的权限设置允许你的用户账户进行读写操作。 -
重新加载环境:
如果你刚刚修改了.bashrc
或.bash_profile
文件,确保重新加载它们:source ~/.bashrc
尝试上述步骤之一或几个,看看是否能解决你的问题。如果问题仍然存在,可能需要检查 ROS 2 的安装过程或查看是否有其他系统配置问题。
以上为生成回答,仅供参考~
-