Initial scope of tasks related to MAVFTP/LR1 FTP
Notes:
Both MAVFTP and FTP have already been integrated into QGC, so that integration step itself is already done
There however isn't an existing function in QGC to list items available. We would need to add that
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:
Automatically on each shot
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
Setup FTP server on IGC
Test that file transferring works from ILX to IGC instance, document cam setting changes required to get this to work
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
This method is not ideal because it would require the user to interact with the cam menu and all images would be saved on the herelink as well.
Bad method because we would not be able to update software on Banana Pi with 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,
Reconfigure save dest to specific folder on Banana Pi in IFT-ILX-MAVCam programmatically (3h)
Implement/Test MAVFTP on IGC to banana pi. Implement a way to upload file to specific dir (8h)
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)
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.
If we are unable to ping the Banana Pi from the herelink, this method will not work. We should test that out first.
Can we ping the banana pi from the herelink? (30m)
Implement/test functionality to upload files to Banana Pi from IGC using FTP. (8h)
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)
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