Main Page: Difference between revisions

From BRUCE Wiki
Jump to navigation Jump to search
Line 13: Line 13:
Read the full text of [https://www.gnu.org/licenses/gpl-3.0.html the GNU GPL version 3] for details.
Read the full text of [https://www.gnu.org/licenses/gpl-3.0.html the GNU GPL version 3] for details.


== Introduction ==
= Introduction =


=== Hardware Platform ===
=== Hardware Platform ===

Revision as of 17:32, 7 March 2023

Welcome to BRUCE (Bipedal Robot Unit with Compliannce Enhanced) Wiki, where we update infomation on hardware and software of BRUCE.

About BRUCE Project

BRUCE is an open-platform project led by Westwood Robotics. It focuses on the development of a low-cost kid-size humanoid robot for research and education.

Licensing

BRUCE is dual-licensed under both commercial and open-source licenses. The commercial BRUCE license gives you the full rights to create and distribute the platform on your own terms without any open-source license obligations. BRUCE is also available for free under version 3 (or later version) of the GNU General Public License (GPL), which is ideal for use cases such as open-source projects with open-source distribution, student/academic purposes, hobby projects, internal research projects without external distribution, or other projects where all GPL obligations can be met. Read the full text of the GNU GPL version 3 for details.

Introduction

Hardware Platform

Photo of BRUCE platform

BRUCE has a total height of 660 mm adapting an average human body proportion. It is composed of a torso, two 3-DoF arms, and two 5-DoF legs. Each arm of BRUCE has a ball shoulder joint and a single DoF elbow joint. Each leg of BRUCE has a spherical hip joint, a single DoF knee joint, and a single DoF ankle joint. Each foot has a line contact with the ground. To have better torque transparency and compliance to the unknown environment, proprioceptive actuation is equipped for each leg joint, using the Koala BEAR actuators. Moreover, BRUCE's legs are designed to have low inertia for performing highly dynamic motions. A 2-DoF parallel actuation configuration realized by a cable-driven differential pulley system is applied to the hip joint to reduce the mass and inertia of the femur link. Meanwhile, two pairs of 4-bar linkage mechanisms are used to relocate the ankle actuator to the femur link for the light weight of the tibia link. Finally, to ensure reliable ground contact information, a sensing foot is designed based on the working principle of an electronic switch.

BRUCE is fully untethered. All the electronics are directly mounted onto the torso for easy installation and better weight distribution. A mini PC with an Intel Core i5-7260U Dual-Core CPU at 2.2 GHz is utilized as the onboard computing resource. A 14.8 V 2200 mAh LiPo battery is used to power the whole system with a running time of approximately 20 minutes. For the sake of safety during operation, a wireless E-Stop built in-house is mounted onboard as well to cut the power in emergencies. In total, BRUCE has a net weight of around 4.8 kg.

Software Architecture

To make BRUCE favorable to dynamic behaviors which require fast response, the overall software framework is developed in a multithreaded environment, which includes a state estimation thread combined with robot model computation, a low-level whole-body control thread, a high-level footstep planning thread, and a top-level user input thread. The main advantage of multithreading is that the idle time of the CPU can be kept to minimum since the waiting time for sensor response can be well distributed and utilized, which leads to faster overall execution as the CPU would have been idle if only a single thread was executed. Data communication utilizes a custom shared memory library. All programs are implemented in Python while some parts, including kinematics, dynamics, and state estimation, are precompiled using Numba for acceleration.

Working with BRUCE

BRUCE is ready to go with the default software provided. Below are the detailed instructions on how to operate and maintain the platform.

Attention

  • Always remember to press the E-STOP immediately in emergencies!
  • Your system may need some fine tuning before it can perform perfectly, i.e., due to slight differences in joint resistance and part tolerances, systems may vary in tuning parameters.
  • The current state estimation is relatively naive, and we are working on a better version to improve stability.

Dependencies

  • Python 3.6+ with pip, numpy, pyserial, termcolor, matplotlib, scipy, osqp, numba, dynamixel, posix_ipc
  • PyBEAR for communication with the BEAR actuators

Operating

Quick Launch

  1. Go to BRUCE-OP folder cd BRUCE-OP.
  2. Entering the following command ./bootup.sh and follow the guidance.
  3. You can now play with BRUCE and remember to press the E-STOP in emergencies.
  4. You can recover BRUCE by releasing the E-STOP and then repeating Step 2.

Full Operating

  1. Go to BRUCE-OP folder cd BRUCE-OP.
  2. Set up USB low latency Startups/usb_low_latency.sh.
  3. Run the shared memory module python3 -m Startups.memory_manager.
  4. In terminal 1, start the BEAR actuator thread python3 -m Startups.run_bear.
  5. In terminal 2, start the Dynamixel motor thread python3 -m Startups.run_dxl.
  6. In terminal 3, initialize BRUCE python3 -m Play.initialize, enter s, and let BRUCE stand on the ground on its own. If the joint angle is weird, a calibration needs to be conducted.
  7. In terminal 3, start the state estimation thread python3 -m Startups.run_estimation.
  8. In terminal 4, start the low-level control thread python3 -m Play.Walking.low_level and enter y.
  9. In terminal 5, start the high-level planning thread python3 -m Play.Walking.high_level and enter y.
  10. In terminal 6, start the top-level user keyboard input thread python3 -m Play.Walking.top_level.
  11. You can now play with BRUCE and remember to press the E-STOP in emergencies.
  12. You can recover BRUCE by releasing the E-STOP and then repeating Steps 4-10.

Calibration

The nominal posture for BRUCE is all limbs completely sprawled out as shown in the image. Note that the hip, knee, and ankle joints are aligned. You can check it with the following instructions:

  1. Go through Steps 1-5 in Full Operating.
  2. In terminal 3, entering the following command python3 -m Play.initialize and enter n.

If the leg configuration is off, the related BEAR actuators need to be re-calibrated to the correct zero position with the following instructions:

  1. Disable the BEAR actuators by pressing and releasing the E-STOP.
  2. Adjust BRUCE to the calibration posture as shown in the image. Use the calibration tool if necessary.
  3. In terminal 3, run the homing script python3 -m Util.homing_calibration.
  4. Enter the actuator number that you wish to home and follow the guidance.

Troubleshooting

Developers

[Development in-depth]

Reference

Publication on BRUCE development:

  1. Y. Liu, J. Shen, J. Zhang, X. Zhang, T. Zhu and D. Hong, "Design and Control of a Miniature Bipedal Robot with Proprioceptive Actuation for Dynamic Behaviors," 2022 IEEE International Conference on Robotics and Automation (ICRA), 2022, pp. 8547-8553.
  2. J. Shen, J. Zhang, Y. Liu, and D. Hong, "Implementation of a Robust Dynamic Walking Controller on a Miniature Bipedal Robot with Proprioceptive Actuation," 2022 IEEE-RAS International Conference on Humanoid Robots (Humanoids), 2022, pp. 39-46.
  3. J. Shen, "Locomotion Analysis and Control of a Miniature Bipedal Robot," Ph.D. Dissertation, University of California, Los Angeles (UCLA), 2022.

Contributing to BRUCE Wiki