ROS:$ rosmsg show beginner_tutorials/Num运行出现错误

本文介绍了一种在ROS环境中遇到的无法找到自定义消息类型的问题及其解决方案。通过正确的设置工作空间并更新环境变量,可以成功加载并显示自定义的消息内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

按照http://wiki.ros.org/ROS/Tutorials/CreatingMsgAndSrv教程在进行如下操作时出现错误,

操作如下:

$ rosmsg show beginner_tutorials/Num

错误如下:

Unable to load msg [beginner_tutorials/Num]: Cannot locate message [Num]: unknown package [beginner_tutorials] on search path [{'rosconsole': ['/opt/ros/kinetic/share/rosconsole/msg'], 'catkin': ['/opt/ros/kinetic/share/catkin/msg'], 'qt_dotgraph': ['/opt/ros/kinetic/share/qt_dotgraph/msg'], 'image_view': ['/opt/ros/kinetic/share/image_view/msg'], 'urdf': ['/opt/ros/kinetic/share/urdf/msg'], 'rosgraph': ['/opt/ros/kinetic/share/rosgraph/msg'], 'resource_retriever': ['/opt/ros/kinetic/share/resource_retriever/msg'], 'nodelet_topic_tools': ['/opt/ros/kinetic/share/nodelet_topic_tools/msg'], 'rqt_graph': ['/opt/ros/kinetic/share/rqt_graph/msg'], 'nodelet_tutorial_math': ['/opt/ros/kinetic/share/nodelet_tutorial_math/msg'], 'qt_gui': ['/opt/ros/kinetic/share/qt_gui/msg'], 'filters': ['/opt/ros/kinetic/share/filters/msg'], 'smclib': ['/opt/ros/kinetic/share/smclib/msg'], 'roslib': ['/opt/ros/kinetic/share/roslib/msg'], 'geneus': ['/opt/ros/kinetic/share/geneus/msg'], 'roscpp_serialization': ['/opt/ros/kinetic/share/roscpp_serialization/msg'], 'diagnostic_msgs': ['/opt/ros/kinetic/share/diagnostic_msgs/msg'], 'rosbuild': ['/opt/ros/kinetic/share/rosbuild/msg'], 'rosclean': ['/opt/ros/kinetic/share/rosclean/msg'], 'tf': ['/opt/ros/kinetic/share/tf/msg'], 'rqt_publisher': ['/opt/ros/kinetic/share/rqt_publisher/msg'], 'roslang': ['/opt/ros/kinetic/share/roslang/msg'], 'geometric_shapes': ['/opt/ros/kinetic/share/geometric_shapes/msg'], 'smach_ros': ['/opt/ros/kinetic/share/smach_ros/msg'], 'genlisp': ['/opt/ros/kinetic/share/genlisp/msg'], 'shape_msgs': ['/opt/ros/kinetic/share/shape_msgs/msg'], 'trajectory_msgs': ['/opt/ros/kinetic/share/trajectory_msgs/msg'], 'diagnostic_aggregator': ['/opt/ros/kinetic/share/diagnostic_aggregator/msg'], 'robot_state_publisher': ['/opt/ros/kinetic/share/robot_state_publisher/msg'], 'visualization_msgs': ['/opt/ros/kinetic/share/visualization_msgs/msg'], 'rqt_py_console': ['/opt/ros/kinetic/share/rqt_py_console/msg'], 'rqt_topic': ['/opt/ros/kinetic/share/rqt_topic/msg'], 'opencv3': ['/opt/ros/kinetic/share/opencv3/msg'], 'rqt_action': ['/opt/ros/kinetic/share/rqt_action/msg'], 'rqt_top': ['/opt/ros/kinetic/share/rqt_top/msg'], 'rqt_rviz': ['/opt/ros/kinetic/share/rqt_rviz/msg'], 'rosgraph_msgs': ['/opt/ros/kinetic/share/rosgraph_msgs/msg'], 'rosboost_cfg': ['/opt/ros/kinetic/share/rosboost_cfg/msg'], 'genmsg': ['/opt/ros/kinetic/share/genmsg/msg'], 'xacro': ['/opt/ros/kinetic/share/xacro/msg'], 'turtle_tf2': ['/opt/ros/kinetic/share/turtle_tf2/msg'], 'rqt_robot_dashboard': ['/opt/ros/kinetic/share/rqt_robot_dashboard/msg'], 'rqt_service_caller': ['/opt/ros/kinetic/share/rqt_service_caller/msg'], 'xmlrpcpp': ['/opt/ros/kinetic/share/xmlrpcpp/msg'], 'gl_dependency': ['/opt/ros/kinetic/share/gl_dependency/msg'], 'pluginlib': ['/opt/ros/kinetic/share/pluginlib/msg'], 'rqt_msg': ['/opt/ros/kinetic/share/rqt_msg/msg'], 'rosmaster': ['/opt/ros/kinetic/share/rosmaster/msg'], 'rosnode': ['/opt/ros/kinetic/share/rosnode/msg'], 'rqt_pose_view': ['/opt/ros/kinetic/share/rqt_pose_view/msg'], 'bond': ['/opt/ros/kinetic/share/bond/msg'], 'self_test': ['/opt/ros/kinetic/share/self_test/msg'], 'pr2_description': ['/opt/ros/kinetic/share/pr2_description/msg'], 'rospack': ['/opt/ros/kinetic/share/rospack/msg'], 'actionlib_msgs': ['/opt/ros/kinetic/share/actionlib_msgs/msg'], 'image_rotate': ['/opt/ros/kinetic/share/image_rotate/msg'], 'rqt_image_view': ['/opt/ros/kinetic/share/rqt_image_view/msg'], 'roslisp': ['/opt/ros/kinetic/share/roslisp/msg'], 'rqt_console': ['/opt/ros/kinetic/share/rqt_console/msg'], 'joint_state_publisher': ['/opt/ros/kinetic/share/joint_state_publisher/msg'], 'rviz_plugin_tutorials': ['/opt/ros/kinetic/share/rviz_plugin_tutorials/msg'], 'tf2_msgs': ['/opt/ros/kinetic/share/tf2_msgs/msg'], 'python_qt_binding': ['/opt/ros/kinetic/share/python_qt_binding/msg'], 'laser_geometry': ['/opt/ros/kinetic/share/laser_geometry/msg'], 'rviz': ['/opt/ros/kinetic/share/rviz/msg'], 'gencpp': ['/opt/ros/kinetic/share/gencpp/msg'], 'rqt_gui_cpp': ['/opt/ros/kinetic/share/rqt_gui_cpp/msg'], 'rqt_bag': ['/opt/ros/kinetic/share/rqt_bag/msg'], 'rqt_gui': ['/opt/ros/kinetic/share/rqt_gui/msg'], 'qt_gui_py_common': ['/opt/ros/kinetic/share/qt_gui_py_common/msg'], 'eigen_conversions': ['/opt/ros/kinetic/share/eigen_conversions/msg'], 'roscpp_traits': ['/opt/ros/kinetic/share/roscpp_traits/msg'], 'rosout': ['/opt/ros/kinetic/share/rosout/msg'], 'diagnostic_common_diagnostics': ['/opt/ros/kinetic/share/diagnostic_common_diagnostics/msg'], 'rostopic': ['/opt/ros/kinetic/share/rostopic/msg'], 'smach_msgs': ['/opt/ros/kinetic/share/smach_msgs/msg'], 'message_generation': ['/opt/ros/kinetic/share/message_generation/msg'], 'camera_calibration': ['/opt/ros/kinetic/share/camera_calibration/msg'], 'qwt_dependency': ['/opt/ros/kinetic/share/qwt_dependency/msg'], 'polled_camera': ['/opt/ros/kinetic/share/polled_camera/msg'], 'gazebo_msgs': ['/opt/ros/kinetic/share/gazebo_msgs/msg'], 'rostime': ['/opt/ros/kinetic/share/rostime/msg'], 'rqt_nav_view': ['/opt/ros/kinetic/share/rqt_nav_view/msg'], 'kdl_conversions': ['/opt/ros/kinetic/share/kdl_conversions/msg'], 'urdf_tutorial': ['/opt/ros/kinetic/share/urdf_tutorial/msg'], 'roslint': ['/opt/ros/kinetic/share/roslint/msg'], 'rosservice': ['/opt/ros/kinetic/share/rosservice/msg'], 'actionlib_tutorials': ['/opt/ros/kinetic/share/actionlib_tutorials/msg'], 'rosunit': ['/opt/ros/kinetic/share/rosunit/msg'], 'turtle_tf': ['/opt/ros/kinetic/share/turtle_tf/msg'], 'roscpp_tutorials': ['/opt/ros/kinetic/share/roscpp_tutorials/msg'], 'turtle_actionlib': ['/opt/ros/kinetic/share/turtle_actionlib/msg'], 'python_orocos_kdl': ['/opt/ros/kinetic/share/python_orocos_kdl/msg'], 'stage': ['/opt/ros/kinetic/share/stage/msg'], 'tf2_geometry_msgs': ['/opt/ros/kinetic/share/tf2_geometry_msgs/msg'], 'visualization_marker_tutorials': ['/opt/ros/kinetic/share/visualization_marker_tutorials/msg'], 'bondcpp': ['/opt/ros/kinetic/share/bondcpp/msg'], 'rosconsole_bridge': ['/opt/ros/kinetic/share/rosconsole_bridge/msg'], 'pluginlib_tutorials': ['/opt/ros/kinetic/share/pluginlib_tutorials/msg'], 'camera_info_manager': ['/opt/ros/kinetic/share/camera_info_manager/msg'], 'camera_calibration_parsers': ['/opt/ros/kinetic/share/camera_calibration_parsers/msg'], 'roslz4': ['/opt/ros/kinetic/share/roslz4/msg'], 'rqt_bag_plugins': ['/opt/ros/kinetic/share/rqt_bag_plugins/msg'], 'rosmsg': ['/opt/ros/kinetic/share/rosmsg/msg'], 'rospy': ['/opt/ros/kinetic/share/rospy/msg'], 'turtlesim': ['/opt/ros/kinetic/share/turtlesim/msg'], 'rqt_robot_monitor': ['/opt/ros/kinetic/share/rqt_robot_monitor/msg'], 'rosparam': ['/opt/ros/kinetic/share/rosparam/msg'], 'diagnostic_analysis': ['/opt/ros/kinetic/share/diagnostic_analysis/msg'], 'stereo_msgs': ['/opt/ros/kinetic/share/stereo_msgs/msg'], 'pcl_msgs': ['/opt/ros/kinetic/share/pcl_msgs/msg'], 'interactive_markers': ['/opt/ros/kinetic/share/interactive_markers/msg'], 'diagnostic_updater': ['/opt/ros/kinetic/share/diagnostic_updater/msg'], 'laser_assembler': ['/opt/ros/kinetic/share/laser_assembler/msg'], 'pcl_conversions': ['/opt/ros/kinetic/share/pcl_conversions/msg'], 'rviz_python_tutorial': ['/opt/ros/kinetic/share/rviz_python_tutorial/msg'], 'tf2': ['/opt/ros/kinetic/share/tf2/msg'], 'rqt_runtime_monitor': ['/opt/ros/kinetic/share/rqt_runtime_monitor/msg'], 'rosbash': ['/opt/ros/kinetic/share/rosbash/msg'], 'rqt_reconfigure': ['/opt/ros/kinetic/share/rqt_reconfigure/msg'], 'rqt_dep': ['/opt/ros/kinetic/share/rqt_dep/msg'], 'rqt_plot': ['/opt/ros/kinetic/share/rqt_plot/msg'], 'topic_tools': ['/opt/ros/kinetic/share/topic_tools/msg'], 'rostest': ['/opt/ros/kinetic/share/rostest/msg'], 'control_msgs': ['/opt/ros/kinetic/share/control_msgs/msg'], 'tf_conversions': ['/opt/ros/kinetic/share/tf_conversions/msg'], 'interactive_marker_tutorials': ['/opt/ros/kinetic/share/interactive_marker_tutorials/msg'], 'cpp_common': ['/opt/ros/kinetic/share/cpp_common/msg'], 'nodelet': ['/opt/ros/kinetic/share/nodelet/msg'], 'stage_ros': ['/opt/ros/kinetic/share/stage_ros/msg'], 'rqt_robot_steering': ['/opt/ros/kinetic/share/rqt_robot_steering/msg'], 'dynamic_reconfigure': ['/opt/ros/kinetic/share/dynamic_reconfigure/msg'], 'genpy': ['/opt/ros/kinetic/share/genpy/msg'], 'compressed_image_transport': ['/opt/ros/kinetic/share/compressed_image_transport/msg'], 'rqt_shell': ['/opt/ros/kinetic/share/rqt_shell/msg'], 'std_msgs': ['/opt/ros/kinetic/share/std_msgs/msg'], 'roscreate': ['/opt/ros/kinetic/share/roscreate/msg'], 'image_transport': ['/opt/ros/kinetic/share/image_transport/msg'], 'rqt_launch': ['/opt/ros/kinetic/share/rqt_launch/msg'], 'angles': ['/opt/ros/kinetic/share/angles/msg'], 'cv_bridge': ['/opt/ros/kinetic/share/cv_bridge/msg'], 'gazebo_ros': ['/opt/ros/kinetic/share/gazebo_ros/msg'], 'rosbag_storage': ['/opt/ros/kinetic/share/rosbag_storage/msg'], 'roswtf': ['/opt/ros/kinetic/share/roswtf/msg'], 'std_srvs': ['/opt/ros/kinetic/share/std_srvs/msg'], 'rqt_logger_level': ['/opt/ros/kinetic/share/rqt_logger_level/msg'], 'cmake_modules': ['/opt/ros/kinetic/share/cmake_modules/msg'], 'mk': ['/opt/ros/kinetic/share/mk/msg'], 'octomap': ['/opt/ros/kinetic/share/octomap/msg'], 'stereo_image_proc': ['/opt/ros/kinetic/share/stereo_image_proc/msg'], 'bondpy': ['/opt/ros/kinetic/share/bondpy/msg'], 'tf2_kdl': ['/opt/ros/kinetic/share/tf2_kdl/msg'], 'rqt_web': ['/opt/ros/kinetic/share/rqt_web/msg'], 'class_loader': ['/opt/ros/kinetic/share/class_loader/msg'], 'tf2_py': ['/opt/ros/kinetic/share/tf2_py/msg'], 'collada_urdf': ['/opt/ros/kinetic/share/collada_urdf/msg'], 'pcl_ros': ['/opt/ros/kinetic/share/pcl_ros/msg'], 'nav_msgs': ['/opt/ros/kinetic/share/nav_msgs/msg'], 'rosmake': ['/opt/ros/kinetic/share/rosmake/msg'], 'image_proc': ['/opt/ros/kinetic/share/image_proc/msg'], 'roscpp': ['/opt/ros/kinetic/share/roscpp/msg'], 'rqt_moveit': ['/opt/ros/kinetic/share/rqt_moveit/msg'], 'theora_image_transport': ['/opt/ros/kinetic/share/theora_image_transport/msg'], 'rqt_py_common': ['/opt/ros/kinetic/share/rqt_py_common/msg'], 'depth_image_proc': ['/opt/ros/kinetic/share/depth_image_proc/msg'], 'actionlib': ['/opt/ros/kinetic/share/actionlib/msg'], 'laser_filters': ['/opt/ros/kinetic/share/laser_filters/msg'], 'qt_gui_cpp': ['/opt/ros/kinetic/share/qt_gui_cpp/msg'], 'eigen_stl_containers': ['/opt/ros/kinetic/share/eigen_stl_containers/msg'], 'tf2_ros': ['/opt/ros/kinetic/share/tf2_ros/msg'], 'librviz_tutorial': ['/opt/ros/kinetic/share/librviz_tutorial/msg'], 'image_geometry': ['/opt/ros/kinetic/share/image_geometry/msg'], 'message_runtime': ['/opt/ros/kinetic/share/message_runtime/msg'], 'message_filters': ['/opt/ros/kinetic/share/message_filters/msg'], 'sensor_msgs': ['/opt/ros/kinetic/share/sensor_msgs/msg'], 'rospy_tutorials': ['/opt/ros/kinetic/share/rospy_tutorials/msg'], 'random_numbers': ['/opt/ros/kinetic/share/random_numbers/msg'], 'gazebo_plugins': ['/opt/ros/kinetic/share/gazebo_plugins/msg'], 'rqt_srv': ['/opt/ros/kinetic/share/rqt_srv/msg'], 'rqt_gui_py': ['/opt/ros/kinetic/share/rqt_gui_py/msg'], 'map_msgs': ['/opt/ros/kinetic/share/map_msgs/msg'], 'roslaunch': ['/opt/ros/kinetic/share/roslaunch/msg'], 'compressed_depth_image_transport': ['/opt/ros/kinetic/share/compressed_depth_image_transport/msg'], 'rqt_tf_tree': ['/opt/ros/kinetic/share/rqt_tf_tree/msg'], 'collada_parser': ['/opt/ros/kinetic/share/collada_parser/msg'], 'smach': ['/opt/ros/kinetic/share/smach/msg'], 'tf2_eigen': ['/opt/ros/kinetic/share/tf2_eigen/msg'], 'kdl_parser': ['/opt/ros/kinetic/share/kdl_parser/msg'], 'gennodejs': ['/opt/ros/kinetic/share/gennodejs/msg'], 'media_export': ['/opt/ros/kinetic/share/media_export/msg'], 'geometry_msgs': ['/opt/ros/kinetic/share/geometry_msgs/msg'], 'urdf_parser_plugin': ['/opt/ros/kinetic/share/urdf_parser_plugin/msg'], 'orocos_kdl': ['/opt/ros/kinetic/share/orocos_kdl/msg'], 'rosbag': ['/opt/ros/kinetic/share/rosbag/msg'], 'rosbag_migration_rule': ['/opt/ros/kinetic/share/rosbag_migration_rule/msg']}]

