mirror of
https://github.com/micro-ROS/micro-ROS-Agent.git
synced 2026-09-06 09:55:15 +02:00
* fix(snap): build snap using explicitly pulled dependency * ci(snap): add snap workflow * feat(CI): snap publication channel depending on tags * fix(CI): push tagged snap to candidate instead of stable * fix(snap): use MICROROSAGENT_SUPERBUILD
152 lines
4.9 KiB
YAML
152 lines
4.9 KiB
YAML
name: micro-ros-agent
|
|
base: core20
|
|
version: git
|
|
summary: Bridge between Micro ROS client applications and ROS 2
|
|
description: |
|
|
Micro-ROS, whose default implementation is based on eProsima's
|
|
Micro XRCE-DDS middleware, is composed of client applications which interact with the ROS 2 world by means of an Agent. This agent keeps tracks of the entities created by means of
|
|
requests performed on the microcontroller side, and uses them
|
|
to communicate with the ROS 2 dataspace.
|
|
|
|
Being an extension of the Micro XRCE-DDS Agent, the micro-ROS
|
|
agent supports being run by the user like this:
|
|
|
|
$ micro-ros-agent --help
|
|
|
|
In addition, the Agent supports running as a service that can be
|
|
enabled with:
|
|
|
|
$ snap set micro-ros-agent daemon=true
|
|
|
|
If the service is enabled, by default it uses the `udp4` transport on
|
|
port 8888. The following parameters can be changed (these are
|
|
specific to the service, the `micro-ros-agent` command simply
|
|
takes command-line arguments, but the capabilities are the same):
|
|
|
|
* `transport`. Supported transports are `udp4`, `udp6`, `tcp4`,
|
|
`tcp6`, `serial`, and `pseudoterminal`. Default is `udp4`. Change
|
|
with:
|
|
|
|
$ snap set micro-ros-agent transport="new transport"
|
|
|
|
* `middleware`. Supported kinds of middleware are `ced`, `rtps`, and
|
|
`dds`. Default is `dds`. Change with:
|
|
|
|
$ snap set micro-ros-agent middleware="new middleware"
|
|
|
|
* `verbosity`. Supported verbosity levels are 0-6, defaulting to 4.
|
|
Change with:
|
|
|
|
$ snap set micro-ros-agent verbosity="selected verbosity"
|
|
|
|
* `discovery`. Enable or disable the discovery server. Defaults to
|
|
"false". Change with:
|
|
|
|
$ snap set micro-ros-agent discovery="true or false"
|
|
|
|
* `discovery-port`. Port on which the discovery server (see above)
|
|
listens. Defaults to 7400. Change with:
|
|
|
|
$ snap set micro-ros-agent discovery-port="selected port"
|
|
|
|
* `p2p-port`. Port to use for the P2P profile. Change with:
|
|
|
|
$ snap set micro-ros-agent p2p-port="selected port"
|
|
|
|
* `port`. Port on which the agent listens. Only applicable to one of
|
|
the UDP or TCP transports (see above). Defaults to 8888. Change with:
|
|
|
|
$ snap set micro-ros-agent port="selected port"
|
|
|
|
* `baudrate`. Baud rate to use when accessing serial ports. Only
|
|
applicable when using the `serial` or `pseudoterminal` transport.
|
|
Defaults to 115200. Change with:
|
|
|
|
$ snap set micro-ros-agent baudrate="baud rate"
|
|
|
|
* `device`. The serial device to use. Only applicable when using the
|
|
`serial` or `pseudoterminal` transport. Change with:
|
|
|
|
$ snap set micro-ros-agent device="device path"
|
|
|
|
When using the snap with a serial device, some steps need to be taken
|
|
in order to establish a successful connection:
|
|
|
|
* Refresh your local installation of the snap `core` package:
|
|
|
|
$ sudo snap refresh core --edge
|
|
|
|
* Enable the hotplug feature and restart the `snapd` daemon:
|
|
|
|
$ sudo snap set core experimental.hotplug=true
|
|
$ sudo systemctl restart snapd
|
|
|
|
* After plugging the microcontroller to the serial port, execute
|
|
the `snap interface serial-port` command. You should see something
|
|
like this:
|
|
|
|
name: serial-port
|
|
summary: allows accessing a specific serial port
|
|
plugs:
|
|
- micro-ros-agent
|
|
slots:
|
|
- snapd:cp2102cp2109uartbrid (allows accessing a specific serial port)
|
|
|
|
* Connect your snap image to the desired serial port (replace accordingly):
|
|
|
|
$ snap connect micro-ros-agent:serial-port snapd:cp2102cp2109uartbrid
|
|
|
|
After this, you can execute your snap as usual,
|
|
using `sudo micro-ros-agent serial -d <serial-dev>`.
|
|
|
|
grade: stable
|
|
confinement: strict
|
|
|
|
architectures:
|
|
- build-on: amd64
|
|
- build-on: arm64
|
|
- build-on: armhf
|
|
- build-on: ppc64el
|
|
|
|
parts:
|
|
uros-agent:
|
|
plugin: colcon
|
|
source: .
|
|
colcon-cmake-args:
|
|
- -DMICROROSAGENT_SUPERBUILD=ON
|
|
- --cmake-force-configure
|
|
override-pull: |
|
|
snapcraftctl pull
|
|
|
|
version="$(git describe --always --tags| sed -e 's/^v//;s/-/+git/;y/-/./')"
|
|
[ -n "$(echo $version | grep "+git")" ] && grade=devel || grade=stable
|
|
snapcraftctl set-version "$version"
|
|
snapcraftctl set-grade "$grade"
|
|
|
|
build-packages: [make, gcc, g++]
|
|
stage-packages: [ros-foxy-ros2launch]
|
|
|
|
runner:
|
|
plugin: dump
|
|
source: snap/local/
|
|
organize:
|
|
'micro-ros-agent-daemon': usr/bin/
|
|
'fastdds_no_shared_memory.xml': usr/share/
|
|
|
|
apps:
|
|
micro-ros-agent:
|
|
command: opt/ros/snap/lib/micro_ros_agent/micro_ros_agent
|
|
environment:
|
|
FASTRTPS_DEFAULT_PROFILES_FILE: ${SNAP}/usr/share/fastdds_no_shared_memory.xml
|
|
plugs: [network, network-bind, serial-port]
|
|
extensions: [ros2-foxy]
|
|
|
|
daemon:
|
|
command: usr/bin/micro-ros-agent-daemon
|
|
environment:
|
|
FASTRTPS_DEFAULT_PROFILES_FILE: ${SNAP}/usr/share/fastdds_no_shared_memory.xml
|
|
daemon: simple
|
|
plugs: [network, network-bind, serial-port]
|
|
extensions: [ros2-foxy]
|
|
|