psdk程序无法二次启动(每次启动psdk程序都需要启动无人机才行)
Completed这是我首次启动的日志:
[0.003][core]-[Info]-[DjiCore_Init:106) Payload SDK Version : V3.9.2-beta.0-build.2125
Reconnecting to MQTT broker...
[0.047][adapter]-[Info]-[DjiAccessAdapter_Init:231) Identify aircraft series is Mavic 3 Series
[0.047][adapter]-[Info]-[DjiAccessAdapter_Init:264) Identify mount position type is Extension Port Type
[0.052][adapter]-[Info]-[DjiAccessAdapter_Init:365) Identity uart0 baudrate is 921600 bps
Reconnected to MQTT broker!
Subscribing to topic: thing/edge/xxx/services with QoS: 1
Subscribed to topic: thing/edge/xxx/services
start listen to mqtt
[2.066][adapter]-[Info]-[DjiPayloadNegotiate_Init:228) Waiting payload negotiate finish.
[3.066][adapter]-[Info]-[DjiPayloadNegotiate_Init:228) Waiting payload negotiate finish.
[4.084][core]-[Info]-[DjiIdentityVerify_UpdatePolicy:474) Updating dji sdk policy file...
[5.084][core]-[Info]-[DjiIdentityVerify_UpdatePolicy:482) Update dji sdk policy file successfully
[5.094][core]-[Info]-[DjiCore_Init:174) Identify AircraftType = Mavic 3 Thermal, MountPosition = Extension Port, SdkAdapterType = None
[5.101][core]-[Info]-[DjiCore_ApplicationStart:238) Start dji sdk application
[5.101][user]-[Info]-[DjiUser_ApplicationStart:259) Application start.
[6.752][linker]-[Warn]-[DjiProtocol_v1Unpack:187) protocol frame crc16 error, exp:0x4085 cur:0x3600
application start
CameraManager::instance().init()
GimbalManager::instance().init()
WaypointManager::instance().init()
[9.198][flight]-[Info]-[DjiFlightController_RegisterLinkerObj_M3:117) Init mavic3 enterprise series flight controller linker successfully.
[9.224][user]-[Info]-[init:746) FlightControllerManager init ok
FlightControllerManager::instance().init()
可以看到 “Init mavic3 enterprise series flight controller linker successfully.”
当我关闭程序,再次启动时:
$ ./build/bin/aib
[0.003][core]-[Info]-[DjiCore_Init:106) Payload SDK Version : V3.9.2-beta.0-build.2125
Reconnecting to MQTT broker...
[0.046][adapter]-[Info]-[DjiAccessAdapter_Init:231) Identify aircraft series is Mavic 3 Series
[0.046][adapter]-[Info]-[DjiAccessAdapter_Init:264) Identify mount position type is Extension Port Type
[0.049][adapter]-[Info]-[DjiAccessAdapter_Init:365) Identity uart0 baudrate is 921600 bps
Reconnected to MQTT broker!
Subscribing to topic: thing/edge/xxx/services with QoS: 1
Subscribed to topic: thing/edge/xxx/services
start listen to mqtt
[2.066][adapter]-[Info]-[DjiPayloadNegotiate_Init:228) Waiting payload negotiate finish.
[2.217][linker]-[Warn]-[DjiProtocol_v1Unpack:187) protocol frame crc16 error, exp:0xCD18 cur:0x552A
[3.066][adapter]-[Info]-[DjiPayloadNegotiate_Init:228) Waiting payload negotiate finish.
[3.718][linker]-[Warn]-[DjiProtocol_v1Unpack:187) protocol frame crc16 error, exp:0x572A cur:0x040F
[4.066][adapter]-[Info]-[DjiPayloadNegotiate_Init:228) Waiting payload negotiate finish.
[5.066][adapter]-[Info]-[DjiPayloadNegotiate_Init:228) Waiting payload negotiate finish.
[6.066][adapter]-[Info]-[DjiPayloadNegotiate_Init:228) Waiting payload negotiate finish.
[7.066][adapter]-[Error]-[DjiAccessAdapter_Init:381) Payload negotiate error, returnCode = 225
[7.066][core]-[Error]-[DjiCore_Init:126) Access adapter init error, stat:225
Runtime error occurred: Core init error.
报错:“Payload negotiate error, returnCode = 225 ”。无论尝试多少次都是如此。此时我必须重启无人机才可以连接上。(没有尝试过单独重启板子,因为我板子用的无人机的电源,所以两个是一起启动的,但我觉得大概是不行的。)
板子信息:
我的机器时m3t:
网卡信息:
$ ifconfig
enP8p1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.90.2 netmask 255.255.0.0 broadcast 192.168.255.255
ether 3c:6d:66:16:12:62 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 18 bytes 1746 (1.7 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 41 base 0x5000
enxf6502561e376: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.100.30 netmask 255.255.255.0 broadcast 192.168.100.255
inet6 fe80::54e6:aede:913e:38b3 prefixlen 64 scopeid 0x20<link>
inet6 2408:8441:b419:3b0c:be44:34ee:58a2:d2fb prefixlen 64 scopeid 0x0<global>
inet6 2408:8441:b419:3b0c:2752:47b0:bfbd:2ab3 prefixlen 64 scopeid 0x0<global>
ether f6:50:25:61:e3:76 txqueuelen 1000 (Ethernet)
RX packets 337 bytes 34093 (34.0 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 397 bytes 39472 (39.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 8988 bytes 4284507 (4.2 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8988 bytes 4284507 (4.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
usb0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether fa:61:b6:88:1e:99 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
usb1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether fa:61:b6:88:1e:9b txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlP1p1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.2.53 netmask 255.255.255.0 broadcast 192.168.2.255
inet6 fe80::73ad:4fec:53d:760f prefixlen 64 scopeid 0x20<link>
ether 70:a6:cc:0c:c0:dd txqueuelen 1000 (Ethernet)
RX packets 13021 bytes 2451066 (2.4 MB)
RX errors 0 dropped 178 overruns 0 frame 0
TX packets 5279 bytes 4128860 (4.1 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
设备信息
$ ls /dev/tty*
/dev/tty /dev/tty15 /dev/tty22 /dev/tty3 /dev/tty37 /dev/tty44 /dev/tty51 /dev/tty59 /dev/tty9 /dev/ttyp5 /dev/ttypd /dev/ttyTHS1
/dev/tty0 /dev/tty16 /dev/tty23 /dev/tty30 /dev/tty38 /dev/tty45 /dev/tty52 /dev/tty6 /dev/ttyAMA0 /dev/ttyp6 /dev/ttype /dev/ttyTHS2
/dev/tty1 /dev/tty17 /dev/tty24 /dev/tty31 /dev/tty39 /dev/tty46 /dev/tty53 /dev/tty60 /dev/ttyGS0 /dev/ttyp7 /dev/ttypf /dev/ttyUSB0
/dev/tty10 /dev/tty18 /dev/tty25 /dev/tty32 /dev/tty4 /dev/tty47 /dev/tty54 /dev/tty61 /dev/ttyp0 /dev/ttyp8 /dev/ttyS0 /dev/ttyUSB1
/dev/tty11 /dev/tty19 /dev/tty26 /dev/tty33 /dev/tty40 /dev/tty48 /dev/tty55 /dev/tty62 /dev/ttyp1 /dev/ttyp9 /dev/ttyS1 /dev/ttyUSB2
/dev/tty12 /dev/tty2 /dev/tty27 /dev/tty34 /dev/tty41 /dev/tty49 /dev/tty56 /dev/tty63 /dev/ttyp2 /dev/ttypa /dev/ttyS2 /dev/ttyUSB3
/dev/tty13 /dev/tty20 /dev/tty28 /dev/tty35 /dev/tty42 /dev/tty5 /dev/tty57 /dev/tty7 /dev/ttyp3 /dev/ttypb /dev/ttyS3
/dev/tty14 /dev/tty21 /dev/tty29 /dev/tty36 /dev/tty43 /dev/tty50 /dev/tty58 /dev/tty8 /dev/ttyp4 /dev/ttypc /dev/ttyTCU0
配置信息
#ifdef __cplusplus
extern "C" {
#endif
/* Exported constants --------------------------------------------------------*/
#define DJI_USE_ONLY_UART (0)
#define DJI_USE_UART_AND_USB_BULK_DEVICE (1)
#define DJI_USE_UART_AND_NETWORK_DEVICE (2)
/*!< Attention: Select your hardware connection mode here.
* */
#define CONFIG_HARDWARE_CONNECTION DJI_USE_UART_AND_NETWORK_DEVICE
/* Exported types ------------------------------------------------------------*/
/* Exported functions --------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
#endif // DJI_SDK_CONFIG_H
/************************ (C) COPYRIGHT DJI Innovations *******END OF FILE******/
hal_network.h:
#ifdef PLATFORM_ARCH_x86_64
#define LINUX_NETWORK_DEV "enxf8e43b7bbc2c"
#else
#define LINUX_NETWORK_DEV "enP8p1s0"
#endif
/**
* @attention
*/
#ifdef PLATFORM_ARCH_x86_64
#define USB_NET_ADAPTER_VID (0x0B95)
#define USB_NET_ADAPTER_PID (0x1790)
#else
// #define USB_NET_ADAPTER_VID (0x0955)
// #define USB_NET_ADAPTER_PID (0x7020)
#define USB_NET_ADAPTER_VID (0x0BDA)
#define USB_NET_ADAPTER_PID (0x8152)
#endif
#define LINUX_CMD_STR_MAX_SIZE (128)
hal_uart.h
#define LINUX_UART_DEV1 "/dev/ttyTHS1"
#define LINUX_UART_DEV2 "/dev/ttyACM0"
hal_usb_bulk.h
#define LINUX_USB_BULK1_EP_OUT_FD "/dev/usb-ffs/bulk1/ep1"
#define LINUX_USB_BULK1_EP_IN_FD "/dev/usb-ffs/bulk1/ep2"
#define LINUX_USB_BULK1_INTERFACE_NUM (2)
#define LINUX_USB_BULK1_END_POINT_IN (0x83)
#define LINUX_USB_BULK1_END_POINT_OUT (2)
#define LINUX_USB_BULK2_EP_OUT_FD "/dev/usb-ffs/bulk2/ep1"
#define LINUX_USB_BULK2_EP_IN_FD "/dev/usb-ffs/bulk2/ep2"
#define LINUX_USB_BULK2_INTERFACE_NUM (3)
#define LINUX_USB_BULK2_END_POINT_IN (0x84)
#define LINUX_USB_BULK2_END_POINT_OUT (3)
#ifdef PLATFORM_ARCH_x86_64
#define LINUX_USB_VID (0x0B95)
#define LINUX_USB_PID (0x1790)
#else
#define LINUX_USB_VID (0x0955)
#define LINUX_USB_PID (0x7020)
-
1. 是8152的usb网卡
2. 我是通过ctrl+c的方式触发信号量,然后关闭并释放资源。下面是我的代码和日志
代码,可以看到是成功释放资源的。
DjiFlightController_DeInit();
std::this_thread::sleep_for(std::chrono::seconds(3));
std::cout << "DjiFlightController_DeInit()" << std::endl;
DjiCameraManager_DeInit();
std::this_thread::sleep_for(std::chrono::seconds(3));
std::cout << "DjiCameraManager_DeInit()" << std::endl;
DjiGimbalManager_Deinit();
std::this_thread::sleep_for(std::chrono::seconds(3));
std::cout << "DjiGimbalManager_DeInit()" << std::endl;
DjiWaypointV3_DeInit();
std::this_thread::sleep_for(std::chrono::seconds(3));
std::cout << "DjiWaypointV3_DeInit()" << std::endl;
DjiCore_DeInit();
std::this_thread::sleep_for(std::chrono::seconds(3));
std::cout << "DjiCore_DeInit()" << std::endl;
日志:
$ ./build/bin/aib
[0.003][core]-[Info]-[DjiCore_Init:106) Payload SDK Version : V3.9.2-beta.0-build.2125
Reconnecting to MQTT broker...
[0.042][adapter]-[Info]-[DjiAccessAdapter_Init:231) Identify aircraft series is Mavic 3 Series
[0.042][adapter]-[Info]-[DjiAccessAdapter_Init:264) Identify mount position type is Extension Port Type
[0.046][adapter]-[Info]-[DjiAccessAdapter_Init:365) Identity uart0 baudrate is 921600 bps
Reconnected to MQTT broker!
Subscribing to topic: thing/edge/xxx/services with QoS: 1
Subscribed to topic: thing/edge/xxx/services
start listen to mqtt
[2.062][adapter]-[Info]-[DjiPayloadNegotiate_Init:228) Waiting payload negotiate finish.
[3.062][adapter]-[Info]-[DjiPayloadNegotiate_Init:228) Waiting payload negotiate finish.
[4.080][core]-[Info]-[DjiIdentityVerify_UpdatePolicy:474) Updating dji sdk policy file...
[5.080][core]-[Info]-[DjiIdentityVerify_UpdatePolicy:482) Update dji sdk policy file successfully
[5.094][core]-[Info]-[DjiCore_Init:174) Identify AircraftType = Mavic 3 Thermal, MountPosition = Extension Port, SdkAdapterType = None
[5.101][core]-[Info]-[DjiCore_ApplicationStart:238) Start dji sdk application
[5.101][user]-[Info]-[DjiUser_ApplicationStart:259) Application start.
application start
CameraManager::instance().init()
GimbalManager::instance().init()
WaypointManager::instance().init()
[9.198][flight]-[Info]-[DjiFlightController_RegisterLinkerObj_M3:117) Init mavic3 enterprise series flight controller linker successfully.
FlightControllerManager::instance().init()
[9.219][user]-[Info]-[init:746) FlightControllerManager init ok
^C
Signal received: 2. Initiating shutdown...
DjiFlightController_DeInit()
DjiCameraManager_DeInit()
DjiGimbalManager_DeInit()
DjiWaypointV3_DeInit()
DjiCore_DeInit()
Exiting successfully.3. 这是我up和down 网卡的操作,不行。
网卡操作:
# root @ box-001 in ~ [18:10:45] C:130
$ sudo ip link set enP8p1s0 down
# root @ box-001 in ~ [18:10:52]
$ ip link show enP8p1s0
4: enP8p1s0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN mode DEFAULT group default qlen 1000
link/ether 3c:6d:66:16:12:62 brd ff:ff:ff:ff:ff:ff
# root @ box-001 in ~ [18:10:57]
$ sudo ip link set enP8p1s0 up
# root @ box-001 in ~ [18:11:14]
$ ip link show enP8p1s0
4: enP8p1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 3c:6d:66:16:12:62 brd ff:ff:ff:ff:ff:ff重新启动日志:
$ ./build/bin/aib
[0.003][core]-[Info]-[DjiCore_Init:106) Payload SDK Version : V3.9.2-beta.0-build.2125
Reconnecting to MQTT broker...
[0.043][adapter]-[Info]-[DjiAccessAdapter_Init:231) Identify aircraft series is Mavic 3 Series
[0.043][adapter]-[Info]-[DjiAccessAdapter_Init:264) Identify mount position type is Extension Port Type
[0.047][adapter]-[Info]-[DjiAccessAdapter_Init:365) Identity uart0 baudrate is 921600 bps
Reconnected to MQTT broker!
Subscribing to topic: thing/edge/xxx/services with QoS: 1
Subscribed to topic: thing/edge/xxx/services
start listen to mqtt
[2.062][adapter]-[Info]-[DjiPayloadNegotiate_Init:228) Waiting payload negotiate finish.
[3.062][adapter]-[Info]-[DjiPayloadNegotiate_Init:228) Waiting payload negotiate finish.
[4.063][adapter]-[Info]-[DjiPayloadNegotiate_Init:228) Waiting payload negotiate finish.
[5.063][adapter]-[Info]-[DjiPayloadNegotiate_Init:228) Waiting payload negotiate finish.
[6.063][adapter]-[Info]-[DjiPayloadNegotiate_Init:228) Waiting payload negotiate finish.
Runtime error occurred: Core init error.
[7.063][adapter]-[Error]-[DjiAccessAdapter_Init:381) Payload negotiate error, returnCode = 225
[7.063][core]-[Error]-[DjiCore_Init:126) Access adapter init error, stat:225
Please sign in to leave a comment.
Comments
3 comments