解决方案如下:

第一步:

先source一下 ~/工作空间/devel/setup.bash,在我的电脑中的操作如下:

source /home/ding/catkin_ws/devel/setup.bash

作用:

source   /devel/setup.bash的作用有明白的小伙伴可以解释一下~

第二步:

rosmsg show beginner_tutorials/Num

此刻就可以得到满意的内容了:

int64 num


<think>我们正在解决ROS中因缺少msg目录或__init__.py文件导致的'rosmsgshowbeginner_hiwonder/scripts/msg/person'无效名称错误。实际上,这个命令中包含了错误的路径,因为rosmsgshow期望的是包名和消息类型名,而不是文件路径。正确的应该是'beginner_hiwonder/person',而不是包含'scripts/msg'的路径。根据之前的讨论,我们已经创建了正确的目录结构和配置文件。现在,我们将详细说明如何创建msg目录和__init__.py文件,以及如何正确配置消息文件,确保消息能够被正确生成和使用。步骤概括:1.创建正确的目录结构(msg目录在包根目录下,scripts目录下要有__init__.py)2.在msg目录中创建消息定义文件(例如person.msg)3.修改package.xml和CMakeLists.txt以配置消息生成4.编译包并验证消息生成5.在Python节点中导入消息具体步骤:1.**创建必要的目录和文件**-进入ROS包的根目录(假设包名为beginner_hiwonder,位于catkin_ws/src下):```bashcd~/catkin_ws/src/beginner_hiwonder```-创建msg目录(在包根目录下):```bashmkdirmsg```-在scripts目录下创建__init__.py文件(如果scripts目录不存在,先创建):```bashmkdir-pscripts#如果不存在则创建touchscripts/__init__.py#创建空文件,使scripts成为一个Python包```2.**创建消息定义文件**在msg目录下创建person.msg文件,并定义消息结构:```txtstringnameint32agefloat64height```3.**修改配置文件**-**package.xml**:确保添加了message_generation和message_runtime的依赖。```xml<build_depend>message_generation</build_depend><exec_depend>message_runtime</exec_depend>```-**CMakeLists.txt**:需要做以下修改:-在find_package中添加message_generation。-添加消息定义文件。-调用generate_messages生成消息。-确保设置运行时的依赖(在catkin_package中添加message_runtime)。具体的CMakeLists.txt修改示例:```cmake#添加message_generationfind_package(catkinREQUIREDCOMPONENTSrospystd_msgsmessage_generation#添加这一行)#添加消息文件add_message_files(FILESperson.msg)#生成消息generate_messages(DEPENDENCIESstd_msgs)#在catkin_package中设置运行依赖catkin_package(CATKIN_DEPENDSmessage_runtimerospystd_msgs)#安装Python脚本(如果有Python节点)catkin_install_python(PROGRAMSscripts/your_node.py#替换成你的节点文件名DESTINATION${CATKIN_PACKAGE_BIN_DESTINATION})```4.**编译并验证**-编译整个工作空间:```bashcd~/catkin_wscatkin_make```-在编译完成后,运行以下命令使配置生效:```bashsourcedevel/setup.bash```-验证消息是否生成成功:```bashrosmsgshowbeginner_hiwonder/person```如果成功,会输出消息定义:```stringnameint32agefloat64height```5.**在Python节点中使用自定义消息**在scripts目录下的Python节点中,可以这样导入:```python#!/usr/bin/envpythonfrombeginner_hiwonder.msgimportperson```6.**注意事项**-确保在运行节点之前已经source了setup.bash文件(或者已经将其添加到.bashrc中)。-如果在编译后仍然无法导入消息,尝试删除build和devel目录,然后重新编译。7.**解决错误**用户之前运行了`rosmsgshowbeginner_hiwonder/scripts/msg/person`,这会导致“invalidname”错误,因为rosmsgshow命令需要的是`<package>/<messagetype>`,而不是文件路径。正确的命令是`rosmsgshowbeginner_hiwonder/person`。通过以上步骤,应该能够解决自定义消息的生成和使用问题。§§相关问题§§1.如何在ROS中创建自定义服务(srv)?2.ROS中消息(msg)和服务(srv)的主要区别是什么?3.如何解决ROS消息编译时的依赖问题?4.在ROS节点中如何发布和订阅自定义消息?</think> ### 📦 解决 ROS 消息 "invalid name" 错误的完整指南 当出现 `rosmsg show invalid name beginner_hiwonder/scripts/msg/person` 错误时,通常是因为 ROS 无法正确识别您的消息包结构。以下是详细解决步骤: #### ✅ 1. **创建正确的目录结构** ```bash # 进入ROS包目录 cd ~/catkin_ws/src/beginner_hiwonder # 创建标准消息目录(必须在包根目录) mkdir -p msg # 创建Python初始化文件(关键) touch msg/__init__.py # 创建scripts目录(存放节点) mkdir -p scripts touch scripts/__init__.py ``` > **正确结构**: > ``` > beginner_hiwonder/ > ├── CMakeLists.txt > ├── package.xml > ├── scripts/ > │ ├── __init__.py > │ └── your_node.py > └── msg/ > ├── __init__.py # 关键! > └── person.msg # 消息定义 > ``` #### ✅ 2. **创建消息文件** 在 `msg/person.msg` 中添加消息定义: ```text # 自定义消息结构 string name int32 age float32 height ``` #### ✅ 3. **配置CMakeLists.txt** 修改 `CMakeLists.txt`: ```cmake find_package(catkin REQUIRED COMPONENTS rospy std_msgs message_generation # 关键依赖 ) # 添加消息文件 add_message_files( FILES person.msg ) # 生成消息 generate_messages( DEPENDENCIES std_msgs ) # 设置Python安装路径 catkin_python_setup() ``` #### ✅ 4. **配置package.xml** 添加消息依赖: ```xml <build_depend>message_generation</build_depend> <exec_depend>message_runtime</exec_depend> ``` #### ✅ 5. **编译并验证** ```bash # 完整重新编译 cd ~/catkin_ws rm -rf build devel catkin_make # 使新配置生效 source devel/setup.bash # 验证消息(使用正确格式) rosmsg show beginner_hiwonder/person ``` > 预期输出: > ``` > string name > int32 age > float32 height > ``` #### ⚠️ 错误解决:`invalid name` 常见原因 1. **路径错误** 在 `scripts/msg/person` 这种嵌套路径无效,ROS 要求消息必须在包根目录的 `msg/` 下 2. **缺少 __init__.py** 必须确保 `msg/` 和 `scripts/` 目录下都有 `__init__.py` 文件 3. **未重新编译** 修改消息定义后必须执行: ```bash catkin_make --only-pkg-with-deps beginner_hiwonder ``` #### 💻 Python节点中引用消息 在 `scripts/your_node.py` 中正确导入: ```python #!/usr/bin/env python3 from beginner_hiwonder.msg import person # 标准导入方式 # 创建消息实例 msg = person() msg.name = "Alice" msg.age = 30 msg.height = 1.65 ``` #### 🛠️ 永久环境配置(避免重复source) ```bash # 添加到 ~/.bashrc echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc echo "export ROS_PACKAGE_PATH=\$ROS_PACKAGE_PATH:~/catkin_ws/src" >> ~/.bashrc ``` > 验证成功后,您的自定义消息就能在ROS系统中正常使用了[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值