I am having problems with connection to vehicle. First, I could not connect to the vehicle even with USB (I used “/dev/ttyUSB0” connection string and got an error). Later I got it working with connection string '/dev/serial/by-id/usb-3D_Robotics_PX4_FMU_v2.x_0-if00'
and was able to send commands and receive response. Now I want to test it with the telemetry block connected to laptop USB. I tried the same way – with connection string "/dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0"
, but it gives timeout message.
USB connection test output:
>>> PreArm: Check FS_THR_VALUE >>> PreArm: Throttle below Failsafe >>> APM:Copter V3.5.4 (284349c3) >>> PX4: 0384802e NuttX: 1bcae90b >>> Frame: QUAD >>> PX4v3 0035003B 3136510A 34313630 Mode: STABILIZE Autopilot Firmware version: APM:Copter-3.5.4 Autopilot capabilities (supports ftp): False Global Location: LocationGlobal:lat=40.3985757,lon=49.8104986,alt=38.7 Global Location (relative altitude): LocationGlobalRelative:lat=40.3985757,lon=49.8104986,alt=38.7 Local Location: LocationLocal:north=None,east=None,down=None Attitude: Attitude:pitch=-0.013171303086,yaw=0.0626983344555,roll=-0.0145587390289 Velocity: [-0.01, -0.01, 0.03] GPS: GPSInfo:fix=3,num_sat=5 Groundspeed: 0.0168827120215 Airspeed: 0.263999998569 Gimbal status: Gimbal: pitch=None, roll=None, yaw=None Battery: Battery:voltage=0.0,current=None,level=None EKF OK?: False Last Heartbeat: 0.967473479002 Rangefinder: Rangefinder: distance=None, voltage=None Rangefinder distance: None Rangefinder voltage: None Heading: 3 Is Armable?: False System status: STANDBY Mode: STABILIZE Armed: False
I am opening a connection like this:
vehicle = connect('/dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0', wait_ready=True)
This results in the following traceback:
>>> Link timeout, no heartbeat in last 5 seconds >>> No heartbeat in 30 seconds, aborting. Traceback (most recent call last): File "x.py", line 6, in <module> vehicle = connect('/dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0', wait_ready=True) File "/home/seyid/.local/lib/python2.7/site-packages/dronekit/__init__.py", line 2845, in connect vehicle.initialize(rate=rate, heartbeat_timeout=heartbeat_timeout) File "/home/seyid/.local/lib/python2.7/site-packages/dronekit/__init__.py", line 2117, in initialize raise APIException('Timeout in initializing connection.') dronekit.APIException: Timeout in initializing connection.
Telemetry block is working when using MavProxy.
What is the problem here? Thank you
Advertisement
Answer
There are a couple of problems that can cause dronekit
to fail with a connection timeout:
Ensure you have the
pyserial
module installed.Specify the baud rate for your connection explicitly, as in:
vehicle = connect('/dev/ttyUSB0', wait_ready=True, baud=57600, )
If connections with mavproxy
to the same serial port work on your system it is likely that the second one is the culprit.