Controlling PWM Values with Python

Hi, I am controlling my ROV with a Python script for an autonomous mission. But when I tried to send manual control it fails and it only goes in one dimension. I used this page as reference:https://www.ardusub.com/developers/pymavlink.html#send-manual-control
What can be the problem with this?

Also, when I tried to set target depth/attitude as referenced here: https://www.ardusub.com/developers/pymavlink.html#set-target-depthattitude
I am facing with this error:
DEPTH_HOLD_MODE = master.mode_mapping()[DEPTH_HOLD]
TypeError: ‘NoneType’ object is not subscriptable

The motors, which are working, are connected to single ESCs. Others are connected to a fourth motor controller.

Hi @cagan, sorry for the delay on responding to this.

Are you saying you have multiple motors connected to one ESC? From the FAQs on our T200 product page:

Are you able to control each motor individually from the Motors Setup page in QGroundControl?

I’m not sure what’s going on there - I’ll need to look more into it.

Following up on this, because BlueOS has additional MAVLink components for the camera manager and some other systems, there are multiple heartbeats. Accordingly the first heartbeat received through the MAVLink connection is not necessarily a heartbeat from the vehicle, so it’s necessary to wait until a correct one has been found. That can be done with something like the following:

from pymavlink import mavutil

... # create the connection

# wait for vehicle heartbeat before sending commands
ensure_autopilot_heartbeat = (
    f'HEARTBEAT.get_srcSystem() == {master.target_system} and '
    f'HEARTBEAT.get_srcComponent() == {mavutil.mavlink.MAV_COMP_ID_AUTOPILOT1}'
)
master.recv_match(type='HEARTBEAT', condition=ensure_autopilot_heartbeat, blocking=True)

... # rest of the program

Hi Eliot, just for curiosity,

Could you please help me with this?

I’m using Pymavlink to move servos, however my python script get stuck on master.wait_hearbeat()
I’m using the normal configuration of the tutorials for initialization of the UDPIN, my question is, do I need to connect any other Bluerobotics peripherals like camera, current sensor or something to made it work?

I’m implementing in a raspberry 4 like you sell and the navigator with external source.

Thanks in advance!