-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Trouble setting up native CSI raspberry pi camera ( IMX708 ) and some other small questions. #435
Comments
Hi @Davidsastresas, welcome!
you can build it for your architecture by using our cross docker w/ gstreamer by invoking cross using the
Unfortunately, MCM doesn't yet support rpi cam v3. I have just gotten one myself, and I'll try adding support for it ASAP. This issue is essentially what we need to have it working.
This is indeed a known problem that hasn't yet been addressed, we should make the CLI to always have priority over the config file.
I've seen this happening, I'm unsure if the problem is in the MCM or QGC. Does it happen in QGC v4.3.0 as well? Thanks! |
Thank you very much for your answer, and for the tip about cross-compiling, much appreciated. About Rpi cam v3, if I understand correctly then, including some custom gstreamer that has libcamera operational should do the job? Or besides that is there some additional modification we would need to do over MCM code itself? We were considering using this project for a production environment, and for the short future we wanted to work with imx708 and a Toshiba tc3587 based HDMI to CSI converter to be able to use HDMI cameras, using both of them at the same time to be able to switch video sources from a custom QGC build. About where we tested, what I reported is true for latest QGC 4.4. I will try to gather more information about this first connection issue and report back if I find something worth mentioning. Thank you very much! |
Besides letting the Thanks! |
Thanks for the answer. We need to have something functional a few weeks from now. The easy solution is to hard code some scripts to use our required imx708 and tc3587, but I certainly would prefer to use MCM. So I will take some weeks to try to add support for it, specially as it seems it could be interesting for the project too! And if I run out of time I will come back to the less nice plan of hard coding those scripts. I am kind of familiar with Gstreamer at the basic level, at integrating it in other projects, but I have never actually got involved in Gstreamer development. I have never worked in Rust before either. I am quite comfortable in c/c++, and not so comfortable but I can manage in python. So if that is fine I will probably ask some questions in the process. So, if I understood correctly, the process right now to keep pulling this string would be:
About the part of adding support for tc3587 too, is there something on top of your mind right now that could help me get on track faster? Thank you very much! |
Sounds fair. I can work with you in that process so we lower the risk. Rust is not that different from C/C++. It is less flexible, and everything is done by composition. To help you focus on what is important for this work, MCM is heavily based on the Tokio async framework, and the GStreamer rust bindings. This is the default book people use to learn it, but there is also this other one, which is way more direct, but very shallow.
Yes, I believe we can use Ubuntu's
Yes.
I'd prefer if you instead start by creating a draft PR here and update it whenever you want to discuss the things, if you think it works for you.
We'd have to do some research on that, maybe it's also using libcamera? Thanks |
Thank you very much for the response, especially for those resources to start with rust. I already started reading them, and in the following weeks I hope to make advance. I will close this issue and make a PR when I start working on it, to continue the discussion there. thank you! |
Hi!
I've been playing around with this project for some days, first within the same desktop machine, and now I set it up in a raspberry pi compute module 4 board, using a ochin v2 carrier board (https://github.com/ochin-space/ochin-CM4v2) a very nice board for this project by the way.
I managed to build from source in the raspberry pi itself, just for the fun of it, and it took forever, more than 1 hour. Probably cross-compiling from Desktop is nicer for embedded development.
Now I have the setup working, consisting on raspberry pi cm4 connected on its serial0 to Ardupilot SITL ( through an FTDI ), and then by ethernet connected to QGC on my desktop machine. I manage to have the ball test pattern working in QGC, handshake and video autodetection working properly.
I am not managing to use imx708 ( raspberry pi camera v3 ). It works nicely using rpicam-hello and gstreamer. These are the devices detected by v4l2:
which seem to be reflected too in the configuration tool:
I also receive a bunch of errors like this for most of /dev/video* when starting from command line with --verbose argument:
I saw some issues resolved about this and my understanding is that native Rpi camera support was functional. Anybody has any hint to keep debugging?
Also, I am experiencing some small issues, not super important at this point, but just for awareness in case anybody has any input:
When changing configuration, specifically mavlink endpoint, as arguments when launching mavlink-camera-manager, it doesn't update unless I launch 2 times. First time I run it with the updated argument it still uses old --mavlink argument. This one is not a big deal.
When connecting to the autopilot, and GCS, I am finding it doesn't always connect, sometimes I need to reboot several times for the whole thing to work and for mavlink-camera-manager to do the handshake alright with QGC. I am using QGC 4.4 and enabling cameramanager logs, and it seems it asks for camera info a lot of times until giving up, and then a few seconds later, sometimes that camera info is received and the procedure continues as usual until video configuration is digested by QGC and video shows up, but other times it does not receive it and it doesn't proceed further.
Mavlink traffic seems to be clean, no errors at all deducted from sequence number. Usually I have better luck if I start Ardupilot first, and then mavlink-camera-manager. If starting mavlink-camera-manager first, it is more likely that the handshake won't complete from my experience.
Is there anything in particular that is tricky on this part? related to mavlink system ID, or timing on this handshake, etc?
Thank you very much!
The text was updated successfully, but these errors were encountered: