2023-03-09 13:44:47 +02:00
2023-01-31 16:45:36 +02:00
2023-03-02 18:10:54 +02:00
2023-03-09 12:43:37 +02:00
2023-02-08 14:39:41 +02:00
2023-01-20 12:47:37 +02:00
2023-01-10 16:47:45 +02:00
2023-01-22 17:06:17 +02:00
2023-02-21 17:05:58 +02:00
2023-01-11 11:33:31 +02:00
2023-01-20 12:47:37 +02:00
2022-10-13 10:54:47 +03:00
2023-01-20 12:47:37 +02:00
2023-01-20 12:47:37 +02:00
2023-01-10 16:47:45 +02:00
2023-03-09 13:44:47 +02:00
2023-01-12 17:32:45 +02:00

drawing-robot-ros2

This repository contains ROS2 packages which make up a system used for drawing SVG images on different robots. These packages are in 'src/'.

Documentation and build scripts for the entire project are at the top level.

The simplest way to run the project currently is by building and running the docker container.

Docker

Build container

bash .docker/build.bash

Run built container

bash .docker/run.bash

If active changes are being made, run:

bash .docker/devel.bash

This will mount the host drawing-robot-ros2 directory in the container at src/drawing-robot-ros2.

TODO Building locally

Requirements:

  • python3-pip
  • python3-pil.imagetk
  • ros-humble-moveit
  • ros-humble-ros-gz
  • ignition-fortress
./rebuild.sh
source src/install/local_setup.bash

Running

RobotController

One of the following RobotControllers should be started:

DummyController echoes Motion messages to the terminal.

ros2 run robot_controller dummy_controller

AxidrawController draws on the axidraw robot

ros2 launch axidraw_controller axidraw_controller

This starts the simulated lite6

ros2 launch lite6_controller lite6_gazebo.launch.py

This runs the real lite6

ros2 launch lite6_controller lite6_real.launch.py

This runs the real lite6 without Rviz (can be run on headless device over ssh)

ros2 launch lite6_controller lite6_real_no_gui.launch.py

DrawingController

Once a RobotController is running, simultaneously (using tmux or another terminal) run

ros2 run drawing_controller drawing_controller svg/test.svg

This will draw the svg image given as the last argument.

SVG compatibility info

Tested with SVG from the following programs

  • Inkscape
  • Inkpad
  • Affinitydraw
  • vtracer

Delimiter characters seem to vary somewhat. The following examples work: TODO ADD EXAMPLES OF SVG PATHS

The following SVG primitives are supported:

Primitive Support
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
no
yes
no
no
no
yes
no
no
no
no
no
partial
no
yes
yes
no
no
<script> no
no
no
<style> no
no
no
no
no
no
Description
No description provided
Readme 7.5 MiB
Languages
Python 82.7%
C++ 11.5%
CMake 2.9%
Shell 1.7%
Dockerfile 0.9%
Other 0.3%