Docs: https://github.com/bondada-a/erobs/blob/humble-experimental/docs/Container_documentation.md
NOTE: This is optional, was not needed when we were testing on Linux.
export ROS_DOMAIN_ID=0Start the server:
podman run --arch=amd64 -it --rm --network host --ipc=host --pid=host ghcr.io/bondada-a/beambot_img:latest bashInside the podman container:
source /root/ws/erobs/install/setup.bash && ros2 launch beambot beambot_bringup.launch.py use_fake_hardware:=true enable_vision:=falseClient side on the server image:
ros2 action send_goal /beambot_execution beambot_interfaces/action/MTCExecution "{full_json: '$(cat /root/ws/erobs/src/cms/tasks/beamtime/spincoat_to_hotplate.json)'}"pixi run ros2 topic list
pixi run ros2 node listgit clone https://github.com/bondada-a/erobs.git -b humble-experimental
cd erobs
rm -rf build/beambot_interfaces install/beambot_interfaces
colcon build --packages-select beambot_interfaces \
--cmake-args \
-DPython3_EXECUTABLE=$(which python3) \
-DPYTHON_EXECUTABLE=$(which python3) \
-DPYTHON_SOABI=cpython-311-x86_64-linux-gnuexport FASTRTPS_DEFAULT_PROFILES_FILE=/tmp/fastrtps_no_shm.xml
export PYTHONPATH=$PWD/src:$PYTHONPATH
source install/setup.bash
ipythonimport rclpy
rclpy.init()
from bluesky_ros.mtc_ophyd_device import MTCExecutionDevice
from bluesky import RunEngine, plans as bps
RE = RunEngine({})
robot = MTCExecutionDevice()
RE(bps.abs_set(robot, 'src/cms/tasks/beamtime/spincoat_to_hotplate.json'))Create /tmp/fastrtps_no_shm.xml — disables shared memory transport to avoid /dev/shm permission issues:
<?xml version="1.0" encoding="UTF-8"?>
<profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles">
<transport_descriptors>
<transport_descriptor>
<transport_id>udp_transport</transport_id>
<type>UDPv4</type>
</transport_descriptor>
</transport_descriptors>
<participant profile_name="default_participant" is_default_profile="true">
<rtps>
<useBuiltinTransports>false</useBuiltinTransports>
<userTransports>
<transport_id>udp_transport</transport_id>
</userTransports>
</rtps>
</participant>
</profiles>