Skip to content

SO-101 is a low-cost arm with 6 joints, made by TheRobotStudio. This model comes from SO-ARM100 by TheRobotStudio, under the Apache-2.0 licence. Not made by Lucen Robotics. Listed as a reference model for simulation.

arm6 joints0.632 kg in simulation50 Hz

Use it from the command line

Downloads every file and checks each one. Run it again and it downloads only what changed.

lucen pull lucen/so-101 ./so-101

No CLI yet? Install it.

SO-101, standing in its home pose

Move its joints, or let it fall under gravity, in your browser. About 10 MB the first time. Open the full simulator

README

README.md

SO-101

SO-101 is a low-cost arm with 6 joints, made by TheRobotStudio. This model comes from SO-ARM100 by TheRobotStudio, under the Apache-2.0 licence. The licence text is in LICENSE.

Not made by Lucen Robotics. Listed as a reference model for simulation.

The source is a URDF. MuJoCo's own compiler converted it to the MJCF in this repo. The servo values below are the STS3215's, from the maker's simulation files.

How it was set up

The files come from Simulation/SO101 in SO-ARM100, at commit eecbe3e. The robot card was drafted from the model by lucen robot init, as in Add your robot.

The model file does not state the values below. Each one comes from the source beside it.

SettingValueWhere it comes from
Basefixed to the worldan arm bolted to a table (a URDF cannot say)
Control rate50 Hzthe rate the Add your robot guide uses (a starting point)
Actionjoint position targetthe STS3215 servo's position mode: absolute targets
Stiffness (kp)17.8vendor's Simulation/SO101/joints_properties.xml, class sts3215: <position kp="17.8">
Damping (kd)0.6vendor's joints_properties.xml: <joint damping="0.60"> (its <position> has kv 0)
Armature0.028vendor's joints_properties.xml: armature="0.028"
Friction loss0.052vendor's joints_properties.xml: frictionloss="0.052"
What a policy sensesjoint positions, joint velocitiesthe STS3215's encoder
Commandjoint targetsa fixed-base arm commanded in joint space
Everything elseread from the model filethe MJCF MuJoCo's compiler converted from the URDF (visuals kept), joint order, qpos0 as the default pose, ranges and velocity limits from the URDF.

A value marked as a starting point is not the maker's own. The checks on the robot page show how it behaves.

One line was added to so101_new_calib.xml. The robot check asked for it by name:

<contact><exclude body1="base_link" body2="shoulder_link"/></contact>

The base and shoulder meshes overlap by 27.9 mm at rest. That jams shoulder_pan until the pair is excluded from contact.