Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
a948f09
add biomek.py demo implementation
TablewareBox May 30, 2025
055d120
更新LiquidHandlerBiomek类,添加资源创建功能,优化协议创建方法,修复部分代码格式问题,更新YAML配置以支持新功能。
TablewareBox May 30, 2025
90a0f3d
merge
Xuwznln May 30, 2025
0452a68
Test
ElijahChang929 May 30, 2025
ea2e9c3
fix biomek success type
Xuwznln May 30, 2025
cb7c56a
Convert LH action to biomek.
ElijahChang929 May 30, 2025
208540b
Update biomek.py
ElijahChang929 May 30, 2025
d2dda6e
Merge branch '37-biomek-i5i7' of https://github.com/dptech-corp/Uni-L…
ElijahChang929 May 30, 2025
0f2555c
注册表上报handle和schema (param input)
Xuwznln May 30, 2025
478a859
修复biomek缺少的字段
Xuwznln May 30, 2025
6f6c70e
delete 's'
ElijahChang929 Jun 4, 2025
8a29bc5
Remove warnings
ElijahChang929 Jun 4, 2025
807dcdd
Update biomek.py
ElijahChang929 Jun 4, 2025
6d2489a
Merge branch '37-biomek-i5i7' of https://github.com/dptech-corp/Uni-L…
ElijahChang929 Jun 4, 2025
147b8f4
Biomek test
ElijahChang929 Jun 4, 2025
5b240cb
Update biomek.py
ElijahChang929 Jun 4, 2025
c5a495f
新增transfer_biomek的msg
Xuwznln Jun 4, 2025
e63c159
New transfer_biomek
ElijahChang929 Jun 4, 2025
e1a7c3a
Updated transfer_biomek
ElijahChang929 Jun 4, 2025
b957ad2
Merge branch '37-biomek-i5i7' of https://github.com/dptech-corp/Uni-L…
ElijahChang929 Jun 4, 2025
b999692
更新transfer_biomek的msg
Xuwznln Jun 5, 2025
39de3ac
更新transfer_biomek的msg
Xuwznln Jun 5, 2025
dd5a7ca
支持Biomek创建
Xuwznln Jun 5, 2025
a62112a
new action
qxw138 Jun 5, 2025
101c1bc
fix key name typo
Xuwznln Jun 5, 2025
46da42d
Merge branch '37-biomek-i5i7' of https://github.com/dptech-corp/Uni-L…
qxw138 Jun 5, 2025
1e00a66
New parameter for biomek to run.
ElijahChang929 Jun 6, 2025
3c2a4a6
Merge branch '37-biomek-i5i7' of https://github.com/dptech-corp/Uni-L…
ElijahChang929 Jun 6, 2025
106d71e
Refine
ElijahChang929 Jun 6, 2025
2573d34
Merge branch '37-biomek-i5i7' of https://github.com/dptech-corp/Uni-L…
qxw138 Jun 6, 2025
24ecb13
Update
ElijahChang929 Jun 6, 2025
5e86112
Merge branch '37-biomek-i5i7' of https://github.com/dptech-corp/Uni-L…
ElijahChang929 Jun 6, 2025
5bec899
new actions
qxw138 Jun 6, 2025
097114d
new actions
qxw138 Jun 6, 2025
1b9f3c6
1
qxw138 Jun 6, 2025
55be5e8
registry
Xuwznln Jun 6, 2025
48c43d3
fix biomek startup
Xuwznln Jun 6, 2025
c7b9c6a
fix handles not as default entry
Xuwznln Jun 6, 2025
6573c9e
biomek_test.py
qxw138 Jun 6, 2025
146d8c5
Merge branch '37-biomek-i5i7' of https://github.com/dptech-corp/Uni-L…
qxw138 Jun 6, 2025
e840516
Update biomek.py
qxw138 Jun 6, 2025
3f53f88
biomek_test.py
qxw138 Jun 7, 2025
8698821
fix liquid_handler.biomek handles
TablewareBox Jun 7, 2025
b6c9530
Merge branch '37-biomek-i5i7' of https://github.com/dptech-corp/Uni-L…
TablewareBox Jun 7, 2025
c0b7f2d
host node新增resource add时间统计
Xuwznln Jun 8, 2025
ab0c4b7
修正物料上传时间
Xuwznln Jun 8, 2025
6a14104
正确发送return_info结果
Xuwznln Jun 8, 2025
aaa8631
同步执行状态信息
Xuwznln Jun 8, 2025
5263277
取消raiseValueError提示
Xuwznln Jun 8, 2025
9b3377a
Update biomek_test.py
qxw138 Jun 8, 2025
f1fee5f
Merge branch '37-biomek-i5i7' of https://github.com/dptech-corp/Uni-L…
qxw138 Jun 8, 2025
6577fe1
0608 DONE
ElijahChang929 Jun 8, 2025
12c17ec
同步了Biomek.py 现在应可用
ElijahChang929 Jun 8, 2025
bab4b1d
biomek switch back to non-test
Xuwznln Jun 8, 2025
6ae77e0
temp disable initialize resource
Xuwznln Jun 8, 2025
729a0fc
37-biomek-i5i7 (#40)
Xuwznln Jun 9, 2025
133ffaa
Device visualization (#39)
q434343 Jun 9, 2025
d8a0c5e
Device visualization (#41)
Xuwznln Jun 9, 2025
4c7aa8a
fix move it
Xuwznln Jun 9, 2025
2e9a0a4
fix move it
Xuwznln Jun 9, 2025
ea5e7a5
Merge branch '37-biomek-i5i7' into dev
Xuwznln Jun 9, 2025
9c515a2
create_resource
Xuwznln Jun 9, 2025
d297abf
bump ver
Xuwznln Jun 9, 2025
9016998
增加modbus支持
Xuwznln Jun 10, 2025
369a21b
调整protocol node以更好支持多种类型的read和write
Xuwznln Jun 10, 2025
34151f5
补充日志
Xuwznln Jun 10, 2025
d7d0a27
Device visualization (#42)
Xuwznln Jun 12, 2025
96f37b3
Add Mock Device for Organic Synthesis\添加有机合成的虚拟仪器和Protocol (#43)
KCFeng425 Jun 12, 2025
11e4f05
bump version & protocol fix
Xuwznln Jun 12, 2025
ae3c65c
Merge remote-tracking branch 'origin/main' into dev
Xuwznln Jun 12, 2025
66af337
hotfix: Add macos_sdk_config (#46)
Mile-Away Jun 12, 2025
75ea45f
include device_mesh when pip install
Xuwznln Jun 12, 2025
30d143e
Merge branch 'dev' of https://github.com/dptech-corp/Uni-Lab-OS into dev
Xuwznln Jun 13, 2025
4471fed
测试自动构建
Xuwznln Jun 13, 2025
d5d516f
try build fix
Xuwznln Jun 13, 2025
49f1aa9
try build
Xuwznln Jun 13, 2025
5478ba3
test artifacts
Xuwznln Jun 13, 2025
8038094
hotfix: Add .certs in .gitignore
HaohuiQue Jun 15, 2025
934276d
create container
Xuwznln Jun 15, 2025
a354965
Merge branch 'dev' of https://github.com/dptech-corp/Uni-Lab-OS into dev
Xuwznln Jun 15, 2025
f7db8d1
container 添加和更新完成
Xuwznln Jun 15, 2025
46cec82
Device registry port (#49)
KCFeng425 Jun 22, 2025
6faa19a
Merge branch 'main' into dev
Xuwznln Jun 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
132 changes: 132 additions & 0 deletions .github/workflows/multi-platform-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
name: Multi-Platform Conda Build

on:
push:
branches: [ main, dev ]
tags: [ 'v*' ]
pull_request:
branches: [ main, dev ]
workflow_dispatch:
inputs:
platforms:
description: '选择构建平台 (逗号分隔): linux-64, osx-64, osx-arm64, win-64'
required: false
default: 'osx-arm64'

jobs:
build:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
platform: linux-64
env_file: unilabos-linux-64.yaml
- os: macos-13 # Intel
platform: osx-64
env_file: unilabos-osx-64.yaml
- os: macos-latest # ARM64
platform: osx-arm64
env_file: unilabos-osx-arm64.yaml
- os: windows-latest
platform: win-64
env_file: unilabos-win64.yaml

runs-on: ${{ matrix.os }}

defaults:
run:
shell: bash -l {0}

steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Check if platform should be built
id: should_build
run: |
if [[ "${{ github.event_name }}" != "workflow_dispatch" ]]; then
echo "should_build=true" >> $GITHUB_OUTPUT
elif [[ -z "${{ github.event.inputs.platforms }}" ]]; then
echo "should_build=true" >> $GITHUB_OUTPUT
elif [[ "${{ github.event.inputs.platforms }}" == *"${{ matrix.platform }}"* ]]; then
echo "should_build=true" >> $GITHUB_OUTPUT
else
echo "should_build=false" >> $GITHUB_OUTPUT
fi

- name: Setup Miniconda
if: steps.should_build.outputs.should_build == 'true'
uses: conda-incubator/setup-miniconda@v3
with:
miniconda-version: "latest"
channels: conda-forge,robostack-staging,defaults
channel-priority: strict
activate-environment: build-env
auto-activate-base: false
auto-update-conda: false
show-channel-urls: true

- name: Install boa and build tools
if: steps.should_build.outputs.should_build == 'true'
run: |
conda install -c conda-forge boa conda-build

- name: Show environment info
if: steps.should_build.outputs.should_build == 'true'
run: |
conda info
conda list | grep -E "(boa|conda-build)"
echo "Platform: ${{ matrix.platform }}"
echo "OS: ${{ matrix.os }}"

- name: Build conda package
if: steps.should_build.outputs.should_build == 'true'
run: |
if [[ "${{ matrix.platform }}" == "osx-arm64" ]]; then
boa build -m ./recipes/conda_build_config.yaml -m ./recipes/macos_sdk_config.yaml ./recipes/ros-humble-unilabos-msgs
else
boa build -m ./recipes/conda_build_config.yaml ./recipes/ros-humble-unilabos-msgs
fi

- name: List built packages
if: steps.should_build.outputs.should_build == 'true'
run: |
echo "Built packages in conda-bld:"
find $CONDA_PREFIX/conda-bld -name "*.tar.bz2" | head -10
ls -la $CONDA_PREFIX/conda-bld/${{ matrix.platform }}/ || echo "${{ matrix.platform }} directory not found"
ls -la $CONDA_PREFIX/conda-bld/noarch/ || echo "noarch directory not found"
echo "CONDA_PREFIX: $CONDA_PREFIX"
echo "Full path would be: $CONDA_PREFIX/conda-bld/**/*.tar.bz2"

- name: Prepare artifacts for upload
if: steps.should_build.outputs.should_build == 'true'
run: |
mkdir -p ${{ runner.temp }}/conda-packages
find $CONDA_PREFIX/conda-bld -name "*.tar.bz2" -exec cp {} ${{ runner.temp }}/conda-packages/ \;
echo "Copied files to temp directory:"
ls -la ${{ runner.temp }}/conda-packages/

- name: Upload conda package artifacts
if: steps.should_build.outputs.should_build == 'true'
uses: actions/upload-artifact@v4
with:
name: conda-package-${{ matrix.platform }}
path: ${{ runner.temp }}/conda-packages
if-no-files-found: warn
retention-days: 30

- name: Create release assets (on tags)
if: steps.should_build.outputs.should_build == 'true' && startsWith(github.ref, 'refs/tags/')
run: |
mkdir -p release-assets
find $CONDA_PREFIX/conda-bld -name "*.tar.bz2" -exec cp {} release-assets/ \;

- name: Upload to release
if: steps.should_build.outputs.should_build == 'true' && startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v1
with:
files: release-assets/*
draft: false
prerelease: false
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -234,3 +234,7 @@ CATKIN_IGNORE

*.graphml
unilabos/device_mesh/view_robot.rviz


# Certs
**/.certs
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ conda env update --file unilabos-[YOUR_OS].yml -n environment_name

# Currently, you need to install the `unilabos_msgs` package
# You can download the system-specific package from the Release page
conda install ros-humble-unilabos-msgs-0.9.5-xxxxx.tar.bz2
conda install ros-humble-unilabos-msgs-0.9.7-xxxxx.tar.bz2

# Install PyLabRobot and other prerequisites
git clone https://github.com/PyLabRobot/pylabrobot plr_repo
Expand Down
2 changes: 1 addition & 1 deletion README_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ conda env update --file unilabos-[YOUR_OS].yml -n 环境名

# 现阶段,需要安装 `unilabos_msgs` 包
# 可以前往 Release 页面下载系统对应的包进行安装
conda install ros-humble-unilabos-msgs-0.9.5-xxxxx.tar.bz2
conda install ros-humble-unilabos-msgs-0.9.7-xxxxx.tar.bz2

# 安装PyLabRobot等前置
git clone https://github.com/PyLabRobot/pylabrobot plr_repo
Expand Down
6 changes: 3 additions & 3 deletions recipes/ros-humble-unilabos-msgs/recipe.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package:
name: ros-humble-unilabos-msgs
version: 0.9.5
version: 0.9.7
source:
path: ../../unilabos_msgs
folder: ros-humble-unilabos-msgs/src/work
Expand Down Expand Up @@ -50,12 +50,12 @@ requirements:
- robostack-staging::ros-humble-rosidl-default-generators
- robostack-staging::ros-humble-std-msgs
- robostack-staging::ros-humble-geometry-msgs
- robostack-staging::ros2-distro-mutex=0.6.*
- robostack-staging::ros2-distro-mutex=0.5.*
run:
- robostack-staging::ros-humble-action-msgs
- robostack-staging::ros-humble-ros-workspace
- robostack-staging::ros-humble-rosidl-default-runtime
- robostack-staging::ros-humble-std-msgs
- robostack-staging::ros-humble-geometry-msgs
- robostack-staging::ros2-distro-mutex=0.6.*
# - robostack-staging::ros2-distro-mutex=0.6.*
- sel(osx and x86_64): __osx >={{ MACOSX_DEPLOYMENT_TARGET|default('10.14') }}
2 changes: 1 addition & 1 deletion recipes/unilabos/recipe.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package:
name: unilabos
version: "0.9.5"
version: "0.9.7"

source:
path: ../..
Expand Down
3 changes: 2 additions & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

setup(
name=package_name,
version='0.9.5',
version='0.9.7',
packages=find_packages(),
include_package_data=True,
install_requires=['setuptools'],
Expand All @@ -17,6 +17,7 @@
entry_points={
'console_scripts': [
"unilab = unilabos.app.main:main",
"unilab-register = unilabos.app.register:main"
],
},
)
6 changes: 6 additions & 0 deletions test/commands/resource_add.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,10 @@

```bash
ros2 action send_goal /devices/host_node/create_resource_detailed unilabos_msgs/action/_resource_create_from_outer/ResourceCreateFromOuter "{ resources: [ { 'category': '', 'children': [], 'config': { 'type': 'Well', 'size_x': 6.86, 'size_y': 6.86, 'size_z': 10.67, 'rotation': { 'x': 0, 'y': 0, 'z': 0, 'type': 'Rotation' }, 'category': 'well', 'model': null, 'max_volume': 360, 'material_z_thickness': 0.5, 'compute_volume_from_height': null, 'compute_height_from_volume': null, 'bottom_type': 'flat', 'cross_section_type': 'circle' }, 'data': { 'liquids': [], 'pending_liquids': [], 'liquid_history': [] }, 'id': 'plate_well_11_7', 'name': 'plate_well_11_7', 'pose': { 'orientation': { 'w': 1.0, 'x': 0.0, 'y': 0.0, 'z': 0.0 }, 'position': { 'x': 0.0, 'y': 0.0, 'z': 0.0 } }, 'sample_id': '', 'parent': 'plate', 'type': 'device' } ], device_ids: [ 'PLR_STATION' ], bind_parent_ids: [ 'plate' ], bind_locations: [ { 'x': 0.0, 'y': 0.0, 'z': 0.0 } ], other_calling_params: [ '{}' ] }"
```

使用mock_all.json启动,重新捕获MockContainerForChiller1

```bash
ros2 action send_goal /devices/host_node/create_resource unilabos_msgs/action/_resource_create_from_outer_easy/ResourceCreateFromOuterEasy "{ 'res_id': 'MockContainerForChiller1', 'device_id': 'MockChiller1', 'class_name': 'container', 'parent': 'MockChiller1', 'bind_locations': { 'x': 0.0, 'y': 0.0, 'z': 0.0 }, 'liquid_input_slot': [ -1 ], 'liquid_type': [ 'CuCl2' ], 'liquid_volume': [ 100.0 ], 'slot_on_deck': '' }"
```
Loading
Loading