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.
- 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
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.
Design in the browser
| Capability | Status | Notes |
|---|---|---|
| Links, joints and shapes | Verified | Fixed, revolute, continuous and prismatic joints; box, cylinder and sphere shapes; mass; origins, axes and limits; undo/redo. |
| Mechanism presets | Verified | Differential, 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. |
| Sensors | Verified | LiDAR, 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. |
| World | Verified | Ground, 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 graph | Verified | ROS 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. |
| Validation | Verified | Errors block generation; warnings explain simulator limits; each problem names a fix and selects the item it is about. |
| Save, reload, import, export | Verified | Projects in browser storage; project files import and export; a saved project reloads and regenerates identical files. |
| Kinematic preview | Verified | Drive the base for up to 60 s in RoboCanvas's kinematic engine with collision checks. No physics. |
| Mesh import, inverse kinematics, named poses, motion programs | Not supported | Not in the browser app in this beta. |
| Firefox, Safari, phones and tablets | Not verified | The app is built for desktop Chrome and Edge. Other browsers may work and have not been tested. |
Generation and local build
| Capability | Status | Notes |
|---|---|---|
| ROS 2 package | Verified | An 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 + Jazzy | Verified | 11 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 + Jazzy | Verified | 11 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 output | Verified | The same project generates byte-identical files. |
| Other ROS 2 distributions (Humble, Kilted, Rolling) | Not verified | Generated for Jazzy. Controller parameter names differ between distributions. |
| macOS | Not supported | For building and simulating. Designing in the browser on a Mac has not been tested. |
Robots in Gazebo Harmonic
| Robot type | Status | Measured |
|---|---|---|
| Differential drive | Verified | Forward 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 steering | Verified | Arc yaw 0.823 rad true vs 0.825 rad odometry (fixed before the beta: steering joints were listed in the wrong order). |
| Skid-steer | Partial | Turning 99–103 % of commanded after a Gazebo-calibrated effective track width. The calibration is a simulator estimate: measure it on a real robot. |
| Mecanum | Partial | Moves 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). |
| Tracked | Partial | Simulated 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) | Verified | Bases 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 reach | Verified | Tools face down and reach the work surface (fixed before the beta). Projects made with older versions get a validation warning. |
| Mobile manipulator | Verified | Base drive and arm trajectories both work; the LiDAR no longer sees the robot's own arm (validation now reports a LiDAR that would). |
| Parallel gripper | Partial | Opens 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 objects | Not verified | Fingers move; holding an object depends on contact and friction tuning that has not been done or tested. |
| Vacuum gripper | Not supported | No suction is simulated and no controller is generated for it; validation says so. |
| Obstacle stop | Verified | With 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) | Verified | A 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
| Sensor | Gazebo | Notes |
|---|---|---|
| LiDAR | Verified | LaserScan bridged to ROS 2; distances to objects match the world. Validation reports a LiDAR whose field of view hits the robot itself. |
| IMU | Partial | Publishes 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 camera | Partial | Image and CameraInfo published. Image frame is the sensor frame (x forward), not an optical frame. Slow without a GPU. |
| Depth camera | Partial | Depth 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 / GNSS | Partial | Publishes a fix only when the project sets a datum (latitude/longitude); without one it is a frame only. Fix velocity is not bridged. |
| Range / ultrasonic | Frame only | No data in Gazebo; validation says so. Use a real driver on hardware. |
| Contact / bumper | Frame only | No data in Gazebo; validation says so. |
| Force/torque | Frame only | No data in Gazebo; validation says so. |
| Real sensor hardware | Not supported | RoboCanvas 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.
Arm motion and tasks
| Capability | Status | Notes |
|---|---|---|
Joint control through ros2_control | Verified | A joint trajectory controller per arm; you command it with standard ROS 2 tools. |
| Following a multi-point trajectory | Partial | Verified 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 timing | Not supported | There is no task or sequence programming in this beta. Write your own node against the generated controllers. |
The local companion
| Capability | Status | Notes |
|---|---|---|
| Windows 11 + ROS 2 Jazzy | Verified | The 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 Jazzy | Not verified | Not yet tested on Linux. On Linux, build manually with colcon (verified), as in the getting started guide. |
| Connecting from this website | Partial | Tested 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. |
| Security | Verified | Listens on loopback only; answers only the origin it was started for; pairing code; session tokens. Another website cannot use it (tested). |
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.