GuideGetting started

From a sample robot to a ROS 2 package on your machine.

Each step says what to press or type and what you should see. Steps 1–7 need only a browser; steps 8–9 need ROS 2.

Step 01

Check the prerequisites

ForYou need
Steps 3–7A desktop or laptop with a current Chrome or Edge. The first visit downloads about 15 MB (the engine runs in your browser).
Steps 8–9 (recommended)Ubuntu 24.04 with ROS 2 Jazzy and Gazebo Harmonic, installed as below. A GPU is not required, but simulation is slow without one.
Steps 8–9 on WindowsROS 2 Jazzy for Windows plus an overlay workspace with xacro and joint_state_publisher (the Windows binaries do not include them). Building and RoboCanvas's kinematic simulator work; Gazebo does not run on Windows.

On Ubuntu 24.04, after adding the ROS 2 apt repository, install everything the generated packages use:

sudo apt update
sudo apt install -y ros-jazzy-desktop ros-dev-tools \
  ros-jazzy-xacro ros-jazzy-joint-state-publisher-gui \
  ros-jazzy-ros2-control ros-jazzy-ros2-controllers \
  ros-jazzy-gz-ros2-control ros-jazzy-ros-gz
Each package installs without errors. source /opt/ros/jazzy/setup.bash && gz sim --version prints a Gazebo Sim 8.x version.
Step 02

Know the limits before you start

  • RoboCanvas generates a ROS 2 package. It does not build or run it for you unless you use the optional companion, and the app always says which of these happened.
  • The preview in the browser is kinematic: no physics, no contact, no grasping.
  • In Gazebo, range, bumper and force/torque sensors give no data; vacuum grippers do not suck; grasping is untested; tracks are approximated by wheels; a parallel gripper can overshoot when it re-opens. There is no pick-and-place or task sequencing.
  • You will need basic ROS 2 skills: a terminal, colcon, source, ros2 launch.

The full list, with measurements, is on the capabilities and limits page.

Step 03

Open the app

Go to Open RoboCanvas. The page shows Starting… while the engine loads in your tab.

After a few seconds the dashboard appears with New project, Import, the sample robots and an empty project list.
Step 04

Load a sample robot

Under Sample projects, press Open a copy on R1 Scout, a differential-drive rover with a LiDAR, an IMU and a range finder.

The editor opens on the Robot tab: a link tree on the left, the robot in the 3D view, the inspector on the right and the Problems panel at the bottom. The copy is saved in your browser, not on our side.

Other samples are listed with what was verified for each. You can also press New project and pick a template.

Step 05

Make a simple change

  1. In the link tree, click chassis.
  2. In the inspector, change Mass (kg), for example to 12, and press Enter.
  3. Drag in the 3D view to orbit; move a wheel joint slider to see the joint turn.
  4. Press Save (or Ctrl+S).
The title shows an unsaved marker after the edit and clears it after saving. Undo (Ctrl+Z) and Redo (Ctrl+Y) work. Reloading the page brings the saved project back.
Step 06

Validate

Validation runs after every change. Open the Problems panel at the bottom.

R1 Scout shows no errors and a few warnings, for example that its range finder is a frame only in Gazebo and that nothing publishes cmd_vel yet (you will publish it from a terminal in step 9). Warnings do not block generation; errors do. Click a problem to select the item it is about and read its fix.

Try breaking it on purpose: select left_wheel_joint, set its Type to fixed, and watch two errors appear and the status bar change to generate: blocked. Then press Undo.

Step 07

Generate and download the ROS 2 package

  1. Press Generate.
  2. Read the dialog: Generated in this browser: done, and colcon build, ros2 launch and Gazebo: not run. It lists the launch files, the files in the package (expand Files in the package) and the archive's SHA-256.
  3. Press Download ZIP.
Your browser saves r1_scout_description.zip: a folder r1_scout_description/ with package.xml, CMakeLists.txt, urdf/, launch/, config/, worlds/ and nodes/, plus a short ROBOCANVAS_EXPORT.txt saying what was and was not done.
Step 08

Build it locally

Ubuntu 24.04 + ROS 2 Jazzy (verified)

mkdir -p ~/rc_ws/src
cd ~/rc_ws/src
unzip ~/Downloads/r1_scout_description.zip -d .
cd ~/rc_ws
source /opt/ros/jazzy/setup.bash
rosdep install --from-paths src --ignore-src -y   # optional: installs anything still missing
colcon build --packages-select r1_scout_description
source install/setup.bash
Summary: 1 package finished with no errors. (If rosdep says it is not initialised, run sudo rosdep init && rosdep update once, or skip that line: the apt install in step 1 already covers the sample.)

Windows + ROS 2 Jazzy (verified for building; no Gazebo)

In a terminal where ROS 2 Jazzy for Windows and your xacro overlay are set up, from a workspace folder whose src\ contains the unzipped package:

colcon build --packages-select r1_scout_description --cmake-args -G Ninja
call install\local_setup.bat
Summary: 1 package finished.
Step 09

Run it

See the robot in RViz (any platform)

