EvidenceCapabilities and limits

What RoboCanvas does, and what it does not.

Every row says what was actually observed, where, and how. "Generated" means the files are written; it does not mean they were run. Where a result depends on a simulator setting, the row says so.

How to read this page
  • Verifiedobserved working, with test evidence
  • Partialworks with a stated deviation or approximation
  • Frame onlyconfigured and generated; produces no data
  • Not supportednot in this beta
  • Not verifiedmay work; not tested
Test environments

Gazebo results: Ubuntu 24.04, ROS 2 Jazzy, Gazebo Harmonic 8.11, gz_ros2_control, no GPU (software rendering), motion measured on simulation time against Gazebo's ground truth for 11 test robots. Windows results: Windows 11, ROS 2 Jazzy binary release (no Gazebo on Windows). Browser results: automated end-to-end tests in current Chrome and Edge on Windows 11.

Browser

Design in the browser

CapabilityStatusNotes
Links, joints and shapesVerifiedFixed, revolute, continuous and prismatic joints; box, cylinder and sphere shapes; mass; origins, axes and limits; undo/redo.
Mechanism presetsVerifiedDifferential, skid-steer, mecanum, Ackermann and tracked drives; 6-axis, SCARA and Cartesian gantry arms; parallel and vacuum grippers. How each behaves in Gazebo is below.
SensorsVerifiedLiDAR, camera, depth camera, IMU, GPS/GNSS, force/torque, range and contact sensors can be placed and are generated as frames and topics. Which ones produce data in Gazebo is below.
WorldVerifiedGround, walls, obstacles, ramps, tables, shelves, fixtures and payloads as boxes, cylinders and spheres; robot spawn pose. A world with a ground is needed for a Gazebo world file.
Software graphVerifiedROS 2 nodes, topics, services and actions; publishers/subscribers; parameters; QoS; presets for teleoperation, sensor processing and obstacle detection; which nodes system.launch.py starts and which are required.
ValidationVerifiedErrors block generation; warnings explain simulator limits; each problem names a fix and selects the item it is about.
Save, reload, import, exportVerifiedProjects in browser storage; project files import and export; a saved project reloads and regenerates identical files.
Kinematic previewVerifiedDrive the base for up to 60 s in RoboCanvas's kinematic engine with collision checks. No physics.
Mesh import, inverse kinematics, named poses, motion programsNot supportedNot in the browser app in this beta.
Firefox, Safari, phones and tabletsNot verifiedThe app is built for desktop Chrome and Edge. Other browsers may work and have not been tested.
Output

Generation and local build

CapabilityStatusNotes
ROS 2 packageVerifiedAn ament_cmake package: URDF and Xacro, display, simulation, bringup and system launch files, ros2_control configuration, a Gazebo world, an RViz configuration and the RoboCanvas nodes the package uses.
colcon build, Ubuntu 24.04 + JazzyVerified11 of 11 test robots, 0 warnings; check_urdf and gz sdf -k valid for all 11 (measured just before this release, whose only change to the output is that packages carry fewer unused RoboCanvas node files).
colcon build, Windows + JazzyVerified11 of 11 test robots build with colcon on Windows 11 with ROS 2 Jazzy at this release, and their kinematic-simulation variants launch, drive and run their arm trajectories. Gazebo does not run on Windows.
Deterministic outputVerifiedThe same project generates byte-identical files.
Other ROS 2 distributions (Humble, Kilted, Rolling)Not verifiedGenerated for Jazzy. Controller parameter names differ between distributions.
macOSNot supportedFor building and simulating. Designing in the browser on a Mac has not been tested.
Simulation

Robots in Gazebo Harmonic

