# 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 ``` sh bash .docker/build.bash ``` ### Run built container ``` sh bash .docker/run.bash ``` If active changes are being made, run: ``` sh 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 ``` sh ./rebuild.sh ``` ``` sh source src/install/local_setup.bash ``` ## Running ### RobotController One of the following RobotControllers should be started: DummyController echoes Motion messages to the terminal. ``` sh ros2 run robot_controller dummy_controller ``` AxidrawController draws on the axidraw robot ``` sh ros2 launch axidraw_controller axidraw_controller ``` This starts the simulated lite6 ``` sh ros2 launch lite6_controller lite6_gazebo.launch.py ``` This runs the real lite6 ``` sh ros2 launch lite6_controller lite6_real.launch.py ``` This runs the real lite6 without Rviz (can be run on headless device over ssh) ``` sh ros2 launch lite6_controller lite6_real_no_gui.launch.py ``` ### DrawingController Once a RobotController is running, simultaneously (using tmux or another terminal) run ``` sh 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 | |