1. msg定义方式
在C++中,数组的定义一般是uint8 a[ ],在ros中定义topic所用的msg时,采用的是uint8 [ ] a;
2. ros包依赖的添加
在package.xml中添加包的依赖,所有者等信息,要严格按照模板进行,否则会出现报错。
3. CmakeLists.txt文件理解
单个功能包可以包含多个节点,多个节点都要配置自己的执行文件和参考库,每个节点智能存在一个main(),对于初学者可能经常注意不到。
对于使用Roboware的同学来说,添加文件时显示的可执行文件、新的库文件是不同含义,可执行文件中需要包含main(),库文件作为参考,没有main()。
这是CmakeLists.txt中,对于节点的管理
add_executable(ipc_serial
src/ipc_serial.cpp
)
add_dependencies(ipc_serial ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(ipc_serial
${catkin_LIBRARIES}
)
4. 回调函数调用
回调函数是否调用是通过spin()函数进行检查的,可以设置通过spin()一直检查回调,也可以通过以下方式以一定频率检查回调函数。
ros::Rate loop_rate(100);
while (ros::ok())
{
loop_rate.sleep();
ros::spinOnce();
}