ROS Noetic下运行Python版Hello World报错,求正确实现方法
错误原因
- 代码语法错误:Python判断入口函数的魔法变量为前后各两个下划线的
__name__和__main__,你写的是双横线,属于基础语法错误 - 执行指令错误:ROS运行节点的指令为
rosrun,你输入的runros是错误拼写 - 脚本缺少解释器声明:你写的Python脚本没有在首行指定Python解释器,系统会默认将其识别为shell脚本执行,因此会报
import command not found、Python语法不被识别的错误 - 不符合ROS节点规范:你没有初始化ROS节点,也没有使用ROS自带的日志输出接口。
正确ROS Noetic Hello World实现步骤
1. 前置环境校验
确保你已经在ROS工作空间的src目录下创建了依赖rospy的功能包,未创建的话执行以下指令:
cd ~/你的工作空间名/src catkin_create_pkg mypackagename rospy std_msgs cd ~/你的工作空间名 catkin_make source devel/setup.bash
2. 编写节点代码
在mypackagename目录下新建scripts文件夹(不存在的话手动创建),在scripts内新建helloWorld.py,写入以下内容:
#!/usr/bin/env python3 # 指定Python3解释器,ROS Noetic默认适配Python3 import rospy if __name__ == "__main__": # 初始化ROS节点,节点名全局唯一 rospy.init_node("hello_world_test_node") # ROS日志打印,会自动带时间戳、节点名标识,比普通print更符合ROS规范 rospy.loginfo("Hello World")
3. 配置权限与编译
- 给Python脚本添加可执行权限:
chmod +x ~/你的工作空间名/src/mypackagename/scripts/helloWorld.py - 打开
mypackagename下的CMakeLists.txt,找到catkin_install_python配置段,取消注释后修改为:
catkin_install_python(PROGRAMS scripts/helloWorld.py DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} )
- 回到工作空间根目录重新编译:
cd ~/你的工作空间名 catkin_make source devel/setup.bash
4. 运行测试
- 第一个终端启动ROS核心:
roscore - 第二个终端执行节点运行指令:
rosrun mypackagename helloWorld.py
运行后终端会输出带[INFO]标识的Hello World日志,即为运行成功。
内容的提问来源于stack exchange,提问作者Aguilo
相关产品推荐
相关产品推荐

