第九課 創建工作空間課功能包
工作空間
src:代碼空間。xml文件
build:編譯空間,基本不用關心
devel:開發空間,
install:安裝空間
-
創建工作空間
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace -
編譯工作空間
cd ~/catkin_ws/
catkin_make (產生devel 和build文件夾)
catkin_make install (產生install文件夾) -
設置環境變量
source devel/setup.bash -
檢查環境變量
echo $ROS_PACKAGE_PATH
創建功能包
catkin_creat_pkg (功能包名) 【依賴1】【依賴2】【依賴3】
-
創建功能包
cd ~/catkin_ws/src
catkin_create_pkg test_pkg std_msgs rospy roscpp -
編譯功能包
cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash
同一個工作空間下,不允許有同名功能包,不同工作空間下可以有。
第十課 發佈者Publisher的編程實現
創建功能包
cd ~/catkin_ws/src
catkin_create_pkg learning_topic roscpp std_msgs geometry_msgs turtlesim
c++實現
1.編寫程序
參考資料裏的velocity_publisher.cpp文件。
2.在CMakelist.txt文件末尾加上
add_executable(velocity_publisher src/velocity_publisher.cpp)
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})
3.編譯並運行
cd ~/catkin_ws
catkin_make
source devel/setup.bash
新開終端roscore
新開終端rosrun turtlesim turtlesim_node
新開終端rosrun learning_topic velocity_publisher
python實現
看課件代碼
第十一課 訂閱者Subscriber的編程實現
類似Publisher的過程
C++實現
1.編寫程序
回調函數很重要,類似於中斷,當有信息來了,先進入回調函數處理。所以回調函數處理數據要儘量簡潔,否則後續數據進不來。
2.在CMakelist.txt文件中加上
add_executable(pose_subscriber src/pose_subscriber.cpp)
target_link_libraries(pose_subscriber ${catkin_LIBRARIES})
3.編譯並運行
cd ~/catkin_ws
catkin_make
source devel/setup.bash
新開終端roscore
新開終端rosrun turtlesim turtlesim_node
新開終端rosrun learning_topic pose_subscriber
新開終端rosrun turtlesim turtle_teloop_key
就可以看到位置信息不斷在變了
python實現
看課件代碼
第十二課 話題消息的定義與使用
如何自定義話題消息
1. 定義msg文件
在工作空間的learning_topic功能包中創建msg文件夾,在其中創建person.msg文件。
2.在package.xml中添加功能包依賴
<build depend>message generation</build depend>
<exec_depend>message_runtime</exec_depend>
3.在CMakeLists.txt添加編譯選項
有三個地方要變
message_generation
add_message_files(FILES Person.msg)
generate_messages(DEPENDENCIES std_msgs)
4.編譯生成語言相關文件
回到工作空間目錄下,catkin_make
5.創建發佈者、訂閱者
在learning_topic/src下創建發佈者和訂閱者,程序在例程裏。
6.配置Cmakelist.txt文件
7.編譯
回到工作空間目錄下,catkin_make