Browse Source

增加一些拍照角度控制测试;camera类型枚举调整;先发角度后拍照

mission-4.1.18
nagezeng 3 years ago
parent
commit
1604bf0645
  1. 33
      ArduCopter/UserCode.cpp
  2. 2
      ArduCopter/mode_auto.cpp
  3. 2
      hrs100h.sh
  4. 23
      libraries/AP_Camera/AP_Camera.cpp
  5. 5
      libraries/AP_Camera/AP_Camera.h

33
ArduCopter/UserCode.cpp

@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
//#include<uavcan/equipment/camera_gimbal/Status.hpp>
#endif
#define CAM_DEBUG 0
#define CAM_DEBUG 1
#ifdef USERHOOK_INIT
void Copter::userhook_init()
@ -122,11 +122,12 @@ void Copter::userhook_SuperSlowLoop() @@ -122,11 +122,12 @@ void Copter::userhook_SuperSlowLoop()
last_manual_avoid = avoid.get_avoid_action();
}
#if CAM_DEBUG
if(in_debug_mode == 2 || control_mode==Mode::Number::ACRO){
camera.take_picture();
}
#endif
if(1)
// if(in_debug_mode == 2 || control_mode==Mode::Number::ACRO){
// camera.take_picture();
// }
// if(1)
// 拍照发送角度测试
if(in_debug_mode == 2 || control_mode==Mode::Number::ACRO)
{
static uint8_t ccnt;
static float cpitch = 0.0;
@ -168,6 +169,7 @@ void Copter::userhook_SuperSlowLoop() @@ -168,6 +169,7 @@ void Copter::userhook_SuperSlowLoop()
ccnt = 0;
}
#endif
}
#endif
@ -187,11 +189,12 @@ void Copter::userhook_auxSwitch1(uint8_t ch_flag) @@ -187,11 +189,12 @@ void Copter::userhook_auxSwitch1(uint8_t ch_flag)
// break;
// }
// }
#if CAM_DEBUG
switch (ch_flag) {
case 2: {
// relay.on(2);
gcs().send_text(MAV_SEVERITY_INFO,"NOTICE: debug mode 2!");
in_debug_mode = 1;
in_debug_mode = 2;
break;
}
// case 1: {
@ -207,12 +210,12 @@ void Copter::userhook_auxSwitch1(uint8_t ch_flag) @@ -207,12 +210,12 @@ void Copter::userhook_auxSwitch1(uint8_t ch_flag)
break;
}
}
#if CAM_DEBUG
#else
switch (ch_flag) {
case 2: {
// relay.on(2);
gcs().send_text(MAV_SEVERITY_INFO,"NOTICE: debug mode 2!");
in_debug_mode = 2;
in_debug_mode = 1;
break;
}
// case 1: {
@ -252,6 +255,18 @@ void Copter::zr_set_uav_state_to_uavcan() @@ -252,6 +255,18 @@ void Copter::zr_set_uav_state_to_uavcan()
{
zr_uav_state_data_t data{0};
data.armd = motors->armed();
#if CAM_DEBUG
static bool into_debug = false;
if(in_debug_mode == 2 || control_mode==Mode::Number::ACRO)
{
into_debug = true;
copter.updownStatus = UpDown_InMission; // 任务模式云台才转角度
}else if(into_debug){
copter.updownStatus = UpDown_RequestDescent; // 降落阶段角度回到水平用
into_debug = false;
}
#endif
data.fly_status = copter.updownStatus;
data.gps_state = AP::gps().status();
data.wp_number = g.hardware_flag&0xFF;//硬件版本

2
ArduCopter/mode_auto.cpp

@ -499,8 +499,6 @@ bool ModeAuto::start_command(const AP_Mission::Mission_Command& cmd) @@ -499,8 +499,6 @@ bool ModeAuto::start_command(const AP_Mission::Mission_Command& cmd)
0,
(angle - ahrs.yaw_sensor/100.0f),
0);
// gcs().send_text(MAV_SEVERITY_INFO, "**GIMBAL yaw:%.2f,%d",angle,ahrs.yaw_sensor);
}
break;

2
hrs100h.sh

@ -1,3 +1,3 @@ @@ -1,3 +1,3 @@
./waf configure --board rs100h
./waf copter
cp ./build/rs100h/bin/arducopter.apj /mnt/f/_01-work/100\=data/固件/编译/rs100h-v4.1.18.px4
cp ./build/rs100h/bin/arducopter.apj /mnt/f/_01-work/100\=data/固件/编译/rs100h-v4.1.19.px4

23
libraries/AP_Camera/AP_Camera.cpp

@ -199,6 +199,26 @@ AP_Camera::trigger_pic_cleanup() @@ -199,6 +199,26 @@ AP_Camera::trigger_pic_cleanup()
}
break;
}
case AP_CAMERA_TRIGGER_TYPE_UAVCAN_ATT:{ // 角度和拍照分开发送
// #if HAL_WITH_UAVCAN
// if(new_att){
// uint8_t can_num_drivers = AP::can().get_num_drivers();
// for (uint8_t i = 0; i < can_num_drivers; i++)
// {
// AP_UAVCAN *uavcan = AP_UAVCAN::get_uavcan(i);
// if (uavcan != nullptr)
// {
// uavcan->set_cam_angular(camera_state.id,2,_camera_pitch,0,_camera_yaw);
// }
// }
// new_att = false;
// }
// #endif
}
break;
default:
break;
}
}
@ -525,10 +545,11 @@ void AP_Camera::uavcan_pic_att() @@ -525,10 +545,11 @@ void AP_Camera::uavcan_pic_att()
AP_UAVCAN *uavcan = AP_UAVCAN::get_uavcan(i);
if (uavcan != nullptr)
{
uavcan->set_zr_cam_cmd(camera_state.id, mode, 1, _image_index&0xff, _image_index>>8, 0);
uavcan->set_cam_angular(camera_state.id,2,_camera_pitch,0,_camera_yaw);
uavcan->set_zr_cam_cmd(camera_state.id, mode, 1, _image_index&0xff, _image_index>>8, 0);
}
}
// new_att = true;
_trigger_counter = constrain_int16(_trigger_duration * 5, 0, 255);
#endif
}

5
libraries/AP_Camera/AP_Camera.h

@ -95,8 +95,8 @@ public: @@ -95,8 +95,8 @@ public:
enum trigger_types {
AP_CAMERA_TRIGGER_TYPE_SERVO,
AP_CAMERA_TRIGGER_TYPE_RELAY,
AP_CAMERA_TRIGGER_TYPE_UAVCAN,
AP_CAMERA_TRIGGER_TYPE_UAVCAN_ATT
AP_CAMERA_TRIGGER_TYPE_UAVCAN_ATT,
AP_CAMERA_TRIGGER_TYPE_UAVCAN
};
@ -214,6 +214,7 @@ private: @@ -214,6 +214,7 @@ private:
float _camera_pitch; // 航线传入相机姿态pitch
float _camera_yaw; // 航线传入相机姿态yaw
// void send_can_msg(void);
bool new_att;
};
namespace AP {
AP_Camera *camera();

Loading…
Cancel
Save