Initial scope of tasks related to MAVFTP/LR1 FTP

Notes:

  1. Both MAVFTP and FTP have already been integrated into QGC, so that integration step itself is already done

  2. There however isn't an existing function in QGC to list items available. We would need to add that

  3. MAVSDK supports hosting a MAVFTP server.

Information about LR1 ftp: On the LR1, up to nine FTP servers can be registered. The LR1 does not host its own FTP server, it is simply a client. There are two ways files can be transferred from the LR1 to a FTP server:

  1. Automatically on each shot

  2. After it is requested, either via the camera menu, or triggered by the remote SDK


Method 0: Host FTP server on IGC

IGC does not currently have a way to host a FTP server, only act as a FTP client. We would ideally host IGC as a ftp server

  1. Setup FTP server on IGC

  2. Test that file transferring works from ILX to IGC instance, document cam setting changes required to get this to work

  3. Add area on IGC to view transferred files and preview them

Issues:

It does not look like there is a way to initiate the FTP transfer from the camera via the remote SDK. So a user would have to do so manually, or we would have to set it to auto transfer after each image taken. Setting it to auto transfer is not ideal because it would all go to the herelink storage.

This entire method is very manual. It is doable, but not ideal.

Hours estimate:

1 & 2: 16 hrs. Most of the time spent implementing an ftp server

3: 8 hrs since there would be no way to implement a transfer button with this method. It would purely preview images

Open questions: does herelink have ftp port open? if not, we'll have to use a different port. Not an issue if we use a different port for it

Total Est: 24hrs


Method 1: Use MAVFTP on Banana Pi

Description:

MAVSDK supports hosting a MAVFTP server, and IGC supports acting as a MAVFTP client. We could setup a MAVFTP server on the banana pi IFT-ILX-MavCam. This method would not utilize FTP directly from the camera itself, but it would be MAVSDK based. This is a good option, because it utilizes MAVFTP and does not require configuring on the camera side. It also is good, because IGC does not have a built in FTP server. It either acts as a FTP client or MAVFTP client.

However, if we wanted users to not interact with the camera menu, it would require files to be saved on the banana pi itself. If we give the banana pi a large SD card and have the photos clear on the banana pi, this should not be an issue,

  1. Reconfigure save dest to specific folder on Banana Pi in IFT-ILX-MAVCam programmatically (3h)

  2. Implement/Test MAVFTP on IGC to banana pi. Implement a way to upload file to specific dir (8h)

  3. Create a program on the banana pi which runs when a file is uploaded to a specific directory and begins the install process. (inotify might be able to be used for this) (10h)

  4. Implement a tab in Vehicle Setup which has a button to upload a zip file. When uploaded, use FTP to upload the file to the specific directory (5h)

Total est: 26h


Method 2: Use normal FTP on Banana Pi

This method has the same steps as Method 1, but it removes step 2, and uses FTP rather than MAVFTP. This might be preferrable over MAVFTP because we are utilizing the ethernet connection from the Herelink and we aren't flooding our UART port with data whenever we do image downloads. I believe we should first try normal FTP and then switch to MAVFTP if we discover something not ideal with normal FTP.

  1. Can we ping the banana pi from the herelink? (30m)

  2. Implement/test functionality to upload files to Banana Pi from IGC using FTP. (8h)

  3. Create a program on the banana pi which runs when a file is uploaded to a specific directory and begins the install process. (inotify might be able to be used for this) (10h)

  4. Implement a tab in Vehicle Setup which has a button to upload a zip file. When uploaded, use MAVFTP to upload the file to the specific directory (5h)

Total est: 23h 30m


Things that would not work + reasons:

Have FTP client on IGC connect directly to the camera

Does not work because the camera is also an FTP client, so IGC would have to be the FTP server.

Q: Why is it preferable to have the Banana Pi as a save dest whenever taking photos?

A: The alternative would involve configuring FTP on the Banana Pi to be an FTP server, or making the herelink a FTP server (method 0) and then pulling the images onto the Banana Pi or Herelink when the user desires. As far as I know, there is no way to choose to transfer specific images, so all images would be transferred at once. And I don't believe there is a method in the remote SDK to initiate the FTP transfer, so a user would manually have to do it in the camera menu.

It would be better to have the banana pi as a save dest and clear photos on it to prevent the SD card from becoming full.

Last updated