Hi, I’m doing a function in the rov of firmware ardusb==4.5.3, moving to a target latitude and longitude. My robot uses UGPS from waterlinker company, and the location information has been correctly passed into ardusub through the UGPS plug-in. I imported standard bluerov2 parameters and changed GPS_TYPE to MAV. When I use ALT_HOLD mode, I can use set_attitude_target and set_position_target_global_int to adjust the depth normally. However, when I switch to GUIDED mode to use set_position_target_global_int_send, my robot will move irregularly and it will not move to or even be away from the target point. After uploading MISSION in the QGC interface, the robot also moves irregularly. What is this problem? I want to use this function, do I need to configure some additional parameters?
Below is my code::
type_mask = ( # ignore everything except z position
# mavutil.mavlink.POSITION_TARGET_TYPEMASK_X_IGNORE |
# mavutil.mavlink.POSITION_TARGET_TYPEMASK_Y_IGNORE |
# mavutil.mavlink.POSITION_TARGET_TYPEMASK_Z_IGNORE |
mavutil.mavlink.POSITION_TARGET_TYPEMASK_VX_IGNORE |
mavutil.mavlink.POSITION_TARGET_TYPEMASK_VY_IGNORE |
mavutil.mavlink.POSITION_TARGET_TYPEMASK_VZ_IGNORE |
mavutil.mavlink.POSITION_TARGET_TYPEMASK_AX_IGNORE |
mavutil.mavlink.POSITION_TARGET_TYPEMASK_AY_IGNORE |
mavutil.mavlink.POSITION_TARGET_TYPEMASK_AZ_IGNORE |
# mavutil.mavlink.POSITION_TARGET_TYPEMASK_FORCE_SET |
mavutil.mavlink.POSITION_TARGET_TYPEMASK_YAW_IGNORE |
mavutil.mavlink.POSITION_TARGET_TYPEMASK_YAW_RATE_IGNORE
)
while time.time() < end_time:
dis = self.haversine(lat_target, lon_target)
if dis < 1:
break
self.master.mav.set_position_target_global_int_send(
int(1e3 * (time.time() - self.boot_time)),
self.master.target_system, self.master.target_component,
mavutil.mavlink.MAV_FRAME_GLOBAL_RELATIVE_ALT,
type_mask,
int(lat_target * 1e7),
int(lon_target * 1e7),
-0.3,
0, 0, 0,
0, 0, 0,
0, 0 # yaw, yaw_rate
)
time.sleep(0.5)