The massages which I need to record are 5 topics and 2 massege types.
I want to set them into one massege type and it is more clear to show this massges.
BUILD
1. build .msg
file
So build a /msg
folder in my package and I build my msg type Dym_Data.msg
in this folder.
I define my 5 message data, note that you should add the pkg-name/
before the massge type.
std_msgs/Float64MultiArray q_msg
std_msgs/Float64MultiArray vel_msg
std_msgs/Float64MultiArray acc_msg
std_msgs/Float64MultiArray tau_msg
std_msgs/Float64 time_msg
2. modify package.xml
add these code in package.xml
<depend>std_msgs</depend>
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
3. modify CMakeLists.txt
find_package(catkin REQUIRED COMPONENTS
std_msgs
message_generation
)
add_message_files(
FILES
Dym_Data.msg
)
generate_messages(DEPENDENCIES std_msgs)
catkin_package(
LIBRARIES franka_robot
CATKIN_DEPENDS roscpp message_runtime std_msgs
)
4. build and check your .msg
-
Run
catkin_make
to rebuild your workspace and generate your.msg
. -
Run following command
rosmsg show
to check the new.msg
type.
rosmsg show franka_robot/Dym_Data
you can see:
std_msgs/Float64MultiArray q_msg
std_msgs/MultiArrayLayout layout
std_msgs/MultiArrayDimension[] dim
string label
uint32 size
uint32 stride
uint32 data_offset
float64[] data
std_msgs/Float64MultiArray vel_msg
std_msgs/MultiArrayLayout layout
std_msgs/MultiArrayDimension[] dim
string label
uint32 size
uint32 stride
uint32 data_offset
float64[] data
std_msgs/Float64MultiArray acc_msg
std_msgs/MultiArrayLayout layout
std_msgs/MultiArrayDimension[] dim
string label
uint32 size
uint32 stride
uint32 data_offset
float64[] data
std_msgs/Float64MultiArray tau_msg
std_msgs/MultiArrayLayout layout
std_msgs/MultiArrayDimension[] dim
string label
uint32 size
uint32 stride
uint32 data_offset
float64[] data
std_msgs/Float64 time_msg
float64 data
USAGE
In .cpp file
#include <franka_robot/Dym_Data.h>
//msg
franka_robot::Dym_Data dym_msg;
dym_msg.time_msg.data = (double)t.count();
dym_msg.q_msg.data = Q_arr_;
dym_msg.vel_msg.data = QDot_arr_;
dym_msg.acc_msg.data = QDDot_arr_;