如何获得M300RTK上主云台H20T相机的图像?我们使用 auto setup_camera_stream_cli...

Completed

Comments

6 comments

  • DJI Developer Support
    麻烦分别提供一下dji_vehicle_node和camera_stream_node完整的终端运行log。
    0
    Comment actions Permalink
  • Silly Z
    0
    Comment actions Permalink
  • Silly Z

    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;
    }
    0
    Comment actions Permalink
  • DJI Developer Support
    报错提示获取图像数据失败,可以检查一下双A USB是否有连接且是否有USB的读取权限(可以先用sudo运行主节点程序)。如果还是不行,麻烦提供完整的主节点终端运行log(包括运行指令到报错),OSDK版本,飞机固件版本,相机固件版本。
    0
    Comment actions Permalink
  • Silly Z

    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: False

    NODES
    /
    vehicle_node (dji_osdk_ros/dji_vehicle_node)

    auto-starting new master
    process[master]: started with pid [16870]
    ROS_MASTER_URI=http://localhost:11311

    setting /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

    0
    Comment actions Permalink

Please sign in to leave a comment.