ROS與C++入門教程-搭建開發環境(QT+ros_qtc_plugin)
PS : 在“安裝ros_qtc_plugin插件”這一步中,原文提到“ Ubuntu 14.04使用apt-get方式安裝,會安裝5.7版本的Qt Creator”,因此如果對Qt版本沒要求可以直接做“安裝ros_qtc_plugin插件”這一步,可以同時安裝Qt和ros_qtc_plugin
原文出自 http://www.ncnynl.com/archives/201701/1277.html
說明:
- 介紹如何搭建QT環境來開發ROS包
- 介紹QT安裝
- 介紹QT編譯和調試ROS包
測試環境:
- 系統版本:Ubuntu14.04
- ROS版本:indigo
- QT版本:5.8.0
QtCreator安裝
- 安裝前准備,安裝相應的GNU開發工具集和OpenGL開發庫, 請注意安裝軟件都需要root權限,並且要聯網安裝
sudo apt-get install build-essential libgl1-mesa-dev libevent-pthreads-2.0.5 doxygen xorg-dev
- 下載64位Linux安裝包為 qt-opensource-linux-x64-5.8.0.run。
- 下載地址:http://download.qt.io/archive/qt/5.8/5.8.0/qt-opensource-linux-x64-5.8.0.run
- 下載的run文件不一定具有可執行權限, 可以執行如下命令開啟執行權限(以64位安裝包為例)
cd ~/tools/
wget http://download.qt.io/archive/qt/5.8/5.8.0/qt-opensource-linux-x64-5.8.0.run
chmod +x ~/tools/qt-opensource-linux-x64-5.8.0.run
-
桌面下,點擊文件,進入tools,雙擊 .run 安裝文件直接圖形界面安裝
PS : 在“安裝ros_qtc_plugin插件”這一步中,原文提到“ Ubuntu 14.04使用apt-get方式安裝,會安裝5.7版本的Qt Creator”,因此如果對Qt版本沒要求可以直接做“安裝ros_qtc_plugin插件”這一步,可以同時安裝Qt和ros_qtc_plugin -
注冊帳號,需要郵箱和密碼。可以先進入網站注冊帳號,https://login.qt.io/register.
-
默認安裝在 /home//Qt5.8.0下
-
需要的Qt組件和工具,默認不安裝源碼
-
默認Next完整安裝,完成后點左上角的 Dash home,輸入“qt”如果看到 Qt Creator 圖標則安裝成功
設置快捷方式
-
這一步將要修改Qt Creator快捷方式,使從快捷方式啟動Qt Creator的同時加載ROS環境變量。
-
打開terminal,輸入下面的命令:
gedit ~/.local/share/applications/DigiaQtOpenSource-qtcreator.desktop
- 這條命令將打開DigiaQtOpenSource-qtcreator.desktop快捷方式文件,可以看到文件內容如下:
[Desktop Entry]
Type=Application
Exec=/home/ubu/Qt5.8.0/Tools/QtCreator/bin/qtcreator
Name=Qt Creator (Community)
GenericName=The IDE of choice for Qt development.
Icon=QtProject-qtcreator
Terminal=false
Categories=Development;IDE;Qt;
MimeType=text/x-c++src;text/x-c++hdr;text/x-xsrc;application/x-designer;application/vnd.qt.qmakeprofile;application/vnd.qt.xml.resource;text/x-qml;text/x-qt.qml;text/x-qt.qbs;
-
修改 Exec 變量一行,中間添加 bash -i -c 即改為 Exec=bash -i -c /home/ubu/Qt5.8.0/Tools/QtCreator/bin/qtcreator ,保存並退出。
-
添加 bash -i -c 是為了在通過快捷方式啟動Qt Creator (bash -i -c 的目地是便於設置快捷方式)
-
如果打開的文件是空,則表示沒有找到DigiaQtOpenSource-qtcreator.desktop文件
-
可能是安裝路徑不在本地用戶目錄下,或者版本不同導致的文件名不一致。
-
可以在 ~/.local/share/applications/ 和 /usr/share/applications/ 兩個路徑下用 ls qt 命令找找看。
-
如果沒有上述快捷方式文件,自己新建一個,只要文件內容類似上面的類容,路徑正確即可。
-
快捷方式可以放在 ~/.local/share/applications/ 和 /usr/share/applications/ 兩個位置。
-
當然也可以放在任意其他位置,功能跟放在上面兩個位置一樣,但左邊的任務欄不會正確顯示圖標
安裝ros_qtc_plugin插件 (若直接執行這一步,則只執行藍色字體的三行命令即可)
- Ubuntu 14.04使用apt-get方式安裝,會安裝5.7版本的Qt Creator
sudo add-apt-repository ppa:levi-armstrong/qt-libraries-trusty sudo add-apt-repository ppa:levi-armstrong/ppa sudo apt-get update && sudo apt-get install qt57creator-plugin-ros
-
安裝完成在Dash home出現Qt 5.7.1 Creator, 點擊即可啟動帶插件的QtCreator
-
修改系統配置文件讓Qt啟動器選擇新版的Qt
$ sudo gedit /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf
- 內容為:
/usr/lib/x86_64-linux-gnu/qt4/bin
/usr/lib/x86_64-linux-gnu
- 修改成:
/home/ubu/Qt5.8.0/5.8/gcc_64/bin
/home/ubu/Qt5.8.0/5.8/gcc_64/lib
- /home/ubu是我的主文件夾絕對路徑,請對應修改為自己的。
- 如果有多個QT版本,可以有不同的默認設置,查找並同樣修改
/usr/lib/x86_64-linux-gnu/qtchooser/default.conf
和
/usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf
ros_qtc_plugin插件新建項目
- 利用插件不僅可以新建工作空間還可以導入現有的工作空間,而“新建文件”中的“ROS”下面的“Package”、“Basic Node”等選項可以創建package和和節點、launch文件、urdf文件等
(1)新建項目:
-
“文件”——“新建文件或項目”,選擇”Import ROS Workspace”——“choose”
-
然后填寫catkin工作空間的名字和位置
-
選擇“瀏覽”——“創建文件夾”,創建一個名為catkin_new的文件夾,如下圖,按回車,再選擇“打開”
-
在“項目管理”步驟可以配置版本控制系統,我們選擇“完成”,如下圖
-
建好的工作空間,如果沒出現src目錄,可以關閉,重開即可。
(2)創建package
-
在catkin_new下面的src上右鍵單擊,選擇“添加新文件”,如下圖
-
然后選擇“ROS”——“package”——“choose”
-
填寫package的名字,如test1
-
填寫作者(Authors)和維護者(Maintainers),如果你的Qt環境部沒有配置中文支持請不要用中文,否則無法新建package
-
或者新建的package里面的package.xml會是空文件
-
在“Dependencies”下的“Catkin”一欄填寫依賴,通常用C++寫節點需要添加對roscpp的依賴
-
如下圖
-
下一步,再點擊完成
(3)添加新的節點
-
test1的src文件夾上右鍵單擊,選擇“添加新文件”
-
選擇“ROS”——“Basic Node”——“choose”,創建一個節點,也就是新建一個.cpp文件
-
節點名稱寫為“node1”,則生成一個名為node1.cpp的源文件
-
用ROS模板新建的node1.cpp的源文件如下圖,是自動生成的一個Hello World程序
-
編譯節點,為test1的CMakeLists.txt加上下面幾行,意思是把node1.cpp編譯成名為node1的節點
-
再后面include_directories,添加
add_executable(node1 src/node1.cpp)
target_link_libraries(node1
${catkin_LIBRARIES}
)
-
如圖:
-
修改完CMakeLists.txt之后點擊Qt左下角的錘子圖標“構建項目catkin_new”
-
點擊底邊欄的“4 編譯輸出”可以看到編譯結果,如下圖
(4)運行節點
- 新終端,運行roscore
$roscore
-
點擊左側蘭的“項目”,在“Build&Run”頁
-
測試時候無法選擇Packge和Target,不過可以手工填寫Arguments。也可以直接寫入執行的命令和參數。
-
點擊左下角的“三角”運行
參考:
- http://download.qt.io/archive/qt/5.8/5.8.0/
- http://www.aicrobo.com/blog/2013-12-ros_ide_qtcreator.html
- https://wizardforcel.gitbooks.io/qt-beginning/content/4.html
- https://lug.ustc.edu.cn/sites/qtguide/
- https://github.com/ros-industrial/ros_qtc_plugin
- https://github.com/ros-industrial/ros_qtc_plugin/wiki/1.-How-to-Install-(Users)
- http://blog.csdn.net/u013453604/article/details/52186375
- http://blog.csdn.net/u013453604/article/details/52167213
- http://wiki.ros.org/qt_create/Tutorials/Qt%20App%20Templates
- http://myzharbot.robot-home.it/blog/software/myzharbot-ros/qtcreator-ros/
- http://www.ciencia-explicada.com/2014/12/ros-how-to-develop-catkin-packages-from-an-ide.html
- https://github.com/ros-industrial/ros_qtc_plugin/issues?q=is%3Aissue+is%3Aclosed