- 安装ubuntu
- 安装ROS
参考赵虚左老师教程:ROS安装 - ROS 快速上手体验
-使用命令来实现
–创建工作空间:
mkdir -p ros_learn_ws/src
// ros_learn_ws为自定义空间
cd ros_learn_ws
catkin_make
–创建ROS功能包并添加依赖
cd src
catkin_create_pkg demo_01 roscpp rospy std_msgs
// demo_01为自定义功能包名
–C++实现
-在src下新建cpp文件起名为hello.cpp,内容如下:
#include "ros/ros.h"int main(int argc, char *argv[])
{//执行 ros 节点初始化ros::init(argc,argv,"hello");//创建 ros 节点句柄(非必须)ros::NodeHandle n;//控制台输出 hello worldROS_INFO("hello world!");return 0;
}
-修改CmakeLists文件,其中"Hello_c"为声明的可执行的C++ 文件
add_executable(Hello_csrc/hello.cpp
)
target_link_libraries(Hello_c${catkin_LIBRARIES}
-进入工作空间目录,执行命令:
source ./devel/setup.bash
-PS:
echo "source ~/工作空间/devel/setup.bash" >> ~/.bashrc
-执行:
cd ros_learn_ws
source ./devel/setup.bash
rosrun demo_01 Hello_c
// 无需在工作空间下,主目录下亦可。执行 demo_01功能包下的节点Hello_c
-使用VSCode 实现:替换编译命令为:ctrl+shift+B
python实现:
在ros功能包下新建scripts文件夹,然后新建文件hello2.py
#! /usr/bin/env pythonimport rospy # 1.导包if __name__ == "__main__":rospy.init_node("Hello_Vscode_p") # 2.初始化 ROS 节点rospy.loginfo("Hello VScode, 我是 Python ....") #3.日志输出 HelloWorld
修改配置文件:
catkin_install_python(PROGRAMSscripts/hello2.pyDESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)
编译后执行:source ./devel/setup.bash
运行节点:rosrun demo_01 hello2.py
-配置launch文件启动多个节点:
在demo_01下新建launch文件夹
新建start_01.launch文件,内容如下
<launch><!-- 执行python节点 --><node pkg="demo_01" type="hello2.py" name="hello_py" output="screen" /><!-- 执行C++节点 --><node pkg="demo_01" type="hello" name="hello_c" output="screen" /><node pkg="turtlesim" type="turtlesim_node" name="t1"/><node pkg="turtlesim" type="turtle_teleop_key" name="key1" />
</launch>
PS : 修改launch文件无需使用命令:source ./devel/setup.bash,以下是需要使用source ./devel/setup.bash
的场景:
- 初始化工作空间环境:当你第一次创建并编译一个 ROS 工作空间后,需要运行这个命令来设置环境变量,使得 ROS能够识别工作空间中的包和可执行文件。
- 每次打开新的终端:每次打开新的终端窗口时,都需要重新运行这个命令来确保当前终端会话的环境变量正确设置。这是因为环境变量的设置只对当前终端会话有效。
- 修改工作空间后:如果你对工作空间进行了修改(例如添加了新的包或编译了新的代码),运行 source ./devel/setup.bash可以确保这些更改被正确地反映在环境变量中。
- 在脚本中自动化环境设置:在某些自动化脚本中,你可能会包含这个命令来确保脚本运行时环境变量正确设置。
节点的执行顺序和launch文件中的定义顺序有关,通常C++节点要比python节点执行要快