DJI M210+Onboard-SDK(OSDK)开发——(五)修改话题的发布频率

以吊舱姿态话题/dji_sdk/gimbal_angle为例,原来的发布频率是50Hz(实测不到50Hz),现在想修改为100Hz。

1. 修改 DJI Assistant 2 发布频率

在DJI Assistant2 把吊舱姿态的发布频率改为100hz。

2. 修改osdk-core并重新编译

首先,要修改Onboard-SDK-3.7/osdk-core/api/src/dji_subscription.cppgimbal angle允许的最大发布频率。第68行,把50改成100。

{TOPIC_GIMBAL_ANGLES , UID_GIMBAL_ANGLES  , sizeof(TypeMap<TOPIC_GIMBAL_ANGLES >::type), 50 ,   0,  255,  0},

改成

{TOPIC_GIMBAL_ANGLES , UID_GIMBAL_ANGLES  , sizeof(TypeMap<TOPIC_GIMBAL_ANGLES >::type), 100 ,   0,  255,  0},

(因为在startPackage调用setTopicList函数时,会检查确保发布的频率不能大于最大频率。)

然后重新编译osdk-core:在build文件夹下执行
make -j4
sudo make install

3. 修改ROS话题发布程序并重新编译

包含两处改动:

  • dji_sdk_node.cpp中432行处删除:
topicList50Hz.push_back(Telemetry::TOPIC_GIMBAL_ANGLES)

在405行处增加

topicList100Hz.push_back(Telemetry::TOPIC_GIMBAL_ANGLES)
  • dji_sdk_node_publisher.cpppublish50HzData函数中(410行)删除:
Telemetry::TypeMap<Telemetry::TOPIC_GIMBAL_ANGLES>::type gimbal_angle =
vehicle->subscribe->getValue<Telemetry::TOPIC_GIMBAL_ANGLES>();
​
geometry_msgs::Vector3Stamped gimbal_angle_vec3;
​
gimbal_angle_vec3.header.stamp = ros::Time::now();
gimbal_angle_vec3.vector.x = gimbal_angle.x;
gimbal_angle_vec3.vector.y = gimbal_angle.y;
gimbal_angle_vec3.vector.z = gimbal_angle.z;
p->gimbal_angle_publisher.publish(gimbal_angle_vec3);

然后把这段代码复制到publish100HzData函数中。
最后catkin_make编译ROS程序。

你可能感兴趣的:(ROS,DJI,OSDK)