Ask Your Question
0

ros_control requirements

asked 2019-04-17 16:18:47 -0500

Wireline gravatar image

updated 2019-04-17 16:24:41 -0500

Hi

Required info: Distro: Kinetic, Ubuntu 16.04 The robot is running on a gaming laptop and brings up kinect2_bridge, roboclaw_node and the rplidar_node and sends data over home wifi. I view the data on a remote PC via RVIZ.

Most of my experience up to this point has been with simulated robots and gazebo. I have gone through the tutorials on making a real robot and have a fully built bot IRL. It teleoperates fine and I can make maps, though my odometry appears to suffer from inaccuracy. I am trying to eliminate issues that might be causing it, such as simply not having configured my robot properly.

I have read through the wiki pages on the navigation stack and I would like to better understand at what point ros_control becomes necessary in a robot build please. I am referring to this diagram: image description.

My robot has two motors with quadrature encoders being driven by a roboclaw motion control board. it uses the custom roboclaw_node which subscribes to cmd_vel and publishes odom plus some motor status messages. It has its own PID control built in.

At what stage would the roboclaw_node appear in the attached diagram? I am not sure if I am missing something from my build. As mentioned, at present I am teleoperating the robot in order to make maps. I am not navigating yet.

This is the urdf representation of my real robot image description Now If that were in gazebo, I would put libdiffdrive in the .gazebo file and set the front caster to have zero friction and gazebo would take care of creating robot movement, which is reflected in RVIZ. However now of course, RVIZ only has the drive wheel encoder odometry to inform its position. Is RVIZ really giving me an accurate representation of movement if there is no model to inform it how the three wheels, 2 x drive plus 1 x caster, interact?

Is ros_control and RobotHW always needed in every build? Or does the roboclaw node effectively take care of everything?

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2019-04-18 01:26:27 -0500

gvdhoorn gravatar image

Some comments (slightly pedantic, but I feel important):

I would like to better understand at what point ros_control becomes necessary in a robot build

never. Using ros_control is a choice, and robots can (and have) been built without it and function perfectly fine.

[..] RVIZ only has the drive wheel encoder odometry to inform its position [..] Is RVIZ really giving me an accurate representation of movement [..]

Please understand: RViz does not do anything else but visualise data streams. It does not calculate odometry, or the pose of your robot. It's not even giving you "an accurate representation of movement". It just renders a 3D model at a certain 6D pose. But all of that information has to come from outside, as RViz is just a consumer of data.

edit flag offensive delete link more

Comments

Thank you, that answers my question.

Wireline gravatar imageWireline ( 2019-04-18 04:48:42 -0500 )edit

Note that reusing ros_control can definitely be beneficial (as certainly the controllers it provides can save you a lot of work), but it's never a requirement.

gvdhoorn gravatar imagegvdhoorn ( 2019-04-18 04:52:07 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2019-04-17 16:18:47 -0500

Seen: 76 times

Last updated: Apr 17