创建并运行一个C++版的Hello World ROS节点 1. 创建工作空间和功能包 假设你已经创建了ROS的工作空间和功能包。如果还没有,可以参考以下命令: # 创建工作空间目录 mkdir -p ~/ros_workspace/src cd ~/ros_workspace/src # 初始化catkin工作空间 catkin_init_workspace # 创建一个新的功能包 catkin_create_pkg hello_world std_msgs roscpp 2. 编写C++源代码 进入功能包的`src`目录并创建一个新的C++源文件,例如`hello_world.cpp`: cd ~/ros_workspace/src/hello_world/src 打开hello_world.cpp gedit hello_world.cpp 将以下代码粘贴到`hello_world.cpp`文件中: #include "ros/ros.h" int main(int argc, char *argv[]) { // 执行 ros 节点初始化 ros::init(argc, argv, "hello"); // 创建 ros 节点句柄(非必须) ros::NodeHandle n; // 控制台输出 hello world ROS_INFO("hello world!"); return 0; } 保存并关闭文件。 3. 编辑 CMakeLists.txt 文件 编辑功能包根目录下的`CMakeLists.txt`文件: cd ~/ros_workspace/src/hello_world 打开CMakeLists.txt gedit CMakeLists.txt 在文件末尾添加以下内容: add_executable(hello_world_node src/hello_world.cpp) target_link_libraries(hello_world_node ${catkin_LIBRARIES}) 保存并关闭文件。 4. 编译工作空间 回到工作空间的根目录并编译: cd ~/ros_workspace catkin_make 5. 运行节点 打开一个终端并启动ROS核心【如果启动过就不用再次启动】: roscore 打开另一个终端,进入工作空间并配置环境变量: cd ~/ros_workspace source devel/setup.bash 运行你的C++节点: rosrun hello_world hello_world_node 你应该会在终端中看到输出: [ INFO] [时间戳]: hello world! 如果需要Python版就操作下面的 HelloWorld(Python版) 步骤1:进入 ROS 包并添加 scripts 目录,创建 Python 文件 cd ~/ros_workspace/src/hello_world mkdir scripts cd scripts 步骤2:编辑 Python 文件 helloworld.py gedit helloworld.py 打开 `helloworld.py` 并添加以下内容: #!/usr/bin/env python """ Python 版 HelloWorld """ import rospy if __name__ == "__main__": rospy.init_node("hello_python") rospy.loginfo("Hello World!!!!") 步骤3:为 Python 文件添加可执行权限 chmod +x helloworld.py 步骤4:编辑 `CMakeLists.txt` 文件 cd ~/ros_workspace/src/hello_world gedit CMakeLists.txt 打开 CMakeLists.txt 文件,添加以下内容: catkin_install_python(PROGRAMS scripts/helloworld.py DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} ) 确保你找到了 catkin_package() 函数后面,并在该位置添加上述代码。 步骤5:编译工作空间 回到工作空间的根目录并编译: cd ~/ros_workspace catkin_make cd ~/ros_workspace catkin_make 步骤6:运行 Python 脚本 打开另一个终端,进入工作空间并运行脚本: cd ~/ros_workspace source devel/setup.bash rosrun hello_world helloworld.py 你应该在终端中看到以下输出: [INFO] [XXXXXX]: Hello World!!!!