Hi, I am a newbie to ROS, so please forgive me for my inexperience.
My previous experience is focused in Arduino, and now I am developing a “turtlebot” like robot based on ESP32-S3. I have been learning ROS2 and Micro-ros for some time, but still rather confused.
What is the convenience of building a system based on Micro-ROS compared to not using Micro-ROS? What are my reasons for using Micro-ROS if ROS is not required for the project?
Also, I am confused about the use of rviz2, which seems to require me to write my own node for converting TF information, which seems rather cumbersome.
If you guys have proper tutorials, I would be very interested to know.
I can explain to you the “rviz2” part. Usually, when you have differential drive robot you can use “DiffDriveController” from ros2_control which calculates kinematics so you can command robot in Cartesian space and publishes joint_state and odometry to simplify visualization in rviz2. You should use “robot_description” and “robot_state_publisher” for this.
Helpful documentation about setting your robot is provided by Navigation2. Even if you don’t do navigation, the first part of the tutorial is helpful for controlling and visualizing the robot.
What is the convenience of building a system based on Micro-ROS compared to not using Micro-ROS? If you work with embedded and ROS 2, then micro-ROS is required.
What are my reasons for using Micro-ROS if ROS is not required for the project? No reasons if you dont want to use ROS 2, since micro-ROS is the extension of ROS 2 for microcontrollers.
Thanks maria,
I have staring at this web for several times
So Micro-ROS provides a framework for microcontrollers to communicate with computers running ROS2, and the convenience it brings is actually the convenience that ROS2 brings.
Another question: With Micro-ROS, can I port the control algorithm package on ROS2 to run on the microcontroller? The host computer only provides the control commands, the calculations are done in the microcontroller.
In general, there should not be a reason why not do this. Of course, it depends on your microcontroller and algorithm, obviously.
If you are thinking about ros2_control, then I don’t know any use of on microcontrollers. And porting the whole stack could be tricky. What people are usually trying to do is communicate from ros2_control hardware-interface with microcontroller. There was already a discussion about that on discourse. Unfortunately, we didn’t get any feedback about result of it.
Exactly, you are right.
Yes you can, generally speaking. It depends on the specific control package you want to use. Navigation package for instance would be too big for embedded and might not be ported.
Thanks maria, is there any example or tutorial of using existing ROS2 packages in micro-ros project?
Even after days of searching through, I still have no idea about that.
Considering micro-ros doesnt support ros launch function, I cannot use proven resources in ROS2 in my MCU for now, but only use rcl and rclc to create my program?
This is so frustrating. Sorry, I can’t think of any other way to use the package’s functions than to run the package directly.