Skip to content

Commit 48382a1

Browse files
committed
pre field test
1 parent 088ddcc commit 48382a1

17 files changed

+30
-11
lines changed

.gitignore

100755100644
File mode changed.

CMakeLists.txt

100755100644
File mode changed.

LICENSE

100755100644
File mode changed.

README.md

100755100644
File mode changed.

cfg/default_config.yaml

100755100644
File mode changed.

cfg/zenmuse_x3.yaml

100755100644
File mode changed.

cfg/zenmuse_z3.yaml

100755100644
File mode changed.

cfg/zenmuse_z3_640x360.yaml

100755100644
File mode changed.

cfg/zenmuse_z3_896x504.yaml

100755100644
File mode changed.

include/dji_gimbal_cam/dji_camera.h

100755100644
File mode changed.

include/dji_gimbal_cam/dji_gimbal.h

100755100644
+2-1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ class dji_gimbal {
6969

7070
// Callbacks
7171
void gimbalAngleCallback(const geometry_msgs::Vector3Stamped::ConstPtr& msg);
72+
void gimbalAngleCMDCallback(const geometry_msgs::Vector3::ConstPtr& msg);
7273
void joyCallback(const sensor_msgs::Joy::ConstPtr& msg);
7374
void cameraInfoCallback(const sensor_msgs::CameraInfo& msg);
7475
void pointCallback(const geometry_msgs::Vector3::ConstPtr& msg);
@@ -98,7 +99,7 @@ class dji_gimbal {
9899
bool angleAvailable;
99100
std::string cameraInfoTopic;
100101
std::string pointTopic;
101-
std::string gimbalCMDTopic;
102+
std::string gimbalCmdTopic;
102103
int yawAxis, pitchAxis, rollAxis, resetButton, faceDownButton, toggleButton;
103104
geometry_msgs::Vector3Stamped gimbalAngle;
104105
geometry_msgs::Vector3Stamped speedCmd;

include/dji_gimbal_cam/djicam.h

100755100644
File mode changed.

launch/default.launch

100755100644
File mode changed.

launch/load_rosparam.launch

100755100644
File mode changed.

package.xml

100755100644
File mode changed.

src/dji_camera.cpp

100755100644
File mode changed.

src/dji_gimbal.cpp

100755100644
+28-10
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ dji_gimbal::dji_gimbal(ros::NodeHandle& nh)
3535
initializeParam();
3636

3737
// Setup Subscribers
38-
gimbalAngleSub = nh.subscribe<geometry_msgs::Vector3Stamped>("/dji_sdk/gimbal_angle", 10, &dji_gimbal::gimbalAngleCallback, this);
39-
joySub = nh.subscribe("joy", 10, &dji_gimbal::joyCallback, this);
40-
cameraInfoSub = nh.subscribe(cameraInfoTopic, 10, &dji_gimbal::cameraInfoCallback, this);
41-
pointSub = nh.subscribe(pointTopic, 10, &dji_gimbal::pointCallback, this);
42-
gimbalAngleCMDSub = nh.sudscribe(gimbalCmdTopic, 10, &dji_gimbal::gimbalAngleCMDCallback, this);
38+
gimbalAngleSub = nh.subscribe<geometry_msgs::Vector3Stamped>("/dji_sdk/gimbal_angle", 1, &dji_gimbal::gimbalAngleCallback, this);
39+
joySub = nh.subscribe("joy", 1, &dji_gimbal::joyCallback, this);
40+
cameraInfoSub = nh.subscribe(cameraInfoTopic, 1, &dji_gimbal::cameraInfoCallback, this);
41+
pointSub = nh.subscribe(pointTopic, 1, &dji_gimbal::pointCallback, this);
42+
gimbalAngleCMDSub = nh.subscribe(gimbalCmdTopic, 1, &dji_gimbal::gimbalAngleCMDCallback, this);
4343

4444
// Setup Publishers
4545
gimbalSpeedPub = nh.advertise<geometry_msgs::Vector3Stamped>("/dji_sdk/gimbal_speed_cmd", 10);
@@ -60,7 +60,7 @@ void dji_gimbal::initializeParam()
6060
nh_local.param("track_point", trackPoint, false);
6161
nh_local.param("camera_info_topic", cameraInfoTopic, std::string("/dji_sdk/camera_info"));
6262
nh_local.param("track_point_topic", pointTopic, std::string("track_point"));
63-
nh_local.param("gimbal_cmd_topic", gimbalCmdTopic, std:string("gimbal_cmd"));
63+
nh_local.param("gimbal_cmd_topic", gimbalCmdTopic, std::string("gimbal_cmd"));
6464
nh_local.param("yaw_axis", yawAxis, 0);
6565
nh_local.param("pitch_axis", pitchAxis, 4);
6666
nh_local.param("roll_axis", rollAxis, 3);
@@ -107,17 +107,35 @@ void dji_gimbal::publishGimbalCmd()
107107
speedCmd.vector.y = 0;
108108
speedCmd.vector.z = 0;
109109

110-
pointAvailable = false;
110+
111111
}
112112
else if (angleAvailable)
113113
{
114-
setGimbalAngle(rollCMD, pitchCMD, yawCMD);
115-
116-
angleAvailable = false;
114+
// [-pi,pi)
115+
double cr = rollCMD >= M_PI ? rollCMD-2*M_PI : (rollCMD < -M_PI ? rollCMD+2*M_PI : rollCMD);
116+
double cp = pitchCMD >= M_PI ? pitchCMD-2*M_PI : (pitchCMD < -M_PI ? pitchCMD+2*M_PI : pitchCMD);
117+
double cy = yawCMD >= M_PI ? yawCMD-2*M_PI : (yawCMD < -M_PI ? yawCMD+2*M_PI : yawCMD);
118+
119+
double dr = cr - DEG2RAD(gimbalAngle.vector.x);
120+
double dp = cp - DEG2RAD(gimbalAngle.vector.y);
121+
double dy = cy - DEG2RAD(gimbalAngle.vector.z);
122+
speedCmd.vector.x = dr;
123+
speedCmd.vector.y = dp;
124+
speedCmd.vector.z = dy;
125+
126+
gimbalSpeedPub.publish(speedCmd);
127+
128+
// Reset Commands to zero
129+
speedCmd.vector.x = 0;
130+
speedCmd.vector.y = 0;
131+
speedCmd.vector.z = 0;
132+
117133
}
118134
else
119135
gimbalSpeedPub.publish(speedCmd);
120136
}
137+
138+
angleAvailable = pointAvailable = false;
121139
}
122140

123141
void dji_gimbal::setGimbalAngle(double roll, double pitch, double yaw)

0 commit comments

Comments
 (0)