ros编程,用qt编写自己的一个节点,并发布自己的消息(消息类型想换成自己的)。
1首先,必须先配置qt,具体参考http://blog.csdn.net/dxuehui/article/details/44647861,该文章包括如何配置qt的快捷方式,打开一个已有的c++(ros)工程。
2那么,完成第一步后,如何自己创建一个qt工程并可以进行ros的一些操作呢(例如,发布节点等,因为qt可以编写ui界面,所以想尝试用qt写)?
2.1第一步,创建一个qt工程后,在×××.pro工程文件中,添加动态链接库及路径
INCLUDEPATH += /opt/ros/indigo/include
DEPENDPATH += /opt/ros/indigo/include
INCLUDEPATH += /home/mwy/dav/rosbook/text/include
LIBS += -l:/usr/lib/x86_64-linux-gnu/libpthread.so
LIBS += -l:/usr/lib/x86_64-linux-gnu/libboost_thread.so
LIBS += -l:/usr/lib/x86_64-linux-gnu/libboost_system.so.1.54.0
LIBS += -L/opt/ros/indigo/lib -lroscpp -lrospack -lpthread -lrosconsole -lrosconsole_log4cxx -lrosconsole_backend_interface -lxmlrpcpp -lroscpp_serialization -lrostime -lcpp_common -lroslib -ltf -lyaml-cpp -lkdl_conversions
LIBS += -l:/opt/ros/indigo/lib/libroslib.so
ps:大家的路径可能跟我的不一样。
2.2第一步完成后,就可以添加ros的头文件了。就可以像ros wiki上发布节点了,但是如何拥有自己的消息类型呢(自己创建一个结构体当消息类型行不通)?通过百度,好像并没有多少有关在qt下创建自己的消息类型的资料,所以我就想用已有的编译包编译自己的消息类型文件(×××.msg),然后通过添加头文件的形式调用。
2.2.1 在beginner_tutorials包中创建自己的消息类型,参考http://wiki.ros.org/cn/ROS/Tutorials/CreatingMsgAndSrv
cd ~/catkin_ws/src/beginner_tutorials
mkdir msg
cd msg
gedit beginner1.msg
新建名为beginner1.msg的msg文件并打开,输入
int32 a
float32 b
保存。回到上层目录,
cd ~/catkin_ws/src/beginner_tutorials
查看
package.xml文件确保存在一下两行代码
<build_depend>message_generation</build_depend> <run_depend>message_runtime</run_depend>
修改CMakeListsts.txt文件
add_message_files( FILES beginner1.msg ) generate_messages( DEPENDENCIES std_msgs) catkin_package( CATKIN_DEPENDS message_runtime)编译
cd ~/catkin_ws/
catkin_make
2.2.2 此时就可以在qt的头文件中通过调用beginner_tutorials/beginner1.h 拥有自己的消息类型了。