如何获得M300RTK上主云台H20T相机的图像?我们使用 auto setup_camera_stream_cli...
Completed-
camera_stream_node由于有SDL的存在无法通过编译,所以我们单独取出了有关于图像数据的代码进行编译,没有任何反馈。代码如下
#include <ros/ros.h>
#include <iostream>
#include <dji_camera_image.hpp>
#include <dji_osdk_ros/SetupCameraStream.h>
#include <sensor_msgs/Image.h>
#include "opencv2/opencv.hpp"
#include "opencv2/highgui/highgui.hpp"
void show_rgb(CameraRGBImage img, char* name)
{
std::cout << "#### Got image from:\t" << std::string(name) << std::endl;
cv::Mat mat(img.height, img.width, CV_8UC3, img.rawData.data(), img.width*3);
cvtColor(mat, mat, cv::COLOR_RGB2BGR);
imshow(name,mat);
cv::waitKey(1);
}
void mainCameraStreamCallBack(const sensor_msgs::Image& msg)
{
std::cout<<"start"<<std::endl;
CameraRGBImage img;
img.rawData = msg.data;
img.height = msg.height;
img.width = msg.width;
char Name[] = "MAIN_CAM";
show_rgb(img, Name);
std::cout<<"height is"<<msg.height<<std::endl;
std::cout<<"width is"<<msg.width<<std::endl;
}
//CODE
using namespace dji_osdk_ros;
int main(int argc,char**argv)
{
ros::init(argc, argv, "camera_stream_node");
ros::NodeHandle nh;
auto setup_camera_stream_client = nh.serviceClient<dji_osdk_ros::SetupCameraStream>("setup_camera_stream");
auto main_camera_stream_sub = nh.subscribe("dji_osdk_ros/main_camera_images", 10, mainCameraStreamCallBack);
dji_osdk_ros::SetupCameraStream setupCameraStream_;
setupCameraStream_.request.cameraType = setupCameraStream_.request.MAIN_CAM;
setupCameraStream_.request.start = 1;
setup_camera_stream_client.call(setupCameraStream_);
//ROS_INFO_STREAM("Finished. Press CTRL-C to terminate the node");
ros::spin();
//ros::waitForShutdown();
return 0;
} -
roslaunch dji_osdk_ros dji_vehicle_node.launch
... logging to /home/cxy/.ros/log/e17df5ae-1783-11ec-9882-204ef6c61375/roslaunch-cxy-desktop-16848.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
WARNING: disk usage in log directory [/home/cxy/.ros/log] is over 1GB.
It's recommended that you use the 'rosclean' command.started roslaunch server http://cxy-desktop:39353/
SUMMARY
========PARAMETERS
* /rosdistro: melodic
* /rosversion: 1.14.11
* /vehicle_node/acm_name: /dev/ttyACM0
* /vehicle_node/align_time: False
* /vehicle_node/app_id: 1107570
* /vehicle_node/app_version: 1
* /vehicle_node/baud_rate: 921600
* /vehicle_node/enc_key: 301b1360b01571e73...
* /vehicle_node/serial_name: /dev/ttyUSB0
* /vehicle_node/use_broadcast: FalseNODES
/
vehicle_node (dji_osdk_ros/dji_vehicle_node)auto-starting new master
process[master]: started with pid [16870]
ROS_MASTER_URI=http://localhost:11311setting /run_id to e17df5ae-1783-11ec-9882-204ef6c61375
process[rosout-1]: started with pid [16884]
started core service [/rosout]
process[vehicle_node-2]: started with pid [16888]
EnableAd: 1
[4068970.844]STATUS/1 @ getDroneVersion, L1702: ret = 0
[4068970.844]STATUS/1 @ parseDroneVersionInfo, L1122: Device Serial No. = 1ZNBJ6600C00E2
[4068970.844]STATUS/1 @ parseDroneVersionInfo, L1124: Firmware = 3.4.8.74
[4068970.844]STATUS/1 @ functionalSetUp, L279: Shake hand with drone successfully by getting drone version.
[4068970.851]STATUS/1 @ legacyX5SEnableTask, L56: Legacy X5S Enable task created.
[4068971.851]STATUS/1 @ sendHeartbeatToFCTask, L1576: OSDK send heart beat to fc task created.
[4068972.063]STATUS/1 @ removePackage, L457: Remove package 1 successful.
[4068972.083]STATUS/1 @ removePackage, L457: Remove package 2 successful.
[4068972.100]STATUS/1 @ removePackage, L457: Remove package 3 successful.
[4068972.120]STATUS/1 @ removePackage, L457: Remove package 4 successful.
[4068972.120]STATUS/1 @ Control, L40: The control class is going to be deprecated.It will be better to use the FlightController class instead!
[4068972.120]STATUS/1 @ FileMgrImpl, L253: register download file callback handler successfully.
[4068972.141]STATUS/1 @ Firewall, L45: Firewall is initializing ...
[4068972.141]STATUS/1 @ Firewall, L65: osdk policy file updating(1) ......
[4068973.143]STATUS/1 @ Firewall, L73: osdk policy file updating(2) ......
[4068973.147]STATUS/1 @ RequestUploadPolicyFileHandle, L217: request upload policy file type:0
[4068973.148]STATUS/1 @ RequestUploadPolicyFileHandle, L234: Upload policy file info md5 checksum and version
[4068973.150]STATUS/1 @ RequestUploadPolicyFileHandle, L217: request upload policy file type:1
[4068973.150]STATUS/1 @ RequestUploadPolicyFileHandle, L254: request upload policy file data: 0 0 200
[4068973.154]STATUS/1 @ RequestUploadPolicyFileHandle, L217: request upload policy file type:1
[4068973.154]STATUS/1 @ RequestUploadPolicyFileHandle, L254: request upload policy file data: 1 200 175
[4068973.159]STATUS/1 @ RequestUploadPolicyFileHandle, L217: request upload policy file type:2
[4068973.159]STATUS/1 @ RequestUploadPolicyFileHandle, L282: request upload policy file success
[4068974.143]STATUS/1 @ firewallTask, L112: firewall task created ...
[4068974.163]STATUS/1 @ getDroneVersion, L1702: ret = 0
[4068974.163]STATUS/1 @ parseDroneVersionInfo, L1122: Device Serial No. = 1ZNBJ6600C00E2
[4068974.163]STATUS/1 @ parseDroneVersionInfo, L1124: Firmware = 3.4.8.74
[4068974.179]ERRORLOG/1 @ AdvancedSensing, L108: Failed to initialize USB Bulk Linker channel for liveview!
[4068974.179]ERRORLOG/1 @ AdvancedSensing, L115: Failed to create task for liveview!
[4068974.180]ERRORLOG/1 @ AdvancedSensing, L123: Failed to initialize USB Bulk Linker channel for perception!
[4068974.180]ERRORLOG/1 @ AdvancedSensing, L130: Failed to create task for advanced sensing!
[4068974.180]STATUS/1 @ AdvancedSensing, L135: Advanced Sensing init for the M300 drone
[4068974.180]STATUS/1 @ LiveViewImpl, L89: Finding if liveview stream is available now.
[4068974.981]STATUS/1 @ init, L254: Start advanced sensing initalization
[4068974.981]STATUS/1 @ activate, L1329: version 0x304084A[4068975.000]STATUS/1 @ activate, L1367: Activation successful
[ INFO] [1631861581.185685457]: VehicleNode Start
[ INFO] [1631861581.193807667]: Topic startup!
[ INFO] [1631861581.474644541]: Services startup!
[ INFO] [1631861581.580582010]: Use data subscription to get telemetry data!
[ INFO] [1631861581.580743954]: align_time_with_FC set to false. We will use ros time to time stamp messages!
[4068976.418]STATUS/1 @ verify, L244: Verify subscription successful.
[4068976.438]STATUS/1 @ startPackage, L345: Start package 3 result: 0.
[4068976.438]STATUS/1 @ startPackage, L347: Package 3 info: freq=100, nTopics=3.[4068976.458]STATUS/1 @ startPackage, L345: Start package 2 result: 0.
[4068976.458]STATUS/1 @ startPackage, L347: Package 2 info: freq=50, nTopics=14.[4068976.480]STATUS/1 @ startPackage, L345: Start package 1 result: 0.
[4068976.480]STATUS/1 @ startPackage, L347: Package 1 info: freq=5, nTopics=1.[4068976.500]STATUS/1 @ removePackage, L457: Remove package 1 successful.
[4068976.542]STATUS/1 @ startPackage, L345: Start package 1 result: 0.
[4068976.542]STATUS/1 @ startPackage, L347: Package 1 info: freq=5, nTopics=12.[4068976.559]STATUS/1 @ startPackage, L345: Start package 4 result: 0.
[4068976.560]STATUS/1 @ startPackage, L347: Package 4 info: freq=400, nTopics=1.STATUS/1All components for decoding initialized ...
STATUS/1User callback thread created successfully!
STATUS/1****** Decoder Callback Thread Start ******
[4068979.797]STATUS/1 @ getCameraList, L218: Request start pushing camera info ack = 0
[4069392.133]STATUS/1 @ getCameraList, L235: Request end pushing camera info ack = 0
[4069392.133]STATUS/1 @ getCameraList, L236: mounted cam0:1 cam2:0 cam3:0
[4069392.133]STATUS/1 @ getCameraList, L237: type cam0:43 cam2:0 cam3:0
[4069392.134]STATUS/1 @ startH264Stream, L456: camera[0] is mounted[4069392.138]ERRORLOG/1 @ subscribeLiveViewData, L323: subsrcibe data failed!
[4069392.138]ERRORLOG/1 @ subscribeLiveViewData, L325: Subscribe raw error code : 0x89
OSDK版本:4.1.0
飞机固件版本:V02.04.0102
相机固件版本:V02.04.0101
飞机固件版本:V02.04.0102
相机固件版本:V02.04.0101 -
![](https://djisdksupport.zendesk.com/attachments/token/UjXR2Hsch46LP6zRBnrgNm2vJ/?name=inline1753998286.png) 您报错提示USB 没有权限,如前面提供信息用sudo运行或者添加DJI USB节点。 ![](https://djisdksupport.zendesk.com/attachments/token/oKxnCIaKzmNg5YgHMLsJRv6r5/?name=inline749608480.png)
Please sign in to leave a comment.
Comments
6 comments