ros2 launch r1_scout_description display.launch.py
RViz opens showing the robot model; the joint state publisher window lets you move the joints.

Simulate it in Gazebo (Ubuntu)

ros2 launch r1_scout_description simulation.launch.py
Gazebo opens with the world and the rover. Within about 30 seconds the terminal reports the controllers as active (Configured and activated). Without a GPU this can take longer; add gui:=false to run the simulation without its window.

In a second terminal (after source ~/rc_ws/install/setup.bash), drive it forward for three seconds and look at the LiDAR:

ros2 topic pub -r 10 -t 30 /cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.3}}"
ros2 topic echo --once /lidar/scan --field ranges | head
The rover drives forward about 0.9 m and stops. The LiDAR topic prints distances. (R1 Scout's LiDAR publishes /lidar/scan; other projects use their own topic names, which ros2 topic list shows.) To drive by keyboard instead: ros2 run teleop_twist_keyboard teleop_twist_keyboard.

No Gazebo? Use RoboCanvas's kinematic simulator (Windows or Linux)

In the app, select Settings & targets in the tree, set Simulation target to Kinematic (native), generate and download again, rebuild, and run the same simulation.launch.py. It moves the robot ideally (no physics) and simulates LiDAR, range and IMU readings against the world.

Step 10

Report what happened

Whether it worked or not, tell us on the report page: what you built, which step failed, what you expected and what you saw. It prepares an email for you to send yourself.

Optional

Build and launch from the browser

The Run on ROS 2 tab can sync your project to a folder on your computer, run colcon build and ros2 launch, and show the logs, through a small local program called the companion. You do not need it to use RoboCanvas.

Beta status

The companion is verified on Windows 11 with ROS 2 Jazzy. It has not yet been tested on Linux; on Linux, the manual build above is the verified path.

  1. Download robocanvas-companion-beta1-cp312.zip (1.0 MB) and check it:
    sha256sum robocanvas-companion-beta1-cp312.zip        # Linux
    certutil -hashfile robocanvas-companion-beta1-cp312.zip SHA256   # Windows
    It must print 4bce74704f7a0902216ec13c55ebe36f26946850e746d3ba56a0bd831ad4b602.
  2. Unzip it. It needs Python 3.12, which is the Python ROS 2 Jazzy uses on both Ubuntu 24.04 and Windows. Open a terminal where ROS 2 is set up (Linux: source /opt/ros/jazzy/setup.bash; Windows: the ROS 2 Jazzy environment), go into the unzipped folder and start it. The exact command for this page, with its address, is also shown in the app's Run on ROS 2 tab:
    cd robocanvas-companion
    python3 -m robocanvas.companion --workspace ~/robocanvas-workspace --web-origin https://robocanvas-beta.robocanvas.workers.dev
    (On Windows use python and a Windows path for --workspace.)
  3. The companion prints a pairing code such as K7QM-2XRB. In the app: Run on ROS 2 → Check → type the code → Pair. If your browser asks whether this site may connect to apps on your device, allow it: that is the companion.
  4. Sync project… → Send, then Build… → Build, then Launch…, and Stop when done.
The status chip shows Companion: connected. The build row ends succeeded · exit code 0; the launch log shows the nodes starting; Stop ends every process the companion started.

The companion is RoboCanvas's engine compiled to Python bytecode, plus the runtime nodes as source. It listens only on your computer (127.0.0.1), answers only this site, and needs the pairing code.

When something goes wrong

Troubleshooting

You seeDo this
"RoboCanvas could not start"Use current Chrome or Edge on a desktop; reload. The message names the file that failed; include it in your report.
A project disappearedProjects live in this browser's storage for this site. Another browser, a private window or clearing site data shows a different (empty) list. Use Export to keep copies; Settings can request persistent storage.
"This file cannot be opened" on importThe file is not a RoboCanvas project or is damaged; nothing was stored.
Generate says "The package cannot be generated yet"There is at least one error (red) in the Problems panel; the dialog lists them. Click one to select what it is about and apply its fix, or press Undo.
colcon: package not found / xacro not foundSource ROS first (source /opt/ros/jazzy/setup.bash) and install the packages from step 1. On Windows, set up the xacro overlay.
Gazebo starts but the robot does not moveWait until the terminal says the controllers are active; check ros2 control list_controllers. Publish to the topic your project's drive listens on (ros2 topic list).
Gazebo is very slowExpected without a GPU, especially with cameras. Use gui:=false, or remove camera sensors while testing motion.
No data from a range, bumper or force/torque sensorExpected: these are frames only in Gazebo (the Problems panel says so).
Companion: "not found"Start the companion; check it printed Listening on http://127.0.0.1:8766; allow the browser's request to connect to apps on your device.
Companion: "ORIGIN_NOT_ALLOWED"Restart it with --web-origin set to exactly the address of this site, as shown in the Run on ROS 2 tab.
Companion: "needs Python 3.12"Start it with the Python of your ROS 2 Jazzy installation.
Build fails with tool_missingThe companion cannot find colcon: start it from a terminal where ros2 and colcon work.

Still stuck? Report it; include the step number and the exact message.