Conversation
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
cf6d83e to
1e3bfa8
Compare
Signed-off-by: Teo Koon Peng <teokoonpeng@gmail.com>
Signed-off-by: Teo Koon Peng <teokoonpeng@gmail.com>
Signed-off-by: Teo Koon Peng <teokoonpeng@gmail.com>
|
@koonpeng this is great! Regarding the virtual environment, i'm curious if we could leverage Do you think we can adopt a similar approach here? We expect participant nodes to be packaged within such virtual environments as well so it wouldn't just be useful for recording datasets. |
|
The instructions linked installs ros inside the conda env. What we could also do is put the entire workspace inside a conda env and avoid apt altogether. Are we looking to support mac and windows users? If so, then I think we should go with conda. I can help test on windows if needed. |
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
|
@Yadunund After testing out the conda setup, I think it will be very hard to use conda without using it on the whole workspace. The main problem is the dependencies conflict with the system packages outside the conda env. A package built inside conda env cannot be used outside the env and vice versa. In the context of |
|
Thanks for trying that out. I agree having two separate workspaces isn't great. What are your suggestions for moving this forward? @codebot is working on an |
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
|
I think if we can build everything in conda then we should use that as the source of truth. If not then I think it depends on several factors. How are we releasing the sdk? Do participants build this repo from source, or we release compiled binaries or docker images? Or we only release parts of this repo? On a separate note, I tried loading the recording in rerun.io but it only supports lerobot v2 dataset atm. Support for v3 should be landing "very soon" rerun-io/rerun#12071. |
|
Yeah. I had assumed that we'd end up with two workspaces and two separate builds, but I haven't tried it yet.
I had assumed there would be a few packages, like those in the |
This is a great point. Let's move forward with the idea that:
|
|
Moved I will probably be making another PR to integrate https://github.com/ycheng517/lerobot-ros. It seems like a easier way to work with lerobot. Instead of tools to convert between the 2 format, it creates a ros2 driver for lerobot. |
@koonpeng We can point users to such tooling but I'm not sure if we want to explicitly include it in our toolkit. Mostly because we're commanding robots through our own controllers here. What is valuable to have is a way to record rosbags, and export them to tabular formats for learning where one such format is Dataset V3. |
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
… so it does not work Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
|
@Yadunund It allows us to use all of lerobot's tools as well, including recording a dataset. So far I managed to control the robot through |
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
…problems with nesting Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
|
I updated this to use |
Yadunund
left a comment
There was a problem hiding this comment.
This is looking great. Tested it out and apart from missing rmw_zenoh exported, things worked well. Left some suggestions.
| <include> | ||
| <uri>model://sfp_sc_cable</uri> | ||
| <name>sfp_sc_cable</name> | ||
| <pose>-0.35 0.4 1.15 0 0 0</pose> | ||
| <static>false</static> | ||
| </include> |
| <version>0.0.1</version> | ||
| <description>This package contains tools to work with LeRobot for the challenge</description> | ||
| <maintainer email="koonpeng@intrinsic.ai">Teo Koon Peng</maintainer> | ||
| <license>Apache License 2.0</license> |
There was a problem hiding this comment.
| <license>Apache License 2.0</license> | |
| <license>Apache-2.0</license> |
| ### Recording an episode | ||
|
|
||
| > [!NOTE] | ||
| > All commands should be run from the participant workspace. |
There was a problem hiding this comment.
Please expand on this note to highlight pixi run or pixi shell
There was a problem hiding this comment.
This package is not included in the pixi workspace. I added a note to avoid using this due to the bugs present.
| @@ -0,0 +1,33 @@ | |||
| import os | |||
There was a problem hiding this comment.
Add copyright header here and other files
| rosdep install --from-paths src --ignore-src --rosdistro kilted -yr --skip-keys "gz-cmake3 DART libogre-dev libogre-next-2.3-dev" | ||
| source /opt/ros/kilted/setup.bash | ||
| GZ_BUILD_FROM_SOURCE=1 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release --symlink-install | ||
| GZ_BUILD_FROM_SOURCE=1 colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release --symlink-install --packages-up-to aic_bringup |
There was a problem hiding this comment.
I don't think we've setup the colcon graph correctly to build all GZ packages upto fizzgig_bringup. We should do that in a separate PR. For now, can we rely on --packages-ignore to ignore lerobot pkgs?
| ros-kilted-sensor-msgs = "*" # lerobot_robot_ros | ||
| ros-kilted-std-msgs = "*" # lerobot_robot_ros | ||
| ros-kilted-std-srvs = "*" # lerobot_robot_ros | ||
|
|
There was a problem hiding this comment.
Add ros-kilted-rmw-zenoh-cpp
| [pypi-dependencies] | ||
| lerobot = "==0.4.2" | ||
| lerobot_robot_ros = { git = "https://github.com/koonpeng/lerobot-ros", rev = "13cd1798c82be9a47fa26033973d7bc3bdb6886c", subdirectory = "lerobot_robot_ros" } | ||
| lerobot_teleoperator_devices = { git = "https://github.com/koonpeng/lerobot-ros", rev = "13cd1798c82be9a47fa26033973d7bc3bdb6886c", subdirectory = "lerobot_teleoperator_devices" } |
There was a problem hiding this comment.
Add [activation] and [activation.env] blocks to 1) source RoboStack ROS and 2) set RMW_IMPLEMENTATION=rmw_zenoh_cpp
There was a problem hiding this comment.
Added activation.env. We do not need to source robostack as it is installed in the environment.
There was a problem hiding this comment.
hmm when I ran pixi shell and then ros2 , the environment couldn't find any ros2 cli tools 🤔
There was a problem hiding this comment.
Yeah, that is "normal" since we didn't install any. I think pixi doesn't have a proper "dev dependencies" so we would have to add it to run dependencies even though it is technically not needed.
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
152977a to
bb53358
Compare
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
08be1d2 to
475c973
Compare
| @@ -50,7 +51,7 @@ cd ~/ws_aic | |||
| # Install ROS dependencies using rosdep. | |||
| rosdep install --from-paths src --ignore-src --rosdistro kilted -yr --skip-keys "gz-cmake3 DART libogre-dev libogre-next-2.3-dev" | |||
There was a problem hiding this comment.
| rosdep install --from-paths src --ignore-src --rosdistro kilted -yr --skip-keys "gz-cmake3 DART libogre-dev libogre-next-2.3-dev" | |
| rosdep install --from-paths src --ignore-src --rosdistro kilted -yr --skip-keys "gz-cmake3 DART libogre-dev libogre-next-2.3-dev rosetta" |
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
Signed-off-by: Teo Koon Peng <koonpeng@intrinsic.ai>
Yadunund
left a comment
There was a problem hiding this comment.
LGTM thanks for iterating.
This PR adds the necessary tooling to run rosetta's
bag_to_lerobot.pyscript.aic_venvcontains a custom build script that creates a venv and installs the required pypi packages on it (so far justlerobot). It exportsaic_venv_python3to run python scripts under the venv.aic_lerobot_tools/bag_to_lerobotis a wrapper to rosetta'sbag_to_lerobot.pyscript. It is needed for a number of reasons.bag_to_lerobot.pyis not yet released so we need to run it from source.lerobotwhich is only available on pypi.So far, we can convert a rosbag2 recording of
/joint_statesinto a lerobot dataset. Additional message types will require writing our own decoders.