DCM based walking trajectory optimization of SurenaV
This repository contains the ROS based framework used for optimizing trajectory planning of Surena Humanoid Robot. Surena is an Iranian humanoid robot designed and fabricated in the Center of Advanced Systems and Technology of the University of Tehran. Feel free to visit our websites for more info about this project at Persian Website or English Website
The trajectory planning method used to generated gait patterns for bipedal robot utilizes Linear Inverted Pendulum Model (LIPM) which is a simplified model of humanoid robots. The trajectory planning and explicit formula for CoM, ZMP and DCM have been derived in [1]. The algorithm has several parameters:
- α: defines the start time of double support phase
- tstep: defines step duration
- tDS: defines double suport phase duration
- ∆z: defines CoM height
- rF: defines desired foot placements
There are four main ROS nodes in this package:
- trajectory_planner: generates CoM and Ankle Trajectory given any walking parameters (ROS Service: traj_gen), it also solves inverse kinematics and returns all joint angle values given a simulation time (ROS Service: jnt_angs)
- bullet_main: It is the main simulation environment using bullet physics engine. Thanks to this node we can calculate different cost functions for our optimization based on the full dynamics of bipeda robot.
- optimizer_server: solves the single-objective optimization
- multiobjective: solves the multi-objective optimization
⚠ This package depends on ROS, pybullet, pymoo and geneticalgorithm library.
⚠ Correct the path of your own robot's mesh files and urdf in bullet_sim/bullet_main.py.
- Place the urdf file of your robot in Trajectory-Optimization/bullet_sim/ and make sure that the first 12 joints are right and left leg joints respectively.
- build package with catkin:
catkin build
- start ROS master:
roscore
- invoke all nodes with the launch file:
roslaunch bullet_sim optimization.launch
This will start the multi-objective optimization with all four cost functions. To run the single-objective optimization replacemultiobjective.py
withoptimizer_server.py
. There is no need to re-build after the modifications.
Check out our conference papers to find out about final result of our work [2].
[1] J. Englsberger, C. Ott, A. Albu-Sch¨affer. (2013)."Three-dimensional bipedal walking control using Divergent Component of Motion". International Conference on Intelligent Robots and Systems.
[2] AH. Vedadi, K. Sinaei, P. AbdolahNejad, S. AbouMasoudi, AY. Koma. 2021. “Bipedal Locomotion Optimization by Exploitation of the Full Dynamics in DCM Trajectory Planning ”. ICRoM 2021. Tehran. Iran