costashatz / nao_gazebo

ROS Packages to simulate Aldebaran's NAO Humanoid in Gazebo through NAOqi Simulator SDK
BSD 3-Clause "New" or "Revised" License
34 stars 19 forks source link

NAO walking problem in Gazebo #8

Open Amir-Ramezani opened 7 years ago

Amir-Ramezani commented 7 years ago

Hi,

Thanks for your package.

I used your package to simulate NAO in Gazebo, however, there are some problems in my side, for example when NAO is waking or when it wants to sit, it falls. Please check the following video clip:

https://drive.google.com/file/d/0Bwsg0i6pm8bSMHBqT19RU3RoSDA/view?usp=sharing

And this is the output of my Gazebo: auto-starting new master process[master]: started with pid [4188] ROS_MASTER_URI=http://localhost:11311

setting /run_id to b011a398-ceb4-11e6-ad2c-208984233fa5 process[rosout-1]: started with pid [4201] started core service [/rosout] process[gazebo-2]: started with pid [4218] process[gazebo_gui-3]: started with pid [4222] process[spawn_urdf-4]: started with pid [4226] Gazebo multi-robot simulator, version 2.2.6 Copyright (C) 2012-2014 Open Source Robotics Foundation. Released under the Apache 2 License. http://gazebosim.org

Gazebo multi-robot simulator, version 2.2.6 Copyright (C) 2012-2014 Open Source Robotics Foundation. Released under the Apache 2 License. http://gazebosim.org

Msg Waiting for master.[ INFO] [1483118613.970170759]: Finished loading Gazebo ROS API Plugin. [ INFO] [1483118613.970737816]: waitForService: Service [/gazebo/set_physics_properties] has not been advertised, waiting... Msg Waiting for master Msg Connected to gazebo master @ http://127.0.0.1:11345 Msg Publicized address: 183.109.229.58

Msg Connected to gazebo master @ http://127.0.0.1:11345 Msg Publicized address: 183.109.229.58 Error [Param.cc:181] Unable to set value [1,0471975511965976] for key[horizontal_fov] Error [Param.cc:181] Unable to set value [0,100000001] for key[near] [spawn_urdf-4] process has finished cleanly log file: /home/learning/.ros/log/b011a398-ceb4-11e6-ad2c-208984233fa5/spawn_urdf-4*.log [E] 4355 posture: PostureLibrary::loadLibraryFromFile: cannot open file "" [W] 4399 qimessaging.transportsocket: connect: Connection refused [W] 4394 qimessaging.transportsocket: connect: Connection refused [W] 4395 qimessaging.transportsocket: connect: Connection refused [ INFO] [1483118618.438888228]: GazeboNaoqiControlPlugin loaded successfully! [W] 4393 halinterface: ALVideoDevice service unavailable:Cannot find service 'ALVideoDevice' in index [ INFO] [1483118709.125245965, 0.022000000]: waitForService: Service [/gazebo/set_physics_properties] is now available. Warning [RaySensor.cc:283] ranges not constructed yet (zero sized) Warning [RaySensor.cc:283] ranges not constructed yet (zero sized) Warning [RaySensor.cc:283] ranges not constructed yet (zero sized) Warning [RaySensor.cc:283] ranges not constructed yet (zero sized) Warning [RaySensor.cc:283] ranges not constructed yet (zero sized) Warning [RaySensor.cc:283] ranges not constructed yet (zero sized) Warning [RaySensor.cc:283] ranges not constructed yet (zero sized) Warning [RaySensor.cc:283] ranges not constructed yet (zero sized) Warning [RaySensor.cc:283] ranges not constructed yet (zero sized) Warning [RaySensor.cc:283] ranges not constructed yet (zero sized) [ INFO] [1483118709.164989683, 0.052000000]: Physics dynamic reconfigure ready.

costashatz commented 7 years ago

Hey,

Thanks for using my code!

This is a known issue with the PID values (see #3). If you have some time, I'd be happy to accept any improvements in this side...

Amir-Ramezani commented 7 years ago

Hi,

I need NAO for my work in AI. My final goal is to use it for reinforcement learning, so it needs to walk a lot and do a lots of things and I need to send the simple commands through ROS to NAO.

I have some information about PIDs. However, my information in PID area is as simple as how to keep and engine arm balanced based on a for example potentiometer sensor. So, tell me how can I help and how it is possible to tune the NAO PIDs.

Thanks,

costashatz commented 7 years ago

I need NAO for my work in AI. My final goal is to use it for reinforcement learning, so it needs to walk a lot and do a lots of things and I need to send the simple commands through ROS to NAO.

Is it mandatory to use ROS/Gazebo? If not, I could maybe point you to more lightweight simulators (where you can load a URDF and control it by pure position control [via perfect velocity actuators] for example).

So, tell me how can I help and how it is possible to tune the NAO PIDs.

I am not an expert in PID tuning either. You can check in stack overflow: http://robotics.stackexchange.com/questions/167/what-are-good-strategies-for-tuning-pid-loops

Or maybe use some automated optimization procedures (like evolutionary algorithms). You can create a weight objective function for different poses and try to optimize the PID values such that all poses can be achieved. Just my thoughts as I said I am not really an expert in PID tuning.

Amir-Ramezani commented 7 years ago

"Is it mandatory to use ROS/Gazebo? If not, I could maybe point you to more lightweight simulators (where you can load a URDF and control it by pure position control [via perfect velocity actuators] for example)." Not really, I will appreciate if you tell me about that.

Actually, what are the desired values for the PIDs? And how can we test them? Or how can we communicate with actuators directly?

costashatz commented 7 years ago

Actually, what are the desired values for the PIDs? And how can we test them? Or how can we communicate with actuators directly?

The problem is that at the time I coded this package, there was no way of directly controlling the actuators in Gazebo via ROS. So, I had to have torque/force actuators and PIDs for everything. I am not aware if this has changed... You can check in the official documentation. I would be happy to make the changes, if that is the case.

Not really, I will appreciate if you tell me about that.

You can surely use Gazebo without ROS, where you have full control of your robot (actuators, sensors, etc. --- if it hasn't changed; I am not following all of the Gazebo/ROS news lately). That way you could define the actuators as perfect velocity ones and then it is very easy to control them. I would favor this case if you are not interested in launching a lot of simulations in parallel (and if you can actually control the actuators).

Recently, I've been using the DART simulator. It has a lot of nice features and it is very easy to use (with visualizations). Of course, it does not provide all the features that Gazebo provides (interestingly you can use it in Gazebo as a backend), but it could suit your purpose.

Amir-Ramezani commented 7 years ago

Thanks for the information.

I am trying to use DART and also found some other simulators like VRep.

Amir-Ramezani commented 7 years ago

It seems to me that your Gazebo real time factor is slower than mine, could it be the reason that this falling happens? Or perhaps the physic engine you used in your Gazebo?

Check this link: https://vimeo.com/105584932

costashatz commented 7 years ago

It seems to me that your Gazebo real time factor is slower than mine, could it be the reason that this falling happens?

This could be a reason.

Or perhaps the physic engine you used in your Gazebo?

I used all the defaults of Gazebo. But I highly encourage you to use DART in Gazebo as a backend and let me know what happens...