ArduPilot / ardupilot_gz

Tools for ArduPilot ROS2 integration and testing on ROS 2 humble
GNU General Public License v3.0
27 stars 19 forks source link

Add a debian install of the ROS2 tools #4

Open Ryanf55 opened 1 year ago

Ryanf55 commented 1 year ago

On Ubuntu, add a launchpad.net account for ArduPilot. Add versioned debs for Ardupilot and its tools.

This will allow users to easily install debians of ArduPilot. Can click to add that project to your deb sources, and then you can update+install.

The prebuilt binaries are avilable for stable, 4.4, latest, etc.

Can look into having OSRF have the ardupilot repo on the build farm. We would want to make available ARdupilot4.4, ArdupilotRolling, etc.

pulak-gautam commented 4 months ago

Hi, can you assign me this issue? I believe I have requisite skills, and have experience doing a similar thing. Thank you

Ryanf55 commented 4 months ago

That would be great! Let me know if you have questions.

pulak-gautam commented 4 months ago

Hi, ardupilot_gz_bringup seems to depend on ardupilot_sitl and ardupilot_msgs. These are located under ardupilot/Tools/ros2. Do they have their own git remote like ardupilot_gazebo? Thanks

Ryanf55 commented 4 months ago

Hi, ardupilot_gz_bringup seems to depend on ardupilot_sitl and ardupilot_msgs. These are located under ardupilot/Tools/ros2. Do they have their own git remote like ardupilot_gazebo? Thanks

Nope, they are local builds.

pulak-gautam commented 4 months ago

Hi, so I did manage to get the debs built however since ardupilot_sitl has dependency on micro_ros_agent, this breaks installation on any system without the custom rosdistro index (i.e. without micro_ros_agent added in there) see 1. Is micro_ros_agent a hard dependency of ardupilot_sitl? Is there a way for me to circumvent around it? Thanks

Ryanf55 commented 4 months ago

Hi, so I did manage to get the debs built however since ardupilot_sitl has dependency on micro_ros_agent, this breaks installation on any system without the custom rosdistro index (i.e. without micro_ros_agent added in there) see 1. Is micro_ros_agent a hard dependency of ardupilot_sitl? Is there a way for me to circumvent around it? Thanks

It is a hard dependency. I would ask around on the microROS slack channel to see if it's in the roadmap to get debians built.

pulak-gautam commented 4 months ago

@Ryanf55 I believe I got a reply from a dev regarding this.

micro_ros_agent is released as a Debian package in Vulcanexus: https://docs.vulcanexus.org/en/latest/rst/installation/linux_binary_installation.html

I would check this out, and see what I can do; and will let you know if it works out. Thanks

Ryanf55 commented 4 months ago

Yea, check it out: https://docs.vulcanexus.org/en/humble/rst/introduction/metapackages.html

vulcanexus-humble-micro

Make sure to use humble

pulak-gautam commented 4 months ago

Hi @Ryanf55 , it works and I am done with generating debs for all the packages that you have listed on the ticket (will make a PR after testing it out on a docker container). I had just one doubt regarding ros_gz packages. Currently, I believe we are building ros_gz_bridge and ros_gz_sim from source. However, I believe there are binary install available for humble and its gz-garden bindings (see here)

Gazebo Garden can be used with ROS 2 Humble and non ROS official binary packages hosted in packages.osrfoundation.org. These packages conflict with ros-humble-ros-gz* packages (Humble officially supports Gazebo Fortress). To install the binary Gazebo Garden/ROS 2 Humble packages: Folow these instruction to install gz-garden from packages.osrfoundation.org repository. Install ros_gz from the non official binary packages from apt: apt-get install ros-humble-ros-gzgarden

I have used these^ for now. They seemed to work atleast on my local. Is there a reason why we are adamant about the source install of ros-gz? (if that is the case, then we would have to host our binaries of ros-gz, or I need to find some other workaround).

Ryanf55 commented 4 months ago

Hi @Ryanf55 , it works and I am done with generating debs for all the packages that you have listed on the ticket (will make a PR after testing it out on a docker container). I had just one doubt regarding ros_gz packages. Currently, I believe we are building ros_gz_bridge and ros_gz_sim from source. However, I believe there are binary install available for humble and its gz-garden bindings (see here)

Gazebo Garden can be used with ROS 2 Humble and non ROS official binary packages hosted in packages.osrfoundation.org. These packages conflict with ros-humble-ros-gz* packages (Humble officially supports Gazebo Fortress). To install the binary Gazebo Garden/ROS 2 Humble packages: Folow these instruction to install gz-garden from packages.osrfoundation.org repository. Install ros_gz from the non official binary packages from apt: apt-get install ros-humble-ros-gzgarden

I have used these^ for now. They seemed to work atleast on my local. Is there a reason why we are adamant about the source install of ros-gz? (if that is the case, then we would have to host our binaries of ros-gz, or I need to find some other workaround).

If you can get a way to work with either garden or harmonic without compiling those packages from source, please contribute a PR. That sounds nice.

pulak-gautam commented 4 months ago

Hi @Ryanf55, I have tested all the debian installs on a docker container, they seem to work with the ros_gz binaries from apt-get install ros-humble-ros-gzgarden.

I am not sure how I should be going about making a PR with the debian binaries as listed, for this ticket. I have added them as a release on my fork here. Could you let me know how should I be going about it?

pulak-gautam commented 3 months ago

Hi, I have made a shell script here, for the generation debian installs to be added to the CI. Please let me know how should I be proceeding further? Should I make github-action pipeline for this and put up a PR? Thanks

Ryanf55 commented 3 months ago

Awesome, that's perfect. I'll run this on my system, and once that's good to go, I think the next step is to follow the bloom tutorial (creating a release organization, and then running bloom to generate the binaries.)

One thing that's not clear to me is how we can tie these binaries to 4.5 ardupilot vs 4.6. If you have any ideas on versioning, let me know.

Excellent work so far. The script is very helpful.

pulak-gautam commented 3 months ago

The versions in generated binaries are linked to the version tag in the package.xml. Perhaps, we can suitably change those. For tieing it to Ardupilot 4.5 vs 4.6, or in similar cases. I believe instead of cloning the rolling release I could download the corresponding release source code, and use that.

If you run into any trouble while running the script, please do let me know, I will try to make the necessary changes. (I did make sure to test it in a docker container). Thanks

Ryanf55 commented 3 months ago

The versions in generated binaries are linked to the version tag in the package.xml. Perhaps, we can suitably change those. For tieing it to Ardupilot 4.5 vs 4.6, or in similar cases. I believe instead of cloning the rolling release I could download the corresponding release source code, and use that.

If you run into any trouble while running the script, please do let me know, I will try to make the necessary changes. (I did make sure to test it in a docker container). Thanks

Yep, makes sense. The thing is that ArduPilot has its own release cadence that is not tied at all to the release of ROS versions, and I haven't yet found a good recommendation on how to do that. The only other well-known tool that releases multiple versions in the ROS ecosystem at a separate cadence is gazebo (you can run ignition, garden and harmonic all in Ubuntu 22). Perhaps there's a process we could use to do that sort of thing.

The other (simpler) option is to not worry about ABI stability for now, and just target ardupilot master.