Main Page: Difference between revisions
| Line 104: | Line 104: | ||
While BRUCE is in a healthy functional status, tuning the following parameters can potentially improve its performance, stability, or further tailor it to your specific demands. | While BRUCE is in a healthy functional status, tuning the following parameters can potentially improve its performance, stability, or further tailor it to your specific demands. | ||
* Walking related (most parameters are included in ./BRUCE-OP/Play/Walking/walking_macros.py) | |||
# <code>zf_l</code> & <code>zf_r</code>: swing final height | |||
# <code>bx_offset</code> & <code>by_offset</code>: velocity offset compensation in walking | |||
B. TBC | B. TBC | ||
Revision as of 00:02, 3 November 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 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
BRUCE has a total height of 70 cm 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. Khadas Edge2 with RK3588S is utilized as the onboard computing resource. A 14.8V 3000mAh 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. The wiring diagrams of BRUCE are shown in the images.
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
- Go to BRUCE-OP folder
cd BRUCE/BRUCE-OP. - Entering the following command
./bootup.shand follow the guidance. - You can now play with BRUCE and remember to press the E-STOP in emergencies.
- You can recover BRUCE by releasing the E-STOP and then repeating Step 2.
Full Operating
- Go to BRUCE-OP folder
cd BRUCE/BRUCE-OP. - Set up USB low latency
Startups/usb_low_latency.sh. - Run the shared memory module
python3 -m Startups.memory_manager. - In terminal 1, start the BEAR actuator thread
python3 -m Startups.run_bear. - In terminal 2, start the Dynamixel motor thread
python3 -m Startups.run_dxl. - In terminal 3, initialize BRUCE
python3 -m Play.initialize, enters, and let BRUCE stand on the ground on its own. If the joint angle is weird, a calibration needs to be conducted. - In terminal 3, start the state estimation thread
python3 -m Startups.run_estimation. - In terminal 4, start the low-level control thread
python3 -m Play.Walking.low_leveland entery. - In terminal 5, start the high-level planning thread
python3 -m Play.Walking.high_leveland entery. - In terminal 6, start the top-level user keyboard input thread
python3 -m Play.Walking.top_level. - You can now play with BRUCE and remember to press the E-STOP in emergencies.
- 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:
- Go through Steps 1-5 in Full Operating.
- In terminal 3, entering the following command
python3 -m Play.initializeand entern.
If the leg configuration is off, the related BEAR actuators need to be re-calibrated to the correct zero position with the following instructions:
- Disable the BEAR actuators by pressing and releasing the E-STOP.
- Adjust BRUCE to the calibration posture as shown in the image. Use the calibration tool if necessary.
- In terminal 3, run the calibration script
python3 -m Util.BEAR_calibration. - Select the actuator number that you wish to home and follow the guidance.
Performance Tunning [Futher Version]
While BRUCE is in a healthy functional status, tuning the following parameters can potentially improve its performance, stability, or further tailor it to your specific demands.
- Walking related (most parameters are included in ./BRUCE-OP/Play/Walking/walking_macros.py)
zf_l&zf_r: swing final heightbx_offset&by_offset: velocity offset compensation in walking
B. TBC
Troubleshooting
Developers
Khadas Edge2
If you want to make further development with the onboard Khadas Edge2, please refer to its online documents here. To use external keyboard and mouse, you can unplug the original 4-wire USB-C signal cable (the other one is 2-wire for power delivery) without disassembly.
State Estimation
Two versions of state estimation are provided. One is using complementary filter solely, the details of which are described in the 3rd paper of Reference. The other is using complementary filter for the base orientation (similar to the former) while Kalman filter for the base position and velocity, which greatly enhances the estimation performance. Interested users can refer to the document here.
IMU Calibration
It is recommended to calibrate the IMU bias on your BRUCE for better performance of the state estimation.
- Go to BRUCE-OP folder
cd BRUCE/BRUCE-OP. - Run the calibration script
python3 -m Util.imu_calibration. Make sure the IMU is placed as flat as possible and do not move the IMU in calibration.
Wireless ESTOP Lite
The Wireless ESTOP Lite system has been applied on BRUCE and other systems that are powered with BEAR actuators and has been a very handy gadget.
You can find more details about it here: https://github.com/Westwood-Robotics/Wireless_ESTOP
Downloads
- BRUCE V1.4 3D Model
- 3D Print Parts These are the parts that can be damaged during intense testing, so it is recommended to always print and keep some spare ones handy. You can also contact Westwood Robotics to purchase these parts if you don't have access to a 3D printer.
- Simulation Files
- 2D drawing of Signal Cables
- Calibration Tools
Reference
Publication on BRUCE development:
- X. Zhang, "Application of Proprioception Quasi-Direct Drive Actuators on Dynamic Robotic Systems," Ph.D. Dissertation, University of California, Los Angeles (UCLA), 2019.
- 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.
- 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.
- J. Shen, "Locomotion Analysis and Control of a Miniature Bipedal Robot," Ph.D. Dissertation, University of California, Los Angeles (UCLA), 2022.
- J. Zhang, "Towards Application on Optimization-Based Methods for Motion Planning of Legged Robots," Ph.D. Dissertation, University of California, Los Angeles (UCLA), 2023.
- J. Zhang, J. Shen, Y. Liu and D. Hong, "Design of a Jumping Control Framework with Heuristic Landing for Bipedal Robots," 2023 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), 2023, pp. TBD.