-
Notifications
You must be signed in to change notification settings - Fork 0
[Feature] Windows compatibility + Automatic builds + playbacknode #1
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
Conversation
|
This is marvelous! Strangely, though: I might be missing some dependencies. |
|
That's probably due to not sourcing the install directory. The echo command does not know the custom msg format I used for the audio capture node without sourcing the install/setup.sh script |
|
Double clicking deb, doesn't really give the desired behavior, I need to install via source /opt/ros/jazzy/setup.sh && ros2 run audio_tools audio_capture_node runs out of the box! In the toml file created by pixi, I have a [workspace] tag, not a [project] tag ? |
|
Yes, when creating your own pixi.toml add build task the same way you would define vscode task (see snippet above). But replace it with build command (colcon build -DCM... for example see the PR included pixi.toml file. It has this already setup) |
|
In general, this looks like a very neat system! |
Right, got it. When I check the installed audio tools from ros-jazzy-audio-tools_3.11.5-0noble_amd64.deb it seems to be missing? ros2 pkg executables | grep audio |
|
Yes playback node is not in conda & deb package yet, as that is in this pr. Which is not merged yet. After merging it will be built and made available in conda channel and releases. Instead
Or native ros, compile it from source |
|
As a documentational note I had some compiler issues on windows, but after you hinted to install the buildtools it worked fine. The following link is for the installer of a proper compiler: VS-buildtools. Also the code quality is neat🔥! |
|
Really nice, build out-of-the box with the VS community compiler💯 Your code quality is just consistent and well structured. I tried to run the ROS2 with Pixi, however I got something related to none type return: Probably I am missing something trivial, since I am still catching up with ROS2 workings. |
|
Luckily this is a warning can be safely ignored. It is related to the tools incompatibilities to the Windows ecosystem, which is not posix compliant. Meaning it will throw warnings quite often about things which are deeper down the software layers just implemented not completely correct as to windows standards. Nothing really I can do short term to these warnings. It will run and work anyways tho. |
Audio Tools V2
This pr contains quite a list of features :)
What has been added
Pixi support
Let's start with Pixi support! This is great, like really great. It is like the platformio for ROS2. Which makes ROS2, normally a pain to install on other platforms then the original Ubuntu, a breeze. Now to use and compile programs easily the only thing you have to do is:
Install it first:
Linux:
curl -fsSL https://pixi.sh/install.sh | bashWindows (run in powershell):
To use the pixi environment of this repo:
Linux & Windows (Yes both work):
When building on Windows, always build it as Release or Release with debug info! Debug build will not work!
To do this in vscode: CTRL+SHIFT+P -> CMake: Select Variant
Automatic Conda/Pixi packaging
One of the big issues, I ran into quickly when using ros2 with multiple nodes is: "How to manage all these small packages". Quickly I realized that installing them system-wide is the easiest method. First I created a workflow that simply packages the Audio_Tools ros2 package for Ubuntu Jazzy (native distro, as .deb file). Then I went ahead and created Conda packages for usage with pixi and our custom conda channel. Which includes both Windows and Linux builds, was a hassle to setup but now, it works beautifully.
How do these packaging workflows work?
They run automatically when creating a new release. Three workflows run; 1. Native ROS workflow which produces .deb file, 2. Conda linux packaging workflow, 3. Windows Conda packaging workflow. After run the artifacts (.deb & .tar.bz2) files are uploaded to the newly created release. For Conda I still have to add the manually to our own github-hosted conda-channel: https://github.com/CLFML/conda_ros2_jazzy_channel. In the future it will be done automatically too
How to use the prepackaged node in Ubuntu Noble (native ROS2)?
source /opt/ros/jazzy/setup.sh && ros2 run audio_tools audio_capture_node.It should run now..
How to use (Windows/Linux with Pixi)?
pixi initunder the tag [project]:
and under tag [dependencies]:
To check your toml should look something like this:
Okay great, now install the pixi environment and run the node:
Want to add vscode support to the pixi environment?
Add this to the toml:
Audio playback node
The audio playback node is able to playback incoming samples on the audio_playback topic (which is changeable through the parameters). For a quick test I linked it with the output of the capture node:
test_audio.py:
To run it:
Very curious if you guys are so enthousiastic about this, as I am :)