🤖 AI Summary
Existing iCub simulators (e.g., iCub SIM, Gazebo) rely on C++ and the YARP middleware, posing steep entry barriers for students. To address this, we propose pyCub—a pure-Python, end-to-end simulation framework built on PyBullet. pyCub fully models the iCub humanoid robot, including its rigid-body dynamics, stereo vision system, a high-fidelity 4000-point tactile skin, and all joint degrees of freedom—without requiring YARP or any C++ dependencies. It enables novice users to rapidly prototype and experiment with humanoid robot control and multimodal interaction. Complementing the framework, we provide a progressive pedagogical task suite and Docker-based containerized deployment, substantially reducing instructional overhead. The entire project—including source code, documentation, hands-on exercises, and demonstration videos—is open-sourced. pyCub has been successfully deployed in two consecutive undergraduate robotics courses and widely adopted by educators.
📝 Abstract
We present pyCub, an open-source physics-based simulation of the humanoid robot iCub, along with exercises to teach students the basics of humanoid robotics. Compared to existing iCub similators (iCub SIM, iCub Gazebo), which require C++ code and YARP as middleware, pyCub works without YARP and with Python code. The complete robot with all articulations has been simulated, with two cameras in the eyes and the unique sensitive skin of the iCub comprising 4000 receptors on its body surface. The exercises range from basic control of the robot in velocity, joint, and Cartesian space to more complex tasks like gazing, grasping, or reactive control. The whole framework is written and controlled with Python, thus allowing to be used even by people with small or almost no programming practice. The exercises can be scaled to different difficulty levels. We tested the framework in two runs of a course on humanoid robotics. The simulation, exercises, documentation, Docker images, and example videos are publicly available at https://rustlluk.github.io/pyCub.