1. GDB ROS調試
ROS中用到第三方庫,在編譯第三方庫的時候,加上 -g 選項,以供調用該庫時調試。
在編譯ROS包的時候,使用如下命令編譯:
catkin_make -DCMAKE_BUILD_TYPE=Debug
GDB啟動應用
rosrun --prefix 'gdb -ex run --args' package node
之後就可以正常使用GDB命令來調試了,因為第三方庫編譯加了 -g 選項,所以可以進入調用庫中的函數進行調試。
2. c++的程序在ros下怎麼運行
1 先建立工作空間~/catkin_ws
2 在工作空間~/catkin_ws下創建包pkg目錄second
好處是通過創建包自動生成package.xml和CMakeLists.txt
3 在second目錄下創建hello.cpp源代碼文件
~~~~~~~~~~~~~~~~~~~~~~~~~~~
eagle:~/catkin_ws$ cd src
eagle:~/catkin_ws/src$ tree second/
second/
├── CMakeLists.txt
├── package.xml
└── src
└── hello.cpp
1 directory, 3 files
4 編寫hello.cpp文件
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include <ros/ros.h>
int main(int argc, char **argv) {
ros::init(argc, argv, "helloros1234444");
ros::NodeHandle n;
ROS_INFO("Hello, ROS!");
ros::spinOnce();
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5 修改編譯makefile文件 CMakeLists.txt
~~~~~~~~~~~~~~~~~~
cmake_minimum_required(VERSION 2.8.3)
project(simple_examples)
find_package(catkin REQUIRED COMPONENTS roscpp)
catkin_package()
include_directories(include $catkin_INCLUDE_DIRS)
add_executable(hello hello.cpp)
target_link_libraries(hello ${catkin_LIBRARIES})
~~~~~~~~~~~~~~~~~~
6 回到~/catkin_ws編譯程序
liao@liao-eagle:~/catkin_ws$ catkin_make
Base path: /home/liao/catkin_ws
Source space: /home/liao/catkin_ws/src
Build space: /home/liao/catkin_ws/build
Devel space: /home/liao/catkin_ws/devel
Install space: /home/liao/catkin_ws/install
####
#### Running command: "make cmake_check_build_system" in "/home/liao/catkin_ws/build"
####
####
#### Running command: "make -j2 -l2" in "/home/liao/catkin_ws/build"
####
Scanning dependencies of target hello
[100%] Building CXX object second/CMakeFiles/hello.dir/src/hello.cpp.o
Linking CXX executable /home/liao/catkin_ws/devel/lib/second/hello
[100%] Built target hello
liao@liao-eagle:~/catkin_ws$
7 測試c++程序
7.1一個終端里運行roscore
7.2 另外一個終端里運行 rosrun second hello
liao@liao-eagle:~/catkin_ws$ rosrun second hello
[ INFO] [1442208641.400826666]: Hello, ROS!
liao@liao-eagle:~/catkin_ws$ rospack find second
/home/liao/catkin_ws/src/second
liao@liao-eagle:~/catkin_ws$
3. 在Ubuntu中用rosmake編譯沒有可執行文件生成是怎麼回事
提示:make:沒有什麼可以做的為`first'。這個是Makefile的一個提示,出現這個提示是因為你編譯出來的可執行文件的時間戳比你的源代碼文件的時間戳「遲」,所以make認為你這種情況下沒必要編譯,因為即使編譯了,編出來的東西和現有的可執行文件一樣,就是浪費時間了,所以提示沒有什麼可以做的為`first'。如果你還要編,隨便打開源代碼的一個文件,保存下,就可以編譯了
4. 如何使用 sdk交叉編譯ros
使用ros_qtc_plugin插件新建項目
使用插件新建項目Import ROS
Workspace選項僅新建工作空間導入現工作空間新建文件ROS面Package、Basic
Node等選項創建package節點、launch文件、urdf文件等
現我創建新catkin工作空間,並且面創建package
1、新建項目
文件——新建文件或項目選擇Import ROS Workspace——choose圖
填寫catkin工作空間名字位置圖
我Namecatkin工作空間文件夾名字相同(同)名catkin_new選擇瀏覽——創建文件夾創建名catkin_new文件夾圖按車再選擇打
現框詢問新建工作空間未初始化否執行初始化我選擇yes
相於執行catkin_init_workspace命令使工作空間初始化
點擊Generate Project File再點擊步
項目管理步驟配置版本控制系統我選擇完圖
建工作空間catkin_new空圖
2、創建package
接我工作空間創建新package
catkin_new面src右鍵單擊選擇添加新文件圖
選擇ROS——package——choose
填寫package名字test1
填寫作者(Authors)維護者(Maintainers)Qt環境部沒配置文支持請要用文否則新建package或者新建package面package.xml空文件
DependenciesCatkin欄填寫依賴通用C++寫節點需要添加roscpp依賴
圖
點擊完
3、添加新節點
目前package空沒任何節點
我test1src文件夾右鍵單擊選擇添加新文件
選擇ROS——Basic Node——choose創建節點新建.cpp文件
節點名稱寫node1則名node1.cpp源文件
用ROS模板新建node1.cpp源文件圖自Hello World程序
4、編譯節點
讓編譯執行文件我需要編輯test1makefile圖
test1CMakeLists.txt加面幾行意思node1.cpp編譯名node1節點
add_executable(node1 src/node1.cpp)
target_link_libraries(node1
${catkin_LIBRARIES}
)