Poppy in Gazebot and V-REP

Hi!

Last week we have a great progress to put Poppy in Gazebo and V-REP. I use the URDF exporter for create a URDF file to necessary for simulator. I made many modification in the Poppy assembly, it is not easy with the big assembly for create a URDF file. I will do a tutorial soon. For the moment, we don’t have to walk Poppy in the simulator.

Poppy in Gazebo:

Poppy in V-REP:

2 Likes

Wonderful work Alexandre!!!
Can’t wait for the tutorial!
Thus far, which simulator have you enjoyed more or found to be more user friendly while doing the Poppy assembly, Gazebo, or V-REP?

Thank you.
If you are very interested for to Poppy in the simulator, it’s possible to give you a URDF file.
I don’t have enough played with the simulators to give you an idea which simulator is more user friendly. Thus far, V-REP is more easy to install because it’s not necessary to install ROS… Just go to website V-REP, download (it’s free) and upload Poppy in V-REP. But choice of the simulator depend which application do you make.

I am very interested in simulating Poppy, so please give me the URDF file!
Thank you for your fast reply.

@samq
This the URDF file: URDF_File

Maybe, It will make a modification for control motor…
If you have any question, write your question in this topic.

For now, you can only import this urdf in VREP and see the model.
We are working on a Pypot/Vrep bridge to allow controlling the motors seamlessly.

For the ROS/Gazebo option I have a simple stack allowing to visualize the model in Rviz (with realtime update of the joint from the real robot) and simulate the robot in Gazebo with the possibility to control motors.
I’m going to put everything on the repository soon.

1 Like

First of all: thanks for your work on Poppy and the models!

But regarding the Gazebo model I have a question: Will there also be a .sdf file? I have Gazebo 3.0 installed (without ROS) and there the models seem to be required to reside within the ~/.gazebo/models folder and follow the convention to have a model.config and model.sdf file.

I also tried to convert the URDF with gzsdf print poppy_beta_drf.URDF but unfortunately this was not successful:

Error [parser_urdf.cc:2635] Unable to call parseURDF on robot model
Error [parser.cc:278] parse as old deprecated model file failed.
Error: SDF parsing the xml failed

Hi,
Ok first you have to make some small modifications on the raw urdf which was exported from SolidWorks.
Roughly speaking, you have to specify the xml tag and add some limits to the joints.
Here is the working urdf : poppy_beta_drf.URDF.tgz (6.0 KB)
And the corresponding sdf : poppy_beta_drf.sdf.tgz (4.0 KB)
Be careful, you will need to modify the location of the STL files.

Are you using ROS? I have also a small example of how to control the robot in Gazebo in ROS if you need.

3 Likes

Thanks a lot, Steve!

With your sdf file (and an adaption of the paths) I was able to import Poppy in Gazebo. Regarding the control with ROS I have to admit that I am not very experienced with it – but nonetheless this would be a very interesting information (not only for me, I guess)!

Hi! I want to give poppy a try, I will probably start working fully on poppy for my MSc thesis instead of an old bioloid. I would like to have access to the folder with the model of poppy for gazebo because as you said it’s some work modifying the model to use it on gazebo and I don’t want to start by making repetitive work.

So could you upload the folder with the gazebo model?

I am also very interested in controlling Poppy with ROS.

Thank you!
Awesome work!

