graiola / wolf-setup

WoLF: Whole-body Locomotion Framework for quadruped robots
GNU General Public License v3.0
114 stars 15 forks source link

High level control without joystick #2

Closed itaouil closed 2 years ago

itaouil commented 2 years ago

Hi Gennaro :),

In the README it is stated that in order to control the robot (I guess both in simulation and real-life?) a joypad is required.

I would be interested to send twist messages (i.e. sending the different components for the linear and angular velocity) through ROS. Is there maybe a parameter that could be changed to make this available or would this require changing the source code?

Best, Ilyass

EnricoMingo commented 2 years ago

I think there should be a keyboard interface as well. @graiola

graiola commented 2 years ago

Yes, there is a keyboard interface that send twist commands, but it needs further developments. If you explain me what do you need, I can try to implement it.

itaouil commented 2 years ago

What I am interested in is to have a rostopic called cmd_vel that accepts geometry_msgs/Twist messages containing the linear and angular velocities which are then passed to the foothold planner as references to your wbc.

graiola commented 2 years ago

@itaouil that would be possible :) I can work on that in the next days

also, we prepared an hardware interface to connect the wbc to a real aliengo robot via its udp command interface. If you are interested this is the link to it: https://github.com/graiola/wb_aliengo_interface

itaouil commented 2 years ago

Amazing!

Yes. I guess after some further testing in simulation and maybe once the joint violations #6 is solved I will give it a go on the real robot next week and of course would keep in the loop about that :).

Once again thanks a lot to you and Enrico for all the help! Really appreciated :)

graiola commented 2 years ago

I resurrected an old branch where there is a twist interface. With the new debian you can publish on the topic /robot_name/wb_controller/twist a value between -1.0 and 1.0 for each velocity component, this value represents a scaling value that gets multiplied by the velocity selected in the gui (or in the param file). To activate the topic use the argument input_device:=twist when launching the controller:

roslaunch wb_controller wb_controller_bringup.launch robot_name:=aliengo input_device:=twist

Maybe this is not the best way to implement it but I kept it like that to have a similar behavior between the joypad and the twist interface. If you need a different implementation let me know :)

itaouil commented 2 years ago

Thanks 👍🏽.

I will give it a try and let you know :).

EnricoMingo commented 2 years ago

Can we close this?

itaouil commented 2 years ago

Yes.

Thank you!

itaouil commented 2 years ago

Hi @graiola,

I did not check this before....

To command a clockwise or counter clockwise rotation with the twist message is it a combination of angular.z and almost zero linear.y components?

As angular.z alone only changes the yaw of the base.

graiola commented 2 years ago

yes you have to send some linear components as well...

itaouil commented 2 years ago

ok thanks.