Kokon
A free, local alternative to Nano Banana and Generative Fill. Brush an area, type the change, and your own GPU does the edit. One installer for Windows, Mac and Linux.
Design and customize robot models to download and run on your own computer
AI summary · website content
DesignHTML · JavaScriptGitHub @srivatsa-dotcomOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗No install needed. Click the link, design your robot, and download the ROS 2 package.
A single-page web app that generates URDF models and ready-to-build ROS 2 packages for:
Enter the robot's dimensions and masses, check it in the live 3D preview (with joint sliders and geometry checks), pick RViz, Gazebo, or both, and download a zip containing:
urdf/<robot>.urdf with inertia computed from geometry, plus Gazebo plugins (diff drive, joint position controllers, lidar/camera/IMU) when Gazebo is selectedlaunch/display.launch.py (robot_state_publisher + joint_state_publisher_gui + RViz)launch/gazebo.launch.py (Gazebo + spawn + ros_gz_bridge, optional RViz)worlds/empty.sdf, rviz/*.rviz, package.xml, CMakeLists.txt, README.mdrobot_spec.json to re-import and edit laterFor the 6-DOF arm, humanoid and semi-humanoid it can also generate a <robot>_moveit_config package:
gz_ros2_control (Gazebo)JointTrajectoryController per group, wired to MoveItdemo.launch.py (MoveIt + RViz, no physics) and gazebo.launch.py (Gazebo + MoveIt + RViz)Gazebo worlds included in every package (pick the default in the app, switch at launch with world:=<name>):
| World | Contents |
|---|---|
empty | Flat ground |
factory | Conveyor lines, CNC machines, work tables, bin racks, marked robot cell |
warehouse | Four rows of pallet racks with boxes, 2 m aisles, floor lanes, loading dock |
office | Desk clusters with monitors and chairs, meeting room, cabinets, sofa, plants |
Worlds are built from simple shapes, so they load offline with no model downloads.
Pick Your own world in Step 3 (or drag a file onto the world picker) and upload:
.sdf or .world), or.zip that holds the world file together with the models and meshes it uses (keep the folder layout the world expects).The app then:
<include> models still load in Gazebo, they just are not drawn in the browser);default inside the file, so the launch files and bridges find it;worlds/custom_assets/, rewrites relative mesh paths to point there, and adds that folder (and custom_assets/models) to the Gazebo resource path so model:// URIs resolve;x, y and yaw arguments.Launch it with world:=custom. Files with absolute paths (file:///home/...) only work on the computer they point to.
index.html is a single file: open it in a browser, or serve the folder with any static server, for example
python3 -m http.server 8000
It loads three.js and JSZip from public CDNs, so it needs internet access.
mkdir -p ~/ros2_ws/src && cd ~/ros2_ws/src
unzip ~/Downloads/<package>.zip
cd ~/ros2_ws && colcon build --packages-select <package>
source install/setup.bash
ros2 launch <package> display.launch.py # RViz
ros2 launch <package> gazebo.launch.py # Gazebo
Move the robot with the keyboard (in a new terminal, while Gazebo runs):
ros2 run teleop_twist_keyboard teleop_twist_keyboardros2 run <package> joint_teleop. Keys: w/s pick a joint, a/d move it, q/e change the step size, z zeroes the joint, h sends every joint home. The semi-humanoid also drives its base with i , j l and stops with k. It works with the plain Gazebo package (joint position controllers) and with the MoveIt package (trajectory controllers).joint_teleop press i / , to walk forward / back, j / l to turn, u / o to walk and turn, k to stop, h to stop and straighten the legs. It walks slowly (about 2 cm/s) with a weight-shifting gait and uses /joint_states and /imu to set each foot down flat. Tested in MuJoCo; keep Gazebo's physics step at 1 ms.The colors you pick in the app are written into every <visual> of the URDF, so RViz and Gazebo show the same colors as the preview. If a part shows up plain white in RViz, RViz has no transform for that link yet: check that the joint states are being published (the joint slider window for RViz, or the Gazebo bridge for simulation).