From ecaf520725e40bdcd12f25194cc6375a2c514b24 Mon Sep 17 00:00:00 2001 From: Grigorij-Dudnik Date: Fri, 17 Apr 2026 19:55:33 +0200 Subject: [PATCH 1/3] PyPi 0.2.1-beta1 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c48467c1..60843372 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "robocrew" -version = "0.2.0" +version = "0.2.1-beta1" authors = [ { name="Grigorij Dudnik", email="dudnikgrv@gmail.com" }, { name="Konrad Suchodolski", email="konrad.suchodolski50@gmail.com" }, From 3163311f81f26b4c5f41c8b517353e76143777de Mon Sep 17 00:00:00 2001 From: MaKu9 Date: Sat, 18 Apr 2026 10:43:28 +0200 Subject: [PATCH 2/3] =?UTF-8?q?Usuni=C4=99cie=20=3D=3D=3D=3D=3D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/settings.local.json | 10 +++++ .github/workflows/astro.yml | 0 .gitignore | 4 +- =2.6.1 | 7 ++++ examples/6_xlerobot_groot_manipulation.py | 0 examples/cosmos.py | 38 ++++++++++++++++++ examples/test_example.py | 0 src/robocrew/core/LLMAgent.py | 3 +- .../EarthRover/earth_rover_universal.prompt | 0 src/robocrew/robots/XLeRobot/groot_client.py | 0 src/robocrew/robots/XLeRobot/tools.py | 40 +++++++------------ src/robocrew/robots/XLeRobot/xlerobot.prompt | 0 src/robocrew/ui/agent_setup.py | 0 src/robocrew/ui/app.py | 0 src/robocrew/ui/tab_config.py | 0 src/robocrew/ui/tab_conversation.py | 0 src/robocrew/ui/tab_dataset.py | 0 src/robocrew/ui/tab_manual.py | 0 src/robocrew/ui/tab_vla.py | 0 src/robocrew/ui/utils.py | 0 20 files changed, 72 insertions(+), 30 deletions(-) create mode 100644 .claude/settings.local.json mode change 100755 => 100644 .github/workflows/astro.yml create mode 100644 =2.6.1 mode change 100755 => 100644 examples/6_xlerobot_groot_manipulation.py create mode 100644 examples/cosmos.py mode change 100755 => 100644 examples/test_example.py mode change 100755 => 100644 src/robocrew/core/LLMAgent.py mode change 100755 => 100644 src/robocrew/robots/EarthRover/earth_rover_universal.prompt mode change 100755 => 100644 src/robocrew/robots/XLeRobot/groot_client.py mode change 100755 => 100644 src/robocrew/robots/XLeRobot/tools.py mode change 100755 => 100644 src/robocrew/robots/XLeRobot/xlerobot.prompt mode change 100755 => 100644 src/robocrew/ui/agent_setup.py mode change 100755 => 100644 src/robocrew/ui/app.py mode change 100755 => 100644 src/robocrew/ui/tab_config.py mode change 100755 => 100644 src/robocrew/ui/tab_conversation.py mode change 100755 => 100644 src/robocrew/ui/tab_dataset.py mode change 100755 => 100644 src/robocrew/ui/tab_manual.py mode change 100755 => 100644 src/robocrew/ui/tab_vla.py mode change 100755 => 100644 src/robocrew/ui/utils.py diff --git a/.claude/settings.local.json b/.claude/settings.local.json new file mode 100644 index 00000000..d7de7053 --- /dev/null +++ b/.claude/settings.local.json @@ -0,0 +1,10 @@ +{ + "permissions": { + "allow": [ + "WebFetch(domain:raw.githubusercontent.com)", + "WebFetch(domain:github.com)", + "WebSearch", + "WebFetch(domain:api.github.com)" + ] + } +} diff --git a/.github/workflows/astro.yml b/.github/workflows/astro.yml old mode 100755 new mode 100644 diff --git a/.gitignore b/.gitignore index 50a0f0d5..aef77e90 100644 --- a/.gitignore +++ b/.gitignore @@ -23,10 +23,10 @@ test-req.txt sterowanie.py tts/ -======= + sterowanie.py tts/ ->>>>>>> a677287499bdf3751f32d69f3349af86602c1c49 + examples/xlerobot_controler.py examples/xlerobot_controller.py \ No newline at end of file diff --git a/=2.6.1 b/=2.6.1 new file mode 100644 index 00000000..db47e05b --- /dev/null +++ b/=2.6.1 @@ -0,0 +1,7 @@ +Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple +Collecting pygame + Downloading pygame-2.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (12 kB) +Downloading pygame-2.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (13.6 MB) + ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 13.6/13.6 MB 4.4 MB/s eta 0:00:00 +Installing collected packages: pygame +Successfully installed pygame-2.6.1 diff --git a/examples/6_xlerobot_groot_manipulation.py b/examples/6_xlerobot_groot_manipulation.py old mode 100755 new mode 100644 diff --git a/examples/cosmos.py b/examples/cosmos.py new file mode 100644 index 00000000..c793f91a --- /dev/null +++ b/examples/cosmos.py @@ -0,0 +1,38 @@ +""" +The simplest example of agent that can drive XLeRobot. +""" + +from robocrew.core.camera import RobotCamera +from robocrew.robots.XLeRobot.xlerobot_LLM_agent import XLeRobotAgent +from robocrew.robots.XLeRobot.tools import create_move_forward, create_turn_right, create_turn_left +from robocrew.robots.XLeRobot.servo_controls import ServoControler + +# set up main camera +main_camera = RobotCamera("/dev/camera_center") # camera usb port Eg: /dev/video0 + +#set up servo controler +right_arm_wheel_usb = "/dev/arm_right" # provide your right arm usb port. Eg: /dev/ttyACM1 +servo_controler = ServoControler(right_arm_wheel_usb=right_arm_wheel_usb) + +#set up tools +move_forward = create_move_forward(servo_controler) +turn_left = create_turn_left(servo_controler) +turn_right = create_turn_right(servo_controler) + +# init agent +agent = XLeRobotAgent( + api_base = "http://100.69.195.44:8000/v1" + model = "openai/nvidia/Cosmos-1.0-Prompt-Upsampler-12B-Text2World" + api_key = "cos" + tools=[ + move_forward, + turn_left, + turn_right, + ], + main_camera=main_camera, + servo_controler=servo_controler, +) + +agent.task = "Approach a human." + +agent.go() diff --git a/examples/test_example.py b/examples/test_example.py old mode 100755 new mode 100644 diff --git a/src/robocrew/core/LLMAgent.py b/src/robocrew/core/LLMAgent.py old mode 100755 new mode 100644 index e749e5bb..8b7f8b9e --- a/src/robocrew/core/LLMAgent.py +++ b/src/robocrew/core/LLMAgent.py @@ -250,7 +250,6 @@ def go(self): finally: if self.servo_controler: print("Disconnecting servo controller...") -======= from os import getenv from robocrew.core.tools import create_say, remember_thing, recall_thing from dotenv import find_dotenv, load_dotenv @@ -508,5 +507,5 @@ def go(self): finally: if self.servo_controler: print("Disconnecting servo controller...") ->>>>>>> a677287499bdf3751f32d69f3349af86602c1c49 + self.servo_controler.disconnect() \ No newline at end of file diff --git a/src/robocrew/robots/EarthRover/earth_rover_universal.prompt b/src/robocrew/robots/EarthRover/earth_rover_universal.prompt old mode 100755 new mode 100644 diff --git a/src/robocrew/robots/XLeRobot/groot_client.py b/src/robocrew/robots/XLeRobot/groot_client.py old mode 100755 new mode 100644 diff --git a/src/robocrew/robots/XLeRobot/tools.py b/src/robocrew/robots/XLeRobot/tools.py old mode 100755 new mode 100644 index 375ef607..3100c13d --- a/src/robocrew/robots/XLeRobot/tools.py +++ b/src/robocrew/robots/XLeRobot/tools.py @@ -216,14 +216,14 @@ def create_vla_single_arm_manipulation( robot_config.type = "so101_follower" robot_config.id="robot_arm" -======= + robot_config.id="right_arm" # Ensure attribute exists; None keeps LeRobot's default calibration lookup path. ->>>>>>> a677287499bdf3751f32d69f3349af86602c1c49 -======= + + robot_config.id="right_arm" # Ensure attribute exists; None keeps LeRobot's default calibration lookup path. ->>>>>>> a677287499bdf3751f32d69f3349af86602c1c49 + robot_config.calibration_dir = None cfg = RobotClientConfig( @@ -240,10 +240,7 @@ def create_vla_single_arm_manipulation( preloaded_client = None -======= ->>>>>>> a677287499bdf3751f32d69f3349af86602c1c49 -======= ->>>>>>> a677287499bdf3751f32d69f3349af86602c1c49 + if load_on_startup: print(f" Loading Policy for {tool_name}...") # release main camera from agent @@ -253,16 +250,15 @@ def create_vla_single_arm_manipulation( preloaded_client = RobotClient(cfg) preloaded_client.robot.disconnect() -======= + # Warm up once at startup so server loads policy weights before first real execution. warmup_client = RobotClient(cfg) warmup_client.robot.disconnect() ->>>>>>> a677287499bdf3751f32d69f3349af86602c1c49 -======= + # Warm up once at startup so server loads policy weights before first real execution. warmup_client = RobotClient(cfg) warmup_client.robot.disconnect() ->>>>>>> a677287499bdf3751f32d69f3349af86602c1c49 + #assign main camera back to agent time.sleep(0.5) main_camera_object.reopen() @@ -273,10 +269,9 @@ def tool_name_to_override() -> str: print("Manipulation tool activated") servo_controler.set_saved_position("cobra", arm_side=arm_side) ->>>>>>> a677287499bdf3751f32d69f3349af86602c1c49 -======= + servo_controler.set_saved_position("cobra", arm_side=arm_side) ->>>>>>> a677287499bdf3751f32d69f3349af86602c1c49 + servo_controler.turn_head_to_vla_position() # release main camera from agent, so arm policy can use it main_camera_object.release() @@ -290,14 +285,12 @@ def tool_name_to_override() -> str: else: client = preloaded_client client.robot.connect() -======= # Use a fresh RobotClient per invocation so worker threads can be stopped cleanly. client = RobotClient(cfg) ->>>>>>> a677287499bdf3751f32d69f3349af86602c1c49 -======= + # Use a fresh RobotClient per invocation so worker threads can be stopped cleanly. client = RobotClient(cfg) ->>>>>>> a677287499bdf3751f32d69f3349af86602c1c49 + if not client.start(): return "Failed to connect to robot server." @@ -318,9 +311,7 @@ def tool_name_to_override() -> str: main_camera_object.reopen() # set head back to precize mode servo_controler.turn_head_to_vla_position(50) -======= -======= ->>>>>>> a677287499bdf3751f32d69f3349af86602c1c49 + if client: try: client.stop() @@ -556,7 +547,4 @@ def _shutdown_robot_client(client: "RobotClient") -> None: hardware disconnection, preventing race conditions. """ client.stop() -======= ->>>>>>> a677287499bdf3751f32d69f3349af86602c1c49 -======= ->>>>>>> a677287499bdf3751f32d69f3349af86602c1c49 + diff --git a/src/robocrew/robots/XLeRobot/xlerobot.prompt b/src/robocrew/robots/XLeRobot/xlerobot.prompt old mode 100755 new mode 100644 diff --git a/src/robocrew/ui/agent_setup.py b/src/robocrew/ui/agent_setup.py old mode 100755 new mode 100644 diff --git a/src/robocrew/ui/app.py b/src/robocrew/ui/app.py old mode 100755 new mode 100644 diff --git a/src/robocrew/ui/tab_config.py b/src/robocrew/ui/tab_config.py old mode 100755 new mode 100644 diff --git a/src/robocrew/ui/tab_conversation.py b/src/robocrew/ui/tab_conversation.py old mode 100755 new mode 100644 diff --git a/src/robocrew/ui/tab_dataset.py b/src/robocrew/ui/tab_dataset.py old mode 100755 new mode 100644 diff --git a/src/robocrew/ui/tab_manual.py b/src/robocrew/ui/tab_manual.py old mode 100755 new mode 100644 diff --git a/src/robocrew/ui/tab_vla.py b/src/robocrew/ui/tab_vla.py old mode 100755 new mode 100644 diff --git a/src/robocrew/ui/utils.py b/src/robocrew/ui/utils.py old mode 100755 new mode 100644 From 7c8ef798252877d251ee59486f4135d2085ed5f3 Mon Sep 17 00:00:00 2001 From: Grigorij-Dudnik Date: Sat, 18 Apr 2026 10:51:42 +0200 Subject: [PATCH 3/3] Usuniecie ==== --- .github/workflows/astro.yml | 0 examples/6_xlerobot_groot_manipulation.py | 0 examples/cosmos.py | 38 ------------------- examples/test_example.py | 0 src/robocrew/core/LLMAgent.py | 0 .../EarthRover/earth_rover_universal.prompt | 0 src/robocrew/robots/XLeRobot/groot_client.py | 0 src/robocrew/robots/XLeRobot/tools.py | 0 src/robocrew/robots/XLeRobot/xlerobot.prompt | 0 src/robocrew/ui/agent_setup.py | 0 src/robocrew/ui/app.py | 0 src/robocrew/ui/tab_config.py | 0 src/robocrew/ui/tab_conversation.py | 0 src/robocrew/ui/tab_dataset.py | 0 src/robocrew/ui/tab_manual.py | 0 src/robocrew/ui/tab_vla.py | 0 src/robocrew/ui/utils.py | 0 17 files changed, 38 deletions(-) mode change 100644 => 100755 .github/workflows/astro.yml mode change 100644 => 100755 examples/6_xlerobot_groot_manipulation.py delete mode 100644 examples/cosmos.py mode change 100644 => 100755 examples/test_example.py mode change 100644 => 100755 src/robocrew/core/LLMAgent.py mode change 100644 => 100755 src/robocrew/robots/EarthRover/earth_rover_universal.prompt mode change 100644 => 100755 src/robocrew/robots/XLeRobot/groot_client.py mode change 100644 => 100755 src/robocrew/robots/XLeRobot/tools.py mode change 100644 => 100755 src/robocrew/robots/XLeRobot/xlerobot.prompt mode change 100644 => 100755 src/robocrew/ui/agent_setup.py mode change 100644 => 100755 src/robocrew/ui/app.py mode change 100644 => 100755 src/robocrew/ui/tab_config.py mode change 100644 => 100755 src/robocrew/ui/tab_conversation.py mode change 100644 => 100755 src/robocrew/ui/tab_dataset.py mode change 100644 => 100755 src/robocrew/ui/tab_manual.py mode change 100644 => 100755 src/robocrew/ui/tab_vla.py mode change 100644 => 100755 src/robocrew/ui/utils.py diff --git a/.github/workflows/astro.yml b/.github/workflows/astro.yml old mode 100644 new mode 100755 diff --git a/examples/6_xlerobot_groot_manipulation.py b/examples/6_xlerobot_groot_manipulation.py old mode 100644 new mode 100755 diff --git a/examples/cosmos.py b/examples/cosmos.py deleted file mode 100644 index c793f91a..00000000 --- a/examples/cosmos.py +++ /dev/null @@ -1,38 +0,0 @@ -""" -The simplest example of agent that can drive XLeRobot. -""" - -from robocrew.core.camera import RobotCamera -from robocrew.robots.XLeRobot.xlerobot_LLM_agent import XLeRobotAgent -from robocrew.robots.XLeRobot.tools import create_move_forward, create_turn_right, create_turn_left -from robocrew.robots.XLeRobot.servo_controls import ServoControler - -# set up main camera -main_camera = RobotCamera("/dev/camera_center") # camera usb port Eg: /dev/video0 - -#set up servo controler -right_arm_wheel_usb = "/dev/arm_right" # provide your right arm usb port. Eg: /dev/ttyACM1 -servo_controler = ServoControler(right_arm_wheel_usb=right_arm_wheel_usb) - -#set up tools -move_forward = create_move_forward(servo_controler) -turn_left = create_turn_left(servo_controler) -turn_right = create_turn_right(servo_controler) - -# init agent -agent = XLeRobotAgent( - api_base = "http://100.69.195.44:8000/v1" - model = "openai/nvidia/Cosmos-1.0-Prompt-Upsampler-12B-Text2World" - api_key = "cos" - tools=[ - move_forward, - turn_left, - turn_right, - ], - main_camera=main_camera, - servo_controler=servo_controler, -) - -agent.task = "Approach a human." - -agent.go() diff --git a/examples/test_example.py b/examples/test_example.py old mode 100644 new mode 100755 diff --git a/src/robocrew/core/LLMAgent.py b/src/robocrew/core/LLMAgent.py old mode 100644 new mode 100755 diff --git a/src/robocrew/robots/EarthRover/earth_rover_universal.prompt b/src/robocrew/robots/EarthRover/earth_rover_universal.prompt old mode 100644 new mode 100755 diff --git a/src/robocrew/robots/XLeRobot/groot_client.py b/src/robocrew/robots/XLeRobot/groot_client.py old mode 100644 new mode 100755 diff --git a/src/robocrew/robots/XLeRobot/tools.py b/src/robocrew/robots/XLeRobot/tools.py old mode 100644 new mode 100755 diff --git a/src/robocrew/robots/XLeRobot/xlerobot.prompt b/src/robocrew/robots/XLeRobot/xlerobot.prompt old mode 100644 new mode 100755 diff --git a/src/robocrew/ui/agent_setup.py b/src/robocrew/ui/agent_setup.py old mode 100644 new mode 100755 diff --git a/src/robocrew/ui/app.py b/src/robocrew/ui/app.py old mode 100644 new mode 100755 diff --git a/src/robocrew/ui/tab_config.py b/src/robocrew/ui/tab_config.py old mode 100644 new mode 100755 diff --git a/src/robocrew/ui/tab_conversation.py b/src/robocrew/ui/tab_conversation.py old mode 100644 new mode 100755 diff --git a/src/robocrew/ui/tab_dataset.py b/src/robocrew/ui/tab_dataset.py old mode 100644 new mode 100755 diff --git a/src/robocrew/ui/tab_manual.py b/src/robocrew/ui/tab_manual.py old mode 100644 new mode 100755 diff --git a/src/robocrew/ui/tab_vla.py b/src/robocrew/ui/tab_vla.py old mode 100644 new mode 100755 diff --git a/src/robocrew/ui/utils.py b/src/robocrew/ui/utils.py old mode 100644 new mode 100755