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}
)