Hi,
So for those interested in working with Poppy in ROS/Gazebo, here is a “minimal” example.
https://dl.dropboxusercontent.com/u/16995076/test_poppy_control.tar.gz
According that you have a working ROS environment with Gazebo (mine is ROS Hydro under Ubuntu 12.04 http://wiki.ros.org/hydro/Installation):

  • Extract this package in your catkin workspace (to create your catkin workspace http://wiki.ros.org/catkin/Tutorials/create_a_workspace).
    Then you should be able to run roscd test_poppy_control
  • first launch the Gazebo simulation with: roslaunch test_poppy_control poppy_flat_feet_gazebo.launch
    The Gazebo window should pop with the Poppy 3D model
  • then launch the virtual motor controllers with: roslaunch test_poppy_control poppy_flat_feet_control.launch
    After a few seconds, the controllers start and the simulated robot should collapse

Now the simulation is ready, you can have a look at the avaiable topics with rostopic list.
You should notice a lot of /poppy/XXX_position_controller, these are the virtual motor controllers (there are a lot of things available such as the PID parameters) .
You can directly send a motor command, for example:
rostopic pub /poppy/l_shoulder_x_position_controller/command std_msgs/Float64 0.0
To get sensory informations from these motors you have to look at the poppy/joint_states:
rostopic echo /poppy/joint_states
You see that you can get current position, velocity and effort of for each joint.

Finally, in the src/ directory is a small python program showing an example of how to do stuff in code.

4 Likes

There is now a repository for Poppy in ROS here: https://github.com/poppy-project/ros_poppy

2 Likes

I have been trying to use Poppy on Gazebo/ROS.
I have installed the ros_poppy package, installed all dependencies but whenever I try to compile all packages of my workspace, I get the following outputs:

nduminy@nduminy-Latitude-E7250:~/catkin_ws$ catkin_make
Base path: /home/nduminy/catkin_ws
Source space: /home/nduminy/catkin_ws/src
Build space: /home/nduminy/catkin_ws/build
Devel space: /home/nduminy/catkin_ws/devel
Install space: /home/nduminy/catkin_ws/install

Running command: “cmake /home/nduminy/catkin_ws/src -DCATKIN_DEVEL_PREFIX=/home/nduminy/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/nduminy/catkin_ws/install -G Unix Makefiles” in “/home/nduminy/catkin_ws/build”

– Using CATKIN_DEVEL_PREFIX: /home/nduminy/catkin_ws/devel
– Using CMAKE_PREFIX_PATH: /home/nduminy/catkin_ws/devel;/opt/ros/indigo
– This workspace overlays: /home/nduminy/catkin_ws/devel;/opt/ros/indigo
– Using PYTHON_EXECUTABLE: /usr/bin/python
– Using Debian Python package layout
– Using empy: /usr/bin/empy
– Using CATKIN_ENABLE_TESTING: ON
– Call enable_testing()
– Using CATKIN_TEST_RESULTS_DIR: /home/nduminy/catkin_ws/build/test_results
– Found gtest sources under ‘/usr/src/gtest’: gtests will be built
– Using Python nosetests: /usr/bin/nosetests-2.7
– catkin 0.6.16
– BUILD_SHARED_LIBS is on
– ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
– ~~ traversing 27 packages in topological order:
– ~~ - poppy_gazebo
– ~~ - ros_control (metapackage)
– ~~ - ros_controllers (metapackage)
– ~~ - rqt_joint_trajectory_controller
– ~~ - controller_manager_msgs
– ~~ - test_description
– ~~ - test_gazebo
– ~~ - hardware_interface
– ~~ - controller_interface
– ~~ - realtime_tools
– ~~ - force_torque_sensor_controller
– ~~ - forward_command_controller
– ~~ - imu_sensor_controller
– ~~ - position_controllers
– ~~ - controller_manager
– ~~ - joint_limits_interface
– ~~ - joint_state_controller
– ~~ - rqt_controller_manager
– ~~ - control_toolbox
– ~~ - controller_manager_tests
– ~~ - transmission_interface
– ~~ - effort_controllers
– ~~ - velocity_controllers
– ~~ - diff_drive_controller
– ~~ - gripper_action_controller
– ~~ - joint_trajectory_controller
– ~~ - poppy_moveit_config
– ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
– +++ processing catkin package: ‘poppy_gazebo’
– ==> add_subdirectory(ros_poppy/poppy_gazebo)
– Using these message generators: gencpp;genlisp;genpy
– +++ processing catkin metapackage: ‘ros_control’
– ==> add_subdirectory(ros_control/ros_control)
– +++ processing catkin metapackage: ‘ros_controllers’
– ==> add_subdirectory(ros_controllers/ros_controllers)
– +++ processing catkin package: ‘rqt_joint_trajectory_controller’
– ==> add_subdirectory(ros_controllers/rqt_joint_trajectory_controller)
– +++ processing catkin package: ‘controller_manager_msgs’
– ==> add_subdirectory(ros_control/controller_manager_msgs)
– Using these message generators: gencpp;genlisp;genpy
– controller_manager_msgs: 3 messages, 6 services
CMake Error at /home/nduminy/catkin_ws/build/ros_control/controller_manager_msgs/cmake/controller_manager_msgs-genmsg.cmake:132 (add_custom_target):
add_custom_target cannot create target
“controller_manager_msgs_generate_messages_cpp” because another target with
the same name already exists. The existing target is a custom target
created in source directory
“/home/nduminy/catkin_ws/src/ros_poppy/poppy_gazebo”. See documentation
for policy CMP0002 for more details.
Call Stack (most recent call first):
/opt/ros/indigo/share/genmsg/cmake/genmsg-extras.cmake:304 (include)
ros_control/controller_manager_msgs/CMakeLists.txt:28 (generate_messages)

CMake Error at /home/nduminy/catkin_ws/build/ros_control/controller_manager_msgs/cmake/controller_manager_msgs-genmsg.cmake:229 (add_custom_target):
add_custom_target cannot create target
“controller_manager_msgs_generate_messages_lisp” because another target
with the same name already exists. The existing target is a custom target
created in source directory
“/home/nduminy/catkin_ws/src/ros_poppy/poppy_gazebo”. See documentation
for policy CMP0002 for more details.
Call Stack (most recent call first):
/opt/ros/indigo/share/genmsg/cmake/genmsg-extras.cmake:304 (include)
ros_control/controller_manager_msgs/CMakeLists.txt:28 (generate_messages)

CMake Error at /home/nduminy/catkin_ws/build/ros_control/controller_manager_msgs/cmake/controller_manager_msgs-genmsg.cmake:326 (add_custom_target):
add_custom_target cannot create target
“controller_manager_msgs_generate_messages_py” because another target with
the same name already exists. The existing target is a custom target
created in source directory
“/home/nduminy/catkin_ws/src/ros_poppy/poppy_gazebo”. See documentation
for policy CMP0002 for more details.
Call Stack (most recent call first):
/opt/ros/indigo/share/genmsg/cmake/genmsg-extras.cmake:304 (include)
ros_control/controller_manager_msgs/CMakeLists.txt:28 (generate_messages)

– +++ processing catkin package: ‘test_description’
– ==> add_subdirectory(test_description)
– +++ processing catkin package: ‘test_gazebo’
– ==> add_subdirectory(test_gazebo)
– +++ processing catkin package: ‘hardware_interface’
– ==> add_subdirectory(ros_control/hardware_interface)
– +++ processing catkin package: ‘controller_interface’
– ==> add_subdirectory(ros_control/controller_interface)
– +++ processing catkin package: ‘realtime_tools’
– ==> add_subdirectory(realtime_tools)
– Boost version: 1.54.0
– Found the following Boost libraries:
– thread
– +++ processing catkin package: ‘force_torque_sensor_controller’
– ==> add_subdirectory(ros_controllers/force_torque_sensor_controller)
– +++ processing catkin package: ‘forward_command_controller’
– ==> add_subdirectory(ros_controllers/forward_command_controller)
– +++ processing catkin package: ‘imu_sensor_controller’
– ==> add_subdirectory(ros_controllers/imu_sensor_controller)
– +++ processing catkin package: ‘position_controllers’
– ==> add_subdirectory(ros_controllers/position_controllers)
– +++ processing catkin package: ‘controller_manager’
– ==> add_subdirectory(ros_control/controller_manager)
– +++ processing catkin package: ‘joint_limits_interface’
– ==> add_subdirectory(ros_control/joint_limits_interface)
– +++ processing catkin package: ‘joint_state_controller’
– ==> add_subdirectory(ros_controllers/joint_state_controller)
– +++ processing catkin package: ‘rqt_controller_manager’
– ==> add_subdirectory(ros_control/rqt_controller_manager)
– +++ processing catkin package: ‘control_toolbox’
– ==> add_subdirectory(control_toolbox)
– Using these message generators: gencpp;genlisp;genpy
– Boost version: 1.54.0
– Found the following Boost libraries:
– system
– thread
CMake Error at /opt/ros/indigo/share/dynamic_reconfigure/cmake/dynamic_reconfigure-macros.cmake:57 (add_custom_target):
add_custom_target cannot create target “control_toolbox_gencfg” because
another target with the same name already exists. The existing target is a
custom target created in source directory
“/home/nduminy/catkin_ws/src/ros_poppy/poppy_gazebo”. See documentation
for policy CMP0002 for more details.
Call Stack (most recent call first):
control_toolbox/CMakeLists.txt:18 (generate_dynamic_reconfigure_options)

– control_toolbox: 0 messages, 1 services
CMake Error at /home/nduminy/catkin_ws/build/control_toolbox/cmake/control_toolbox-genmsg.cmake:44 (add_custom_target):
add_custom_target cannot create target
“control_toolbox_generate_messages_cpp” because another target with the
same name already exists. The existing target is a custom target created
in source directory “/home/nduminy/catkin_ws/src/ros_poppy/poppy_gazebo”.
See documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
/opt/ros/indigo/share/genmsg/cmake/genmsg-extras.cmake:304 (include)
control_toolbox/CMakeLists.txt:28 (generate_messages)

CMake Error at /home/nduminy/catkin_ws/build/control_toolbox/cmake/control_toolbox-genmsg.cmake:77 (add_custom_target):
add_custom_target cannot create target
“control_toolbox_generate_messages_lisp” because another target with the
same name already exists. The existing target is a custom target created
in source directory “/home/nduminy/catkin_ws/src/ros_poppy/poppy_gazebo”.
See documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
/opt/ros/indigo/share/genmsg/cmake/genmsg-extras.cmake:304 (include)
control_toolbox/CMakeLists.txt:28 (generate_messages)

CMake Error at /home/nduminy/catkin_ws/build/control_toolbox/cmake/control_toolbox-genmsg.cmake:110 (add_custom_target):
add_custom_target cannot create target
“control_toolbox_generate_messages_py” because another target with the same
name already exists. The existing target is a custom target created in
source directory “/home/nduminy/catkin_ws/src/ros_poppy/poppy_gazebo”. See
documentation for policy CMP0002 for more details.
Call Stack (most recent call first):
/opt/ros/indigo/share/genmsg/cmake/genmsg-extras.cmake:304 (include)
control_toolbox/CMakeLists.txt:28 (generate_messages)

– +++ processing catkin package: ‘controller_manager_tests’
– ==> add_subdirectory(ros_control/controller_manager_tests)
– +++ processing catkin package: ‘transmission_interface’
– ==> add_subdirectory(ros_control/transmission_interface)
– +++ processing catkin package: ‘effort_controllers’
– ==> add_subdirectory(ros_controllers/effort_controllers)
– Using these message generators: gencpp;genlisp;genpy
– +++ processing catkin package: ‘velocity_controllers’
– ==> add_subdirectory(ros_controllers/velocity_controllers)
– Using these message generators: gencpp;genlisp;genpy
– +++ processing catkin package: ‘diff_drive_controller’
– ==> add_subdirectory(ros_controllers/diff_drive_controller)
– Using these message generators: gencpp;genlisp;genpy
– +++ processing catkin package: ‘gripper_action_controller’
– ==> add_subdirectory(ros_controllers/gripper_action_controller)
– Using these message generators: gencpp;genlisp;genpy
– +++ processing catkin package: ‘joint_trajectory_controller’
– ==> add_subdirectory(ros_controllers/joint_trajectory_controller)
– Using these message generators: gencpp;genlisp;genpy
– +++ processing catkin package: ‘poppy_moveit_config’
– ==> add_subdirectory(ros_poppy/poppy_moveit_config)
– Configuring incomplete, errors occurred!
See also “/home/nduminy/catkin_ws/build/CMakeFiles/CMakeOutput.log”.
See also “/home/nduminy/catkin_ws/build/CMakeFiles/CMakeError.log”.
Invoking “cmake” failed

When I remove the ros_poppy package, the compilation works fine.
Either way, when I launch the poppy_gazebo node (roslaunch poppy_gazebo poppy_flat_feet_gazebo.launch) it works fine and open Gazebo with Poppy collapsing. But when I launch the controller (roslaunch poppy_gazebo poppy_flat_feet_control.launch), this node doesn’t create the necessary topics to control the motors (I only get the joint_state and it does not publish anything). Here are the outputs of the poppy controller:

process[poppy/controller_spawner-1]: started with pid [14598]
process[robot_state_publisher-2]: started with pid [14599]
[ WARN] [1450269494.237827025]: The root link base_link has an inertia specified in the URDF, but KDL does not support a root link with an inertia. As a workaround, you can add an extra dummy link to your URDF.
[INFO] [WallTime: 1450269495.012476] [0.000000] Controller Spawner: Waiting for service controller_manager/load_controller
[WARN] [WallTime: 1450269525.114162] [0.000000] Controller Spawner couldn’t find the expected controller_manager ROS interface.
[poppy/controller_spawner-1] process has finished cleanly

Have you any idea of what I did wrong? I’m using Gazebo 6.5.1 and ROS indigo.

1 Like

Hi Nicolas,

In CMakeLists.txt file, did you remove the ros_control and ros_controllers from the find_package? It’s a weird thing with ros_control package (otherwise it wont compile). Mine is empty and it works fine,

find_package(catkin REQUIRED COMPONENTS # Empty, unless you use other dependecies such as roscpp, stdmsgs etc. )

I removed them and it compiles now.
However the poppy controller just keeps crashing…

I also had problem with the Gazebo version! With version 2.2.6 it is now working while with the previous I had (5 I think), it wasn’t. Check also this link about the transmission code of the urdf file:

Issue 52

Hi…I have been trying to import a biped model into gazebo from solidworks. For that I installed URDF exporter and created the .stl,.launch, .urdf files needed for it. When Im trying to import the urdf in gazebo, the model isn’t correctly visible. Only thing I can see is various cuboids. This is not due to the large number of triangles in the mesh as I have tried it with a simple 2-link manipulator also. Im attaching the folder which got created while I exported it from solidworks. When it was exported, no sdf file was made…is it required? if yse where do i get that sdf file? Can you please look into this and tell me how to resolve the issue as soon as possible. Also is Rviz required at all for all this procedure?

arm_left.zip (3.8 MB)

@Steve @Alexandre @Pierre

Hello guys,

I would like to control poppy humanoid in gazebo, I’m using ros indigo and I’m on ubuntu.

Can you give me information on how to do it please?
I would like to contribute to the project, but I would like to understand what is the current project status.

Is there any tutorial or sample which can show me how to import and control the robot joints/motors under gazebo?

I see that there is a ros node for gazebo but I didn’t test it yet. Is it a good starting point? Does it include the gazebo model?

Thank you

Hello, I am looking to work with a humanoid robot using ROS Kinetic and Gazebo, I was wondering if Poppy is compatible.