Robot typeStatusMeasured
Differential driveVerifiedForward 0.900 m by odometry → 0.893 m true; spin 1.480 rad by odometry → 1.460 rad true. On a second rover the true spin was 6 % larger than odometry reported.
Ackermann steeringVerifiedArc yaw 0.823 rad true vs 0.825 rad odometry (fixed before the beta: steering joints were listed in the wrong order).
Skid-steerPartialTurning 99–103 % of commanded after a Gazebo-calibrated effective track width. The calibration is a simulator estimate: measure it on a real robot.
MecanumPartialMoves forward, sideways and turns. Rollers are approximated by anisotropic friction: the robot travels 2.6–3.6 % further than its wheel odometry reports (0.9 % in rotation).
TrackedPartialSimulated as a row of wheels (a sprocket and road wheels), not track physics: forward 0.903 m by odometry and 0.903 m true, stable; true turns 2–7 % larger than odometry after calibration. Box-shaped tracks are refused for Gazebo by validation.
Fixed-base arms (6-axis, planar, SCARA, gantry)VerifiedBases anchored to the world (fixed before the beta: a 6-axis arm used to spin on the floor). Joint trajectories followed in order over three repeated cycles (sent by a test script; see below).
SCARA and gantry tool reachVerifiedTools face down and reach the work surface (fixed before the beta). Projects made with older versions get a validation warning.
Mobile manipulatorVerifiedBase drive and arm trajectories both work; the LiDAR no longer sees the robot's own arm (validation now reports a LiDAR that would).
Parallel gripperPartialOpens and closes on command. Open defect: on a mobile manipulator with heavier fingers, re-opening after a close overshot to the open stop in 3 of 4 tries and settled back in about 0.6 s. Validation warns about it.
Grasping objectsNot verifiedFingers move; holding an object depends on contact and friction tuning that has not been done or tested.
Vacuum gripperNot supportedNo suction is simulated and no controller is generated for it; validation says so.
Obstacle stopVerifiedWith the drive's stop input connected to the obstacle detector (adding the preset alone does not stop the robot), the rover held at 0.685 m from a crate while still commanded forward; reverse and reset work.
Full software graph (system.launch.py)VerifiedA node whose package is missing is skipped with a message unless you mark it required; a required node that cannot start stops the launch with a clear error.
Sensors

Sensors

SensorGazeboNotes
LiDARVerifiedLaserScan bridged to ROS 2; distances to objects match the world. Validation reports a LiDAR whose field of view hits the robot itself.
IMUPartialPublishes orientation, angular velocity and linear acceleration (gravity included, as a real IMU reports it). A gravity-compensation setting on the sensor is not applied in Gazebo, and validation says so.
RGB cameraPartialImage and CameraInfo published. Image frame is the sensor frame (x forward), not an optical frame. Slow without a GPU.
Depth cameraPartialDepth image (32-bit float metres, unlike the 16-bit millimetres of many real cameras) and point cloud. The point cloud (~10 MB per message) arrived only with a reliable subscriber in our tests.
GPS / GNSSPartialPublishes a fix only when the project sets a datum (latitude/longitude); without one it is a frame only. Fix velocity is not bridged.
Range / ultrasonicFrame onlyNo data in Gazebo; validation says so. Use a real driver on hardware.
Contact / bumperFrame onlyNo data in Gazebo; validation says so.
Force/torqueFrame onlyNo data in Gazebo; validation says so.
Real sensor hardwareNot supportedRoboCanvas generates frames, topics and a hardware hand-off contract; the drivers for your actual sensors are yours to add.

RoboCanvas's own kinematic simulator (used by the browser preview and by kinematic-target packages) produces LiDAR, range and IMU data from its simple world model, with no physics.

Arms

Arm motion and tasks

CapabilityStatusNotes
Joint control through ros2_controlVerifiedA joint trajectory controller per arm; you command it with standard ROS 2 tools.
Following a multi-point trajectoryPartialVerified with a test script that sent home → pick → lift → home three times. The browser app has no screen for defining such a trajectory.
Pick-and-place sequences, repeat counts, gripper timingNot supportedThere is no task or sequence programming in this beta. Write your own node against the generated controllers.
Local tools

The local companion

CapabilityStatusNotes
Windows 11 + ROS 2 JazzyVerifiedThe downloadable companion, run with ROS 2 Jazzy's Python 3.12, paired, synced, built with colcon, launched and stopped a sample robot in automated tests of this release in Chrome and Edge.
Ubuntu + ROS 2 JazzyNot verifiedNot yet tested on Linux. On Linux, build manually with colcon (verified), as in the getting started guide.
Connecting from this websitePartialTested from a local address only. From this website your browser must allow the site to reach apps on your device (Chrome 142 and later ask); this is checked again after each publication. If it is refused, build manually as in the guide.
SecurityVerifiedListens on loopback only; answers only the origin it was started for; pairing code; session tokens. Another website cannot use it (tested).
Boundaries

What we do not claim

  • That you need no ROS 2 knowledge. You will build, launch and extend a ROS 2 package.
  • That every sensor works in simulation, or that simulated behaviour matches your real robot.
  • That generated packages are production-ready or safe to run on hardware without your own review and testing.
  • That the engine cannot be inspected: parts of it run in your browser as compiled Python bytecode.