Это видео недоступно.
Сожалеем об этом.
Solving the problem EVERY robot has (with ros2_control)
HTML-код
- Опубликовано: 17 авг 2024
- In this video we get an overview of how ros2_control works, and how to use it in a simulated Gazebo robot.
Follow-up video available at: • Ros2_control Extra Bits
📃 Blog post articulatedrob...
👨💻️ GitHub code github.com/jos... (as of the end of this video)
💬 Join the discussion at the Articulated Robotics Community discourse.arti...
❤️ Support me on Patreon! www.patreon.co...
For more info check out the ros2_control docs control.ros.or...
And also this helpful document
github.com/ros...
00:00 - Why we need ros2_control
02:28 - Hardware side
05:19 - Controller side
07:09 - Controller Manager
08:10 - Adding ros2_control to our Gazebo sim
12:28 - Setting up controllers
17:33 - Running sim & starting controllers
21:06 - Add spawners to launch file
22:30 - Additional comments & outro
My friend you have best practical ROS2 videos on the internet no exaggeration. I have been wanting to learn ros2 pratically for the last year and this is just awesome. Really form the bottom of Heart thank you for this series.
Thank you, I really appreciate your kind words!
i have been learning ROS, 1 year now and you have the best tutorials i found on the whole internet. Very detailed easy to follow and practical!!!KEEP MAKING THOSE VIDEOS!
This video really clearly explains the problems that motivate ROS which is context that I found sorely missing in other ROS videos or blogs that feel like they assume you're already onboard. Thank you I've been looking for this for days and RUclips finally gave it to me randomly.
Thanks Josh. Just to let you know, the "ros2 run controller_manager spawner.py ..." gave me an error (now executable found). I had to use "ros2 run controller_manager spawner ..." without the .py extension, and it worked.
Edit: just realised this is mentioned in the ready to humble video. Watch that first.
Thanks for sharing this
Thank you for sharing this. I encountered the same error and tried million different things to fix it only to realise, "Someone must have faced the same error, let me check out the comment section".
thabks
this really helped me too, thanks
I watched the beginning of your video three to four times, looked into the documentary and tried the examples myself. Now after I spent multiple hours on this topic I am starting to understand this. Thank you for your help!
As a beginner who is just learning ros2, i personally find the documentation of ros2_control quite tricky to understand. I have just started watching this video. If you could share any tips/your learning briefly which you used for understanding the concept, it would be really helpful.
This is amazing content on ros2_control. When I started learning ros2 and ros2_control there was not much documentation on it and what you described here took me months to figure it out myself. This is a must watch for anyone trying to understand ros2_control. Thank you.
Thanks, I was the same about a year ago and I thought I'd better share what I learnt! The documentation has actually improved a fair bit over that time but is still not very approachable for someone new to ROS, so hopefully I can help :)
I wanted to add this side note here, since it was my own question as well.
In the ros2_control.xacro file:
# diff_cont is the name assigned to a controller instance (chosen by us)
# diff_drive_controller is the package that contains the controller plugin
# DiffDriveController is the specific controller class within that package
What an excellent explanation! I went to a full day ros2_control workshop at ROSCon, and learned more from this half hour video. Looking forward to the next one!
Thanks!
I have tried other tutorials on ros2 without any success but this here is amazing. Hope you do more videos and maybe for manipulation in the future also. Keep the amazing work!
Thanks - I do plan on doing some manipulation at some point but no promises as to when.
Hey Josh,
your videos are the best way to get into ros2 and of course to understand the complexity of ros2_control. Your work will be the base for my new build-up robot. But I've to implement a new motor driver code. Hopefully I'll get it running this weekend.
I'm looking forward for new great tutorials. Keep going!
Best regards Thomas from Northern Germany
Thanks!
tysm, Everybody makes a video on gazebo,topics,nodes,etc but nobody actually covers hardware_interface. It is really important for a real robot
I learned ros2_control a few months back with only their documentation and I wish I had this video; the documentation is not the best. If you haven't yet, I strongly recommend submitting a PR to include this video in the documentation of ros2_control. Great job!
Thats so clear and saved me after a long time of trying to get my controllers to work
Did you face some error in this?
Another wonderful video, I have been looking forqrd to this one!
Following your tutorials as a refresher for ROS dev. Really good work on explaining ros2_control in the context. Well done, practical, and to the point, keep at it, please.
I think there is a future in abstracting hardware interface with ros2_control but it still needs tidying and a way to expand functionalities beyond simple state and cmd, to include parameter configurations, tuning, calibration actions, etc (in a universal rviz plugin gui? would be superb - imagine handling odrive, teknic or other integrated drives that way)
Definitely a great introduction to ROS2_control ! Thanks !
Thank you very much. Nothing compared to your instructions in these video series when I was trying to build a custom robot simulation. Please keep publishing ROS2 content.
Very good video, thanks. I also really like the visual materials in your videos.
Yes! Been waiting for this!
Haha yeah these last few have taken a while! (Which is also why I took a while to reply to this...)
Wow this is actually an incredible video!! So well explained
Thank you so much for this incredible series
Thank you so much for the video, really great explanation :)
Awesome video! your videos have helped me a lot, thanks!
Thanks!
your videos are great and informative. please make videos on imu and sensor fusion with ros2
Really helpful set of videos. I'm struggling to find a controller for a 3-omniwheeled mobile base, I fear I will have to write it on my own. Only I found for a 4-omniwheeled robot or a tricycle base. Do you know if there's something out there for the 3-wheel holonomic base already developed?
Hello, This is a great series to follow to learn more about ROS, but I have a problem. I can't seem to get the /odom option on the fixed frames of RVIZ. I have checked the echo and there is none, but /odom is visible on the topic list. Do you have any advice?
Thank you so much for your efforts 🙏
Hello. First of all, thanks a lot for these tutorials. However, my controller_manager is not available and I’m getting a parsing error with my_controllers.yaml. I’ve checked the files multiple times and they’re identical, but for some reason it doesn’t work for me.
I am on ros2 humble and my plugin ign_ros2_control can't be found altho it exists and that is making my controller_manager not available. Been searching how to solve it and basically no resources out there about it.
I get the error "No module names 'roslaunch'" when I run the command at 17:36 ? Anyone have any ideas why?
I also got the same error,did u solved it
I have the same error. Did you find the solution?
were you able to fix this issue? I am having the same problem.
@@jordyneefs3693
I was waiting for this movie
Thanks! :D (sorry my reply is a bit late)
Great video. I have a wonder that how can you autoclosing the tags?
Hey Josh, great video! At 14:26 you mentioned that Joint State Broadcaster is not really important in the long run. I am trying to understand how rsp could work without this? Can you give a small explanation regarding that? Thanks!
After following the complete tutorial am getting this error
[ERROR] [1665975816.083180080] [spawner_diff_cont]: Controller manager not available
Please if you can guide through.
same issue
I had the same problem. Try creating a new workspace & package and copy paste everything in there. No idea why, but it worked for me :)
@@k_ros849 wdym new package?
Managed to fix it by just rebooting everything, and running source and then colcon, rather than the other way around. But that might not be relevant.
@@justal787 I created a new workspace and build a new package inside it. Then I copy pasted the old files in the new package and changed them to run with the new package name
Hello everyone. I have been following this, but when I shifted to ros2 control, the robot is driving in the opposite direction, but when I was working with Gazebo diff_drive, it was running perfectly fine. Can anyone please guide me? I have been struggling with this for 2 days now.
Thank you
I just found you and been binge watching, so maybe this is mentioned somewhere - how are you in your metal shed and not have it be 1,000 degrees? 😁
Hahaha yes it was pretty awful in summer, I couldn't work in there for more than about 20 minutes at a time!
We have since moved and the new space is much better (the opposite problem actually - excessively damp basement area)
Thanks alot for this informative tutorial,
I was wonder if there any similarity between ros2_control and micro ros for microcontrollers
any ideas how to change parameters for 4 wheel diff drive
?
Any luck?
@@chibuezeorji8288 i tried tweaking some parameters, it shows perfectly in rviz2, but in gazebo, i will work only if friction and angular speeds are set correctly
Thanks a lot for the tutorial.
I am using ros-humble and everything worked fine so far up to the point where we substitute the ros2_control for Gazebo control. the robot moves only forward and backwards. It doesn't respond to the angular_velocity command.
I have also noticed the ros2_control publishes the /odom as /diff_cont/odom.
I have the same problem. On humble, when changing to ros2_control robot only moves forward or backwards. Any solution??
@@alvarobarrientos3054 I don't seem to be able to make it work at all instead... did you find something out?
@@vollaro3 Not really. However, further into the investigation i have noticed the odom TF has the below error when i run Rviz2.
Error: TF NAN_INPUT: Ignoring transform for child_frame_id “base_link” from authority “Authority undetectable” because of a nan value in the transform (-nan -nan 0.000000) (-nan -nan -nan -nan)
at line 278 in /tmp/binarydeb/ros-foxy-tf2-0.13.14/src/buffer_core.cpp
Error: TF DENORMALIZED_QUATERNION: Ignoring transform for child_frame_id “base_link” from authority “Authority undetectable” because of an invalid quaternion in the transform (-nan -nan -nan -nan)
@@vollaro3 I had a spelling mistake in the my_controllers.yaml file for the "wheel_separator". Corrected it and now the ros2_control works. Such a foolish error.
Finally! thanks a lot
Thanks!
Can you use it on Ros Iron Irwing?
Thanks for this great work , just an issue , when I tried to use the command " ros2 control list_controllers_interfaces"
I got this error :
" rosidl_generator_py.import_type_support_impl.UnsupportedTypeSupport: Could not import 'rosidl_typesupport_c' for package 'controller_manager_msgs' " ,
any idea for solv this issue ?
Rviz is not in sync with Gazebo.
When the robot collide with an object, the robot stops in Gazebo but keeps moving in rviz. I tried lazer scan in rviz to find out if there is really any map being recognized by rviz and yes it is showing red dots representing the cones. When i run over them, the red dots shifts (keeps moving ) in the direction of motion of the bot.
Any Solutions?
How can I use controller manage for multiple bots with the same settings? Thanks!
Thank you so mush, bro
Hi! I have a question, is there any way i could rename de diff_cont's namespace from cmd_vel_unstamped topic??...i am trying this because i want to work with multiples robots connected to the same network, thanks!
I followed everything in the video, but when I try to run the controller diff_cont, I get the error 'Failed loading controller diff_cont'. But the 'joint_broad' controller loads properly. Any clue why this is happening?
Same issue, did you found any solution?
As i understood it correctly, ros2_control relies on the motors having their own controllers - they manage them via the ros2_controller manager. But however, how would you write an own PID controller for a specific robot and then connect it to the controller manager?
Thanks for the great video! =)
Refering to the part where it was mentioned how the ''hardware interface" is already given, or else it should be written independently
I loved your video, will you make a video on how to use robostack project for installing ros via conda & mamba cli
Thank you! I had actually meant to add a Robostack/conda tutorial to my to-do/ideas list, so I'll do that right now!
Unfortunately the list is VERY long, so don't expect it any time soon...too many great things to learn in robotics!
Hi Josh,
I'm following your partical ros2 tutorial, and I'm struck near the list_hardware _Interface. When I'm trying to run it. I'm getting a msg in the terminal that "Could not contact service /controller manager/list_ hardware_ Interfaces. " I'm using ROS2 humble, and I have installed all ros2_control packages for binary and gazebo packages. Can you please help to fix my problem?
Thanks
Adithya
Hi Adithya,
I have also faced the same problem. Have you found any solution now?
(Just in case you are still having this problem:) I also had this issue, my mistake was that i placed ... inside the ... . I placed it like shown in he video and that solved it.
Jesus K Kryst, robotics ain't simple!
are there any sources to learn how to do those things with ROS instead of ros2?
I'm using ROS noetic btw
ackermann_drive_spawner = Node(
package="controller_manager",
executable="ackermann_steering_controller",
arguments=["ackermann_steer"],
)
return LaunchDescription([
rsp,
gazebo,
spawn_entity,
ackermann_drive_spawner
])
it doesn't work and crashes
Can i using only raspberry pi for control all hardware component without Arduino ?
Imagine the people that mix YAML, Python and HTML for configuration
this is perfect tbh
Is it possible to do this with a four wheeled robot?
Hi Josh, great video as always! I am trying to set up diff drive pluggin under a namespace. How should I configure the yaml file in that case? Thanks!
Ooh good question, I've never tried and unfortunately am not exactly sure how to do that. If I had to guess, I think if you just put the namespace everywhere (C++, XML, CMakeLists, YAML, etc) it might work?
@@ArticulatedRobotics Thanks! I tried putting namespace when setting up ros2_control and gazebo plugin but the yaml file would parse incorrectly if I tried to add namespace in it, so I am not sure how it should be done and I didn't quite find documentation on that either 😮💨
I get an error like "Controller manager not available"
Same issue.
I get an error in Rviz2 where Odom doesn't show up?
Fixed it by just rebooting everything
I am not able to see odom as a fixed frame, what to do?
I find this happens sometimes, and just requires me to rerun everything. One other thing to do is to run rqt_tf_tools (you may need to install it) and confirm the odom TF frame is being broadcast.
please show me how to use ros_control with ackermann robot
I had to abandon ROS and robotics because I couldn't control my robot on Arduino. I don't know if I should continue because it's very complex.
You should absolutely continue! I started picking up some programming and robotics in mid-2021 and gave up and restarted several times. I’m now over six months into my first software engineering job and it’s a blast! This stuff is very challenging but very rewarding. You’ve got this, keep at it!
Hi @Andrew Bennet
Do you do robotics at your job?
I'm sorry to hear that. As Andrew said, it can sometimes be a very steep learning curve with challenges along the way. I try to make the path a bit easier but it is still tricky!
Where did you run into problems? Is your Arduino working but you can't talk to it with ROS?
@@ArticulatedRobotics After following the complete tutorial am getting this error
[ERROR] [1665975816.083180080] [spawner_diff_cont]: Controller manager not available
Please if you can guide through.
I found ROS to be absolutely unnecessary bloat piece of code and rabbit hole that serves no purpose but wasting your time trying to figure out how to deal with the 100 thousand different flavors and the very unintuitive, UX / developer unfriendly concepts and technical jargon that is extra complicated for really no reason what so ever.
I ended up ditching everything and relying only on python and Isaac Sim (which is amazing if you ditch the ROS part of it).
For robot control I use Dynamixel SDK to directly read / write motor position directly from python without any middleware overhead.
Similar story for sensors.
I still dont see what does this have to do with hardware
raise XacroException("substitution args not supported: ", exc=e)
xacro.XacroException: substitution args not supported: No module named 'roslaunch'
I'm getting this error while running the sim launch file
I have the same error. Did you find the solution?
I am getting this error too
please make a tutorial on 5 dof robotic arm gazebo simulation controlled by 5 potentiometers and the potentiometers data is published through esp32 microconroller and then the phusiacal robot mimics the simulation robot or the simulation robot mimics the actual robot both are acceptable but please make a tutorial as soon as possible i really need it
I was getting this error: "Could not contact service /controller_manager/list_hardware_interfaces" (when running "ros2 control list_hardware_interfaces")
and "waiting for the controller manager service be available" in the gazebo output
the problem was for me that I accidentaly put the gazebo tags in ros2_control.xacro inside the ros2_control tags
took me quite some time to find this mistake, hopefully this helps someone who happens to be in the same situation
I have a problem, ERROR] [spawn_entity.py-4]: process has died [pid 10845, exit code 1, cmd '/opt/ros/foxy/lib/gazebo_ros/spawn_entity.py -topic robot_description -entity my_bot --ros-args'].
how to solve this problem?
Thanks a lot for these tutorials. I have a question. Ive been running into issues when running the launch_sim file with ros2 humble. I dont know why but the gzserver dies when launching with ros2_control. The exact ERROR msg is the following: [ERROR] [gzserver-1]: process has died [pid 261816, exit code -11, cmd 'gzserver -slibgazebo_ros_init.so -slibgazebo_ros_factory.so -slibgazebo_ros_force_system.so']. I dont find any forum containing this problem.
did you find a solution to this issue?
Hello I have a problem with Controller Manager, when I launch my launch file I have the error : "waiting for the controller manager service be available" Do you know how to solve this?
Hey man! Did you find a solution for this?
I need some help with the same
@@avaneeshchitta794 Hello, I tried different things, but I still had the error with the "controller_manager". My solution was to create a python code for communication with Arduino using the "serial" library, another for the publication of odometry and another for the publication of the td. The only thing I had to use was a Nano to control the motors and a Mega for reading encoders. Investigating they said that the raspberry was very slow for Ros2 and the best thing was to run a "Basic Ros" on the raspberry and the "Complete Ros (Rviz, etc)" on another PC with more resources
has anyone been able to figure this out I am also having this issue@@avaneeshchitta794
@@avaneeshchitta794 i had the same, problem was that I put the tags in ros2_control.xacro inside the tags
I also have this problem, maybe it’s fue to a recent update. I have my tags correctly placed, though. Has anyone been able to figure it out?