Repository navigation
Kinema v0.5.0
0.4.0 taught a robot a job. This release is about the choices inside that job, and whether a real robot could carry it out:
- which of a pose's configurations the arm takes;
- what a rail, a gantry or a seventh axis does while the tool holds still;
- whether the motion is one the robot's motors can follow.
Find Solutions
In the IK panel: the other arm configurations that reach the same tool pose. A six-axis arm can reach one up to eight different ways — elbow bent one way or the other, wrist flipped, base swung round behind. Until now you got whichever one the solver landed on from wherever the arm happened to be.
PyRoki converges to the solution nearest its seed rather than listing branches. So the other solutions are found: seeds scattered across the joint limits, each solved, duplicates folded away. The result is a lower bound, and the panel says so. The ◀ ▶ arrows cycle through what turned up. Applying one only writes joint values, so Key All keyframes it and it bakes like anything else. On a KR120 at a working pose this finds the arm you're in plus the wrist-flipped one, with the tool holding to 0.008 mm across the switch.
Closes #4.
Held joints and the elbow swivel
Held joints, for rails, gantries and turntables. Pin a joint in the Joints panel and IK solves the rest of the chain around it. Move the pinned joint with its own slider or bone, and the tool stays put. Add IK Target pins rails for you: while a chain has more than six unheld joints, its prismatic joints are held, base first. The pin is keyframable, so a rail can be handed back to the solver mid-shot.
An elbow swivel for seven-axis arms. Add Elbow Swivel puts a ring on the shoulder-to-wrist line. Turning it swings the elbow round that line while the tool holds. Its single rotation channel is the elbow's angle, keyed as one curve. On the arm7 fixture the swivel keeps the tool within 0.0003 mm at every strength from 0.5 to 20. The free-floating elbow target it replaces, which never shipped, cost 0.55 mm at the default strength and 30.7 mm at 20.
Closes #48.
Joint velocity limits
A joint moving faster than its limit at the current frame is flagged in red in two places:
- its slider in the Joints panel;
- its own dial or arrow in the viewport, labelled with its speed as a percentage of the limit.
A new Velocity Limits section lists every joint's speed against its limit. Ignore Velocity Limits turns the warnings off for one rig.
The limits come from the description's <limit velocity>. Load Joint Limits… reads a MoveIt or ros2_control joint_limits.yaml over them, joint by joint. A keyed joint is measured exactly, from its own curve, however the frame was reached. A joint driven by live IK is measured against the pose one frame earlier, which playback and stepping provide. Rigs imported before this carry no limits: import them again, or load a joint_limits.yaml.
Addresses #45.
Dependencies
The bundled wheels are now exactly the versions uv.lock pins, and a test fails if the two disagree. They used to be whatever PyPI had newest when the payload was fetched, which is how 0.4.0 shipped lxml 6.1.3 while every test ran against 6.1.2. rospkg moves to 1.6.3.
Install
Download the zip for your platform and install it in Blender via Preferences → Add-ons → Install from Disk. Requires Blender 5.2 LTS or newer.
On Windows, keep Blender's configuration directory shallow or enable long-path support. The bundled wheels unpack to deeply nested paths, and a deep profile fails partway with WinError 206.
Full changelog: https://github.com/ebgenius/kinema/blob/v0.5.0/CHANGELOG.md