@@ -269,13 +269,10 @@ void StartDefaultTask(void *argument)
269269 break ;
270270 }
271271 clamp_pwm_output (pwm_output, 8 );
272- // offset to compensate for the optocoupler offset
273- for (int8_t i = 0 ; i < 8 ; i++) pwm_output[i] += OPTOCOUPLER_INTRODUCED_OFFSET_uS;
274272 set_pwms (pwm_output);
275273 } else set_pwm_idle ();
276274
277- // do not publish the offset by subtracting 50
278- for (uint8_t i = 0 ; i < 8 ; i++) thruster_status_msg.thruster_pwms [i] = pwm_output[i] - OPTOCOUPLER_INTRODUCED_OFFSET_uS;
275+ for (uint8_t i = 0 ; i < 8 ; i++) thruster_status_msg.thruster_pwms [i] = pwm_output[i];
279276 rc = rcl_publish (&thruster_status_publisher, &thruster_status_msg, NULL );
280277 if (rc!=RCL_RET_OK) printf (" Error publishing (line %d)\n " , __LINE__);
281278
@@ -289,29 +286,27 @@ void StartDefaultTask(void *argument)
289286/* USER CODE BEGIN Application */
290287void inline set_pwms (uint32_t pwms[8 ])
291288{
292- TIM2 -> CCR1 = pwms[ 0 ];
293- TIM2 -> CCR2 = pwms[1 ] ;
294- TIM2 -> CCR3 = pwms[2 ] ;
295- TIM2 -> CCR4 = pwms[3 ] ;
296-
297- // vertical thrusters
298- TIM3 -> CCR1 = pwms[4 ];
299- TIM3 -> CCR2 = pwms[5 ];
300- TIM3 -> CCR3 = pwms[6 ];
301- TIM3 -> CCR4 = pwms[7 ];
289+ // HERE THE PWM Channel - Thruster relation is defined
290+ TIM2 -> CCR1 = pwms[0 ] + OPTOCOUPLER_INTRODUCED_OFFSET_uS ;
291+ TIM2 -> CCR2 = pwms[1 ] + OPTOCOUPLER_INTRODUCED_OFFSET_uS ;
292+ TIM2 -> CCR3 = pwms[2 ] + OPTOCOUPLER_INTRODUCED_OFFSET_uS ;
293+ TIM2 -> CCR4 = pwms[ 3 ] + OPTOCOUPLER_INTRODUCED_OFFSET_uS;
294+ // VERTICAL THRUSTERS
295+ TIM3 -> CCR1 = pwms[4 ] + OPTOCOUPLER_INTRODUCED_OFFSET_uS ;
296+ TIM3 -> CCR2 = pwms[5 ] + OPTOCOUPLER_INTRODUCED_OFFSET_uS ;
297+ TIM3 -> CCR3 = pwms[6 ] + OPTOCOUPLER_INTRODUCED_OFFSET_uS ;
298+ TIM3 -> CCR4 = pwms[7 ] + OPTOCOUPLER_INTRODUCED_OFFSET_uS ;
302299}
303300void inline set_pwm_idle ()
304301{
305- TIM2 -> CCR1 = PWM_IDLE;
306- TIM2 -> CCR2 = PWM_IDLE;
307- TIM2 -> CCR3 = PWM_IDLE;
308- TIM2 -> CCR4 = PWM_IDLE;
309-
310- // vertical thrusters
311- TIM3 -> CCR1 = PWM_IDLE;
312- TIM3 -> CCR2 = PWM_IDLE;
313- TIM3 -> CCR3 = PWM_IDLE;
314- TIM3 -> CCR4 = PWM_IDLE;
302+ TIM2 -> CCR1 = PWM_IDLE + OPTOCOUPLER_INTRODUCED_OFFSET_uS;
303+ TIM2 -> CCR2 = PWM_IDLE + OPTOCOUPLER_INTRODUCED_OFFSET_uS;
304+ TIM2 -> CCR3 = PWM_IDLE + OPTOCOUPLER_INTRODUCED_OFFSET_uS;
305+ TIM2 -> CCR4 = PWM_IDLE + OPTOCOUPLER_INTRODUCED_OFFSET_uS;
306+ TIM3 -> CCR1 = PWM_IDLE + OPTOCOUPLER_INTRODUCED_OFFSET_uS;
307+ TIM3 -> CCR2 = PWM_IDLE + OPTOCOUPLER_INTRODUCED_OFFSET_uS;
308+ TIM3 -> CCR3 = PWM_IDLE + OPTOCOUPLER_INTRODUCED_OFFSET_uS;
309+ TIM3 -> CCR4 = PWM_IDLE + OPTOCOUPLER_INTRODUCED_OFFSET_uS;
315310}
316311void clamp_pwm_output (uint32_t pwms[], int N) {
317312 for (uint16_t i = 0 ; i < N; i++) {
@@ -331,16 +326,14 @@ void update_pid_constants(arm_pid_instance_f32 *pid, float32_t Kp, float32_t Ki,
331326 pid->A2 = Kd;
332327}
333328void imu_subscription_callback (const void * msgin) {
334- const sensor_msgs__msg__Imu * msg = ( const sensor_msgs__msg__Imu *)msgin;
329+
335330}
336331void cmd_vel_subscription_callback (const void * msgin) {
337332
338333}
339334void arm_disarm_service_callback (const void * request_msg, void * response_msg) {
340335 std_srvs__srv__SetBool_Request * req_in = (std_srvs__srv__SetBool_Request *) request_msg;
341336 std_srvs__srv__SetBool_Response * res_in = (std_srvs__srv__SetBool_Response *) response_msg;
342-
343- // Handle request message and set the response message values
344337 rov_arm_mode = req_in->data ? ROV_ARMED : ROV_DISARMED;
345338 printf (" %d: arm mode.\n " , (int )rov_arm_mode);
346339 res_in->success = true ;
@@ -351,9 +344,7 @@ void arm_disarm_service_callback(const void * request_msg, void * response_msg)
351344void set_nav_mode_service_callback (const void * request_msg, void * response_msg) {
352345 nereo_interfaces__srv__SetNavigationMode_Request * req_in = (nereo_interfaces__srv__SetNavigationMode_Request *) request_msg;
353346 nereo_interfaces__srv__SetNavigationMode_Response * res_in = (nereo_interfaces__srv__SetNavigationMode_Response *) response_msg;
354-
355347 navigation_mode = (NavigationModes)req_in->navigation_mode ;
356-
357348 res_in->mode_after_set = navigation_mode;
358349 res_in->success = true ;
359350}
0 commit comments