- 安裝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節點執行要快