Linux下一直使用QT進行開發,支持cmake使得很容易導入其他工程。學習ROS過程中,很多函數名稱難記,使用QT不僅可以提示補全,還為了以后開發GUI方便吧。
1、安裝ros_qtc_plugin
首先安裝Qt,Qt我安裝的是5.5.1版本,直接下載run文件安裝即可。同樣,ros_qtc_plugin我也是直接下載run運行安裝。安裝完成后在Terminal可以見到有qtcreator-ros直接運行即可。
2、ROS工程建立
2.1、新建工作區,點擊New Project 選擇Other Project -> ROS Workspace:

2.2、填寫工作區名稱,選擇路徑。選擇路徑時建議新建同名文件夾,工作區建立時沒有自動新建文件夾:


2.3、新建package:左側工程欄右擊src,點擊Add New,選擇ROS -> Package

2.4、新建包的名字為hellowrld,配置包屬性,一般需要依賴roscpp,這里我們寫一對簡單的發布、訂閱程序,所以同時依賴roscpp message_generation std_msgs rospy,故配置如下:

2.5、現在我們來建立發布者節點文件,右鍵點擊src -> Add New ->ROS ->Basic Publisher Node 命名為pub1.cpp
2.6、建立訂閱者節點文件,右鍵點擊src -> Add New ->ROS ->Basic Subscriber Node 命名為sub1.cpp。經過兩步我們可以看到添加的兩個文件,已經有寫好的模板程序:

這時,我們看到Qt上面報錯:找不到頭文件,而且編輯時也沒有提示補全!因為Qtcreator-ros中使用cmake來進行管理文件,在導入文件時沒有在添加文件路勁進去cmakeList.txt中去。所以接下來做的就是添加關聯!
2.7、添加生成可執行文件,並鏈接:在helloworld下的CMakeList.txt中添加下面幾行:(注:add_executable盡量放在最后,不然生成的可執行文件會在build文件夾中而不是再devel中,最后導致rosrun報錯找不到可執行文件(復制過去也行),血淋淋的教訓):
add_executable(pub1 pub1.cpp)
target_link_libraries(pub1 ${catkin_LIBRARIES})
add_executable(sub1 sub1.cpp)
target_link_libraries(sub1 ${catkin_LIBRARIES})
2.8、右擊blogbook,點擊build,成功后重新打開cpp文件就不會再找不到頭文件了。同時,工程也編譯完畢!
3、執行文件
Qt內部可以添加run使得ROS節點很方便就能執行
3.1、 添加run:點擊最右邊工具欄Project,再Build & Run中選擇run, Add Run Step,選擇package:helloworld, Target:pub1或者sub1(添加完一個添加另一個)

3.2、不要忘記先打開一個終端執行roscore,然后點擊右邊綠色三角或者工具欄中run運行。這時可能會發現沒有運行結果??點擊一欄:1、issues,2、Search...,3、Applic...點擊三角形,選擇08 ROS Terminal勾上可視即可。另外,可在發布者Terminal使用ctrl+c中斷再運行,再觀看訂閱者Terminal!

結語:
從這個示例很容易發現ROS在消息傳輸(發布、訂閱)中很容易協調,應該在多傳感器數據的時候十分好用?期待。
