-
Notifications
You must be signed in to change notification settings - Fork 46
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
iCubGazeboV2_5 robot falling before completing walking trajectory #28
Comments
|
If you do not run RViz and all the additional software, the walking simulation is working correctly? |
Can you paste the last lines before the failure? It is quite possible that when the robot fall, the module commits suicide due to a problem in the computation of the ZMP. But this is a consequence of the fall, not the cause. Since we are using the |
I was unable to run the WalkingModule because of the changes made in iDynTree OptimalControl resulting in the following leak, YARP_CLOCK=/clock val rind WalkingModule kingModule
==27481== Memcheck, a memory error detector
==27481== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
==27481== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info
==27481== Command: WalkingModule
==27481==
yarp: Port /iiticublap092/WalkingModule/27481/clock:i active at tcp://10.255.111.63:10159/
Success: port-to-port persistent connection added.
yarp: Waiting for clock server to start broadcasting data ...
yarp: Receiving input from /clock to /iiticublap092/WalkingModule/27481/clock:i using tcp
[INFO]The model is found in: /home/pramadoss/iit_ws/robotology-superbuild/build/install/share/iCub/robots/iCubGazeboV2_5/model.urdf
[WARNING] :: createReducedModelAndSensors : The joint l_leg_ft_sensor is not in the reduced model, the associated joint sensor won't be present
[WARNING] :: createReducedModelAndSensors : The joint r_leg_ft_sensor is not in the reduced model, the associated joint sensor won't be present
[WARNING] :: createReducedModelAndSensors : The joint l_foot_ft_sensor is not in the reduced model, the associated joint sensor won't be present
[WARNING] :: createReducedModelAndSensors : The joint r_foot_ft_sensor is not in the reduced model, the associated joint sensor won't be present
[WARNING] :: createReducedModelAndSensors : The joint l_arm_ft_sensor is not in the reduced model, the associated joint sensor won't be present
[WARNING] :: createReducedModelAndSensors : The joint r_arm_ft_sensor is not in the reduced model, the associated joint sensor won't be present
[INFO]RemoteControlBoard is ENABLING the writeStrict option for all commands
yarp: Port /walking-coordinator/remoteControlBoard/icubSim/torso/rpc:o active at tcp://10.255.111.63:10137/
yarp: Port /walking-coordinator/remoteControlBoard/icubSim/torso/command:o active at tcp://10.255.111.63:10138/
yarp: Port /walking-coordinator/remoteControlBoard/icubSim/torso/stateExt:i active at tcp://10.255.111.63:10139/
yarp: Sending output from /walking-coordinator/remoteControlBoard/icubSim/torso/rpc:o to /icubSim/torso/rpc:i using tcp
yarp: Sending output from /walking-coordinator/remoteControlBoard/icubSim/torso/command:o to /icubSim/torso/command:i using udp
yarp: Receiving input from /icubSim/torso/stateExt:o to /walking-coordinator/remoteControlBoard/icubSim/torso/stateExt:i using udp
[INFO]created device <remote_controlboard>. See C++ class yarp::dev::RemoteControlBoard for documentation.
[INFO]RemoteControlBoard is ENABLING the writeStrict option for all commands
yarp: Port /walking-coordinator/remoteControlBoard/icubSim/left_arm/rpc:o active at tcp://10.255.111.63:10140/
yarp: Port /walking-coordinator/remoteControlBoard/icubSim/left_arm/command:o active at tcp://10.255.111.63:10141/
yarp: Port /walking-coordinator/remoteControlBoard/icubSim/left_arm/stateExt:i active at tcp://10.255.111.63:10142/
yarp: Sending output from /walking-coordinator/remoteControlBoard/icubSim/left_arm/rpc:o to /icubSim/left_arm/rpc:i using tcp
yarp: Sending output from /walking-coordinator/remoteControlBoard/icubSim/left_arm/command:o to /icubSim/left_arm/command:i using udp
yarp: Receiving input from /icubSim/left_arm/stateExt:o to /walking-coordinator/remoteControlBoard/icubSim/left_arm/stateExt:i using udp
[INFO]created device <remote_controlboard>. See C++ class yarp::dev::RemoteControlBoard for documentation.
[INFO]RemoteControlBoard is ENABLING the writeStrict option for all commands
yarp: Port /walking-coordinator/remoteControlBoard/icubSim/right_arm/rpc:o active at tcp://10.255.111.63:10143/
yarp: Port /walking-coordinator/remoteControlBoard/icubSim/right_arm/command:o active at tcp://10.255.111.63:10144/
yarp: Port /walking-coordinator/remoteControlBoard/icubSim/right_arm/stateExt:i active at tcp://10.255.111.63:10145/
yarp: Sending output from /walking-coordinator/remoteControlBoard/icubSim/right_arm/rpc:o to /icubSim/right_arm/rpc:i using tcp
yarp: Sending output from /walking-coordinator/remoteControlBoard/icubSim/right_arm/command:o to /icubSim/right_arm/command:i using udp
yarp: Receiving input from /icubSim/right_arm/stateExt:o to /walking-coordinator/remoteControlBoard/icubSim/right_arm/stateExt:i using udp
[INFO]created device <remote_controlboard>. See C++ class yarp::dev::RemoteControlBoard for documentation.
[INFO]RemoteControlBoard is ENABLING the writeStrict option for all commands
yarp: Port /walking-coordinator/remoteControlBoard/icubSim/left_leg/rpc:o active at tcp://10.255.111.63:10146/
yarp: Port /walking-coordinator/remoteControlBoard/icubSim/left_leg/command:o active at tcp://10.255.111.63:10147/
yarp: Port /walking-coordinator/remoteControlBoard/icubSim/left_leg/stateExt:i active at tcp://10.255.111.63:10148/
yarp: Sending output from /walking-coordinator/remoteControlBoard/icubSim/left_leg/rpc:o to /icubSim/left_leg/rpc:i using tcp
yarp: Sending output from /walking-coordinator/remoteControlBoard/icubSim/left_leg/command:o to /icubSim/left_leg/command:i using udp
yarp: Receiving input from /icubSim/left_leg/stateExt:o to /walking-coordinator/remoteControlBoard/icubSim/left_leg/stateExt:i using udp
[INFO]created device <remote_controlboard>. See C++ class yarp::dev::RemoteControlBoard for documentation.
[INFO]RemoteControlBoard is ENABLING the writeStrict option for all commands
yarp: Port /walking-coordinator/remoteControlBoard/icubSim/right_leg/rpc:o active at tcp://10.255.111.63:10149/
yarp: Port /walking-coordinator/remoteControlBoard/icubSim/right_leg/command:o active at tcp://10.255.111.63:10150/
yarp: Port /walking-coordinator/remoteControlBoard/icubSim/right_leg/stateExt:i active at tcp://10.255.111.63:10151/
yarp: Sending output from /walking-coordinator/remoteControlBoard/icubSim/right_leg/rpc:o to /icubSim/right_leg/rpc:i using tcp
yarp: Sending output from /walking-coordinator/remoteControlBoard/icubSim/right_leg/command:o to /icubSim/right_leg/command:i using udp
yarp: Receiving input from /icubSim/right_leg/stateExt:o to /walking-coordinator/remoteControlBoard/icubSim/right_leg/stateExt:i using udp
[INFO]created device <remote_controlboard>. See C++ class yarp::dev::RemoteControlBoard for documentation.
[INFO]created device <remotecontrolboardremapper>. See C++ class yarp::dev::RemoteControlBoardRemapper for documentation.
yarp: Port /walking-coordinator/leftFootWrench:i active at tcp://10.255.111.63:10152/
yarp: Receiving input from /wholeBodyDynamics/left_foot/cartesianEndEffectorWrench:o to /walking-coordinator/leftFootWrench:i using tcp
yarp: Port /walking-coordinator/rightFootWrench:i active at tcp://10.255.111.63:10153/
yarp: Receiving input from /wholeBodyDynamics/right_foot/cartesianEndEffectorWrench:o to /walking-coordinator/rightFootWrench:i using tcp
yarp: Port /walking-coordinator/rpc active at tcp://10.255.111.63:10154/
==27481== Jump to the invalid address stated on the next line
==27481== at 0x0: ???
==27481== by 0x5BF77A3: iDynTree::optimalcontrol::ConstraintsGroup::addConstraint(std::shared_ptr<iDynTree::optimalcontrol::Constraint>, iDynTree::optimalcontrol::TimeRange const&) (in /home/pramadoss/iit_ws/robotology-superbuild/build/install/lib/libidyntree-optimalcontrol.so)
==27481== by 0x5BAD28A: iDynTree::optimalcontrol::OptimalControlProblem::addConstraint(std::shared_ptr<iDynTree::optimalcontrol::Constraint>) (in /home/pramadoss/iit_ws/robotology-superbuild/build/install/lib/libidyntree-optimalcontrol.so)
==27481== by 0x4E53A0F: UnicycleOptimization::UnicycleOptimization() (in /home/pramadoss/iit_ws/loc2/unicycle-footstep-planner/install/lib/libUnicyclePlanner.so)
==27481== by 0x4E4EB9A: UnicyclePlanner::UnicyclePlanner() (in /home/pramadoss/iit_ws/loc2/unicycle-footstep-planner/install/lib/libUnicyclePlanner.so)
==27481== by 0x4E6DDBC: UnicycleTrajectoryGenerator::UnicycleTrajectoryGenerator() (in /home/pramadoss/iit_ws/loc2/unicycle-footstep-planner/install/lib/libUnicyclePlanner.so)
==27481== by 0x467E94: TrajectoryGenerator::TrajectoryGenerator() (in /home/pramadoss/iit_ws/robotology/walking-controllers/build/install/bin/WalkingModule)
==27481== by 0x467FC5: _ZSt11make_uniqueI19TrajectoryGeneratorIEENSt9_MakeUniqIT_E15__single_objectEDpOT0_ (in /home/pramadoss/iit_ws/robotology/walking-controllers/build/install/bin/WalkingModule)
==27481== by 0x457999: WalkingModule::configure(yarp::os::ResourceFinder&) (in /home/pramadoss/iit_ws/robotology/walking-controllers/build/install/bin/WalkingModule)
==27481== by 0x761F251: yarp::os::RFModule::runModule(yarp::os::ResourceFinder&) (in /home/pramadoss/iit_ws/robotology-superbuild/build/install/lib/libYARP_OS.so.3.1.100)
==27481== by 0x4141FE: main (in /home/pramadoss/iit_ws/robotology/walking-controllers/build/install/bin/WalkingModule)
==27481== Address 0x0 is not stack'd, malloc'd or (recently) free'd
==27481==
==27481==
==27481== Process terminating with default action of signal 11 (SIGSEGV)
==27481== Bad permissions for mapped region at address 0x0
==27481== at 0x0: ???
==27481== by 0x5BF77A3: iDynTree::optimalcontrol::ConstraintsGroup::addConstraint(std::shared_ptr<iDynTree::optimalcontrol::Constraint>, iDynTree::optimalcontrol::TimeRange const&) (in /home/pramadoss/iit_ws/robotology-superbuild/build/install/lib/libidyntree-optimalcontrol.so)
==27481== by 0x5BAD28A: iDynTree::optimalcontrol::OptimalControlProblem::addConstraint(std::shared_ptr<iDynTree::optimalcontrol::Constraint>) (in /home/pramadoss/iit_ws/robotology-superbuild/build/install/lib/libidyntree-optimalcontrol.so)
==27481== by 0x4E53A0F: UnicycleOptimization::UnicycleOptimization() (in /home/pramadoss/iit_ws/loc2/unicycle-footstep-planner/install/lib/libUnicyclePlanner.so)
==27481== by 0x4E4EB9A: UnicyclePlanner::UnicyclePlanner() (in /home/pramadoss/iit_ws/loc2/unicycle-footstep-planner/install/lib/libUnicyclePlanner.so)
==27481== by 0x4E6DDBC: UnicycleTrajectoryGenerator::UnicycleTrajectoryGenerator() (in /home/pramadoss/iit_ws/loc2/unicycle-footstep-planner/install/lib/libUnicyclePlanner.so)
==27481== by 0x467E94: TrajectoryGenerator::TrajectoryGenerator() (in /home/pramadoss/iit_ws/robotology/walking-controllers/build/install/bin/WalkingModule)
==27481== by 0x467FC5: _ZSt11make_uniqueI19TrajectoryGeneratorIEENSt9_MakeUniqIT_E15__single_objectEDpOT0_ (in /home/pramadoss/iit_ws/robotology/walking-controllers/build/install/bin/WalkingModule)
==27481== by 0x457999: WalkingModule::configure(yarp::os::ResourceFinder&) (in /home/pramadoss/iit_ws/robotology/walking-controllers/build/install/bin/WalkingModule)
==27481== by 0x761F251: yarp::os::RFModule::runModule(yarp::os::ResourceFinder&) (in /home/pramadoss/iit_ws/robotology-superbuild/build/install/lib/libYARP_OS.so.3.1.100)
==27481== by 0x4141FE: main (in /home/pramadoss/iit_ws/robotology/walking-controllers/build/install/bin/WalkingModule)
==27481==
==27481== HEAP SUMMARY:
==27481== in use at exit: 3,792,243 bytes in 7,679 blocks
==27481== total heap usage: 342,232 allocs, 334,553 frees, 36,572,135 bytes allocated
==27481==
==27481== LEAK SUMMARY:
==27481== definitely lost: 0 bytes in 0 blocks
==27481== indirectly lost: 0 bytes in 0 blocks
==27481== possibly lost: 14,672 bytes in 46 blocks
==27481== still reachable: 3,777,571 bytes in 7,633 blocks
==27481== of which reachable via heuristic:
==27481== multipleinheritance: 14,688 bytes in 102 blocks
==27481== suppressed: 0 bytes in 0 blocks
==27481== Rerun with --leak-check=full to see details of leaked memory
==27481==
==27481== For counts of detected and suppressed errors, rerun with: -v
==27481== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Killed So I what I did was to align this repository with the latest CMake Error at modules/Walking_module/CMakeLists.txt:19 (find_package):
Could not find a configuration file for package "UnicyclePlanner" that is
compatible with requested version "0.1.102".
The following configuration files were considered but not accepted:
/home/pramadoss/iit_ws/loc2/unicycle-footstep-planner/install/lib/cmake/UnicyclePlanner/UnicyclePlannerConfig.cmake, version: unknown
So I would like to confirm ? should I align |
Actually you can put both |
Actually, yes this seems to be the consequence and not the cause. The cause happens to be that the robot loses balance as it shifts all of its weight to one leg during swing phase. |
The
However, I tested the |
Hi @prashanthr05, the error
happens when the z component of both feet wrenches is lower than 0 newtons.
|
Yes. I reset the FT sensor offsets usually before running the controller. However I use the following,
I do not know the essential difference between I suppose it is recommended to use Anyhow, even with |
I am afraid it may just be a problem of bad tuning, made worse by synchronization problems. Do you have any animation that shows the fall? |
The real time factor is 0.1 or 0.3? Maybe if it is so small it may be worthwhile to connect to the gazebo clock (it has to be implemented in the controller code). Or to try directly on the robot 😁 Another simple test you could try is to use a set of parameters more similar to those used for |
I just tried, but it is not making it any better. Maybe @GiulioRomualdi can give some more advice on the tuning. |
@GiulioRomualdi @S-Dafarra
I have been testing the walking controller along side floating base estimation device. The robot tends to fall every time I run the
WalkingModule
and the module exits unanimously.The walking parameters are default as the ones available in the repository, except for the following changes,
use_mpc
flag is commented inwalkingCoordinator.ini
disabling the use of mpcsolver
is set tomumps
ininverseKinematics.ini
The steps followed to run the
WalkingModule
are as described in the README. I have been usingsetGoal 0.3 0.0
as input.Background on floating base estimation device. This is a
YARP device
opening and attaching itself to theremote control boards
ofall parts
of theiCubGazeboV2_5
robot. It also opens and attaches itself to thewholeBodyDynamics
device. AtransformServer
is also opened in order to publish transforms to ROS\tf
topic. The regular workflow involves also running ayarprobotstatepublisher
along withrviz
to visualize the estimation. All of this along withGazebo
is already a considerable load on the computer memory, causing things to slow down. In the involved components,rviz
andGazebo
are quite heavy with respect to the PC's capability (8GB RAM 2.5GHz 4-core CPU)I suspect the fact that both walking-controller and floating-base-estimation talks with whole-body-dynamics and this causes the walking-controller to not get the required Cartesian wrench feedback within the update period of the controller is causing the failure ? However, this is just my naive speculation.
I would ask about your opinion on why this failure could happen ? and precautions to avoid this failure.
The text was updated successfully, but these errors were encountered: