Main Page: Difference between revisions

From BRUCE Wiki
Jump to navigation Jump to search
Line 52: Line 52:
* [https://github.com/ColinTogashi/PySHMXtreme PySHMXtreme] for multithreading
* [https://github.com/ColinTogashi/PySHMXtreme PySHMXtreme] for multithreading


=== Operation ===  
=== Operating ===
 
# Go to BRUCE folder <code>cd bruce-proto</code>.
# Run the shared memory module <code>python3 -m Util.memory_manager</code>.
# In the terminal A, start the Dynamixel actuator thread <code>python3 -m Startups.run_dxl</code>.
# In the terminal B, start the BEAR actuator thread <code>python3 -m Startups.run_bear</code>.
# In the terminal C, initialize BRUCE <code>python3 -m Play.initialize</code> and let BRUCE stand on the ground on its own.
# In the terminal C, start the state estimation thread <code>python3 -m Startups.run_estimation</code> and enter <code>yes</code>.
# In the terminal D, start the low-level control thread <code>python3 -m Play.DCM_walking.low_level</code> and enter <code>yes</code>.
# In the terminal E, start the high-level planning thread <code>python3 -m Play.DCM_walking.high_level</code> and enter <code>yes</code>.
# In the terminal F, start the top-level user input thread using the keyboard <code>python3 -m Play.DCM_walking.top_level_keyboard</code> OR the joystick <code>python3 -m Play.DCM_walking.top_level_joystick</code>, and enter <code>yes</code>.
# Play with BRUCE as instructed and press the E-Stop if necessary.


=== Calibration ===  
=== Calibration ===  

Revision as of 11:51, 20 December 2022

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 software 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.

Including hardware?

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 high-level footstep planning thread, and a low-level WBC (whole-body control) 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 Numbda for acceleration.

Working with BRUCE

Dependencies

  • Python 3.6+ with numpy, numba, osqp, termcolor, scipy, pyserial, etc.
  • DynamixelSDK for communication with the Dynamixel actuators
  • PyBEAR for communication with the BEAR actuators
  • BRUCE_SENSE for communication with the sensor kit on BRUCE.
  • PySHMXtreme for multithreading

Operating

  1. Go to BRUCE folder cd bruce-proto.
  2. Run the shared memory module python3 -m Util.memory_manager.
  3. In the terminal A, start the Dynamixel actuator thread python3 -m Startups.run_dxl.
  4. In the terminal B, start the BEAR actuator thread python3 -m Startups.run_bear.
  5. In the terminal C, initialize BRUCE python3 -m Play.initialize and let BRUCE stand on the ground on its own.
  6. In the terminal C, start the state estimation thread python3 -m Startups.run_estimation and enter yes.
  7. In the terminal D, start the low-level control thread python3 -m Play.DCM_walking.low_level and enter yes.
  8. In the terminal E, start the high-level planning thread python3 -m Play.DCM_walking.high_level and enter yes.
  9. In the terminal F, start the top-level user input thread using the keyboard python3 -m Play.DCM_walking.top_level_keyboard OR the joystick python3 -m Play.DCM_walking.top_level_joystick, and enter yes.
  10. Play with BRUCE as instructed and press the E-Stop if necessary.

Calibration

Troubleshooting

Developers

[Development in-depth]

Reference

The following is the list of papers working with BRUCE:

  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, UCLA, 2022.

Contributing to BRUCE Wiki