Custom px4-firmware build on StarlingV2
-
Hello,
I am trying to figure out how to build px4-firmware which lives in voxl-px4 as a submodule.
My goal is to modify the microdds client config (dds_topics.yaml), in order to expose more uORB topic pub/subs for my custom ROS2 nodes.
I am going to ask some basic questions as I don't quite understand the process I need to take and can't really find any documentation that makes sense to me, at this time:
-
Do I have to rebuild voxl-px4 in order for the modifications to take place? If no, where does px4-firmware live inside the voxl2 environment in order to make these modifications?
-
If I have to rebuild voxl-px4 can I do it following the instructions from here? I am confused because it states that I need the rb5-flight-px4-build-docker docker image. Is this procedure supported for StarlingV2?
I would really appreciate some guidance here as I don't want to break anything again
-
-
@smilon Yes, in order to build you can follow the README in the voxl-px4 project. The Docker provides the build environment so you need to use it.
-
Hi @smilon - mind telling me a bit more what you are trying to do? Expose more topics to stream into PX4 or just have subscribers in ros2 to listen to exposed topics? Reason I ask is I am uncertain if PX4 has the support for new topics to stream data INTO px4 - but if all you are doing is subscribing to the new topic data is ros2 then I dont see why it would not work.
TLDR - yes you will need to rebuild the px4 instance in order to add DDS clients/subscribers.
-
Hi @Zachary-Lowell-0. So I haven't worked with microdds in PX4 before but say for example I want to implement PX4's PrecisionLanding feature. I need to send LandingPoseTarget uORB messages to PX4 and I want to do that with input from ROS2 topics. Currently, only a few basic topics are bridged by default, just like you point out in your docs, but I read in PX4's docs that I can expose the required topics for both input to PX4 and output to ROS2. At least that's my understanding. So I am not creating new uORB topics I just want to get more uORB topics into ROS2 and conversly publish more data from ROS2 into existing uORB topics.
I will post here in a few days with hopefully actual results!
Thanks.
-
Makes sense to me @smilon - keep in mind that the px4 instance on the voxl2 is not mainlined so a lot of those features involving the microDDS arent fully implemented yet. It is quite easy to be the subscriber in ros2 from the DDS by exposing that topic from the yaml - but definitely might require some programming on the other side of things in PX4 to ensure that the rest of the code base can ingest the dds uorb you are passing along, etc.
Also just some stuff I have come accross with PX4 instance of precision landing - it isnt all that good - youd have better luck implementing your own method of landing via offboard movement using something like mavros or mavsdk.
Let me know how it goes!
Zach -
Thanks for the info @Zachary-Lowell-0 ...I think day by day I am turning more towards MAVROS even though it is not the intended way to communicate with PX4 in ROS2.
I ran into an issue while installing the newly built voxl-px4 which states it depends on libfc-sensor(>=1.0.5) and I only have (1.0.4) on my system. @Eric-Katzfey I saw you authored some commits on libfc-sensor-api, do you have any clue how I can update?
-
@smilon You can find the updated package here: http://voxl-packages.modalai.com/dists/qrb5165/staging/binary-arm64/libfc-sensor_1.0.5_arm64.deb
-
@smilon said in Custom px4-firmware build on StarlingV2:
I ran into an issue while installing the newly built voxl-px4 which states it depends on libfc-sensor(>=1.0.5) and I only have (1.0.4) on my system. @Eric-Katzfey I saw you authored some commits on libfc-sensor-api, do you have any clue how I can update?
1 Reply Last reply about 3 hours ago Reply
@smilon I would recommend using ros2 wrapper around mavsdk instead of mavros, that is what we have done in the past as mavros and ros1 are both depricated and not supported anymore. Anyways, goodluck with the project!