Nodelet Usage and it’s role in designing a complex controller
- Why nodelets are required? What are the advantages/disadvantages of it over normal nodes?
I have gone through the tutorial http://wiki.ros.org/kobuki/Tutorials/... Can anyone tell me what are the procedure to implement a velocity command multiplexer with normal nodes (for P3AT)?
Suppose, I have added mux.yaml ( http://wiki.ros.org/yocs_cmd_vel_mux ) and in the move_base.launch file , I include one more line:
rosparam file="$(find usarsim_inf)/mux.yaml" command="load"
So, whenever,I launch move_base.launch ; mux.yaml get loaded. But how I come to know that teleop and autonomous_behavior consult with this mux.yaml?
I am using P3AT on ROS fuerte on Ubuntu 10.04.
Thank you for any help.
I have added a launch file which is in accordance with the ANSWER:
<launch>
<node pkg="nodelet" type="nodelet" name="nodelet_manager" args="manager"/>
<node pkg="nodelet" type="nodelet" name="mobile_base_nodelet_manager" args="manager"/>
<node pkg="nodelet" type="nodelet" name="cmd_vel_mux" args="load cmd_vel_mux/CmdVelMuxNodelet mobile_base_nodelet_manager">
<param name="yaml_cfg_file" value="$(find turtlebot_bringup)/param/mux.yaml"/>
<remap from="cmd_vel_mux/output" to="mobile_base/commands/velocity"/>
</node>
</launch>
Question : Is there any material which explains in detail about How Kobuki's control system use nodelets to switch among different controllers?
command to bring nodelet_manager and velocity_multiplexer
roslaunch cmd_vel_mux standalone.launch
and following is the example_cfg.yaml
subscribers:
name: "Teleoperation"
topic: "teleop_cmd_vel"
timeout: 0.3
priority: 10
name: "Navigation"
topic: "cmd_vel"
timeout: 0.1
priority: 0
UPDATED PART BELOW
What is the role of yocs_velocity_smoother?
I have tried to set the timeout as follows:
slow down (Navigation) : 0.1 (timeout is less, means teleoperation will take over)
speed up (teleoperation): 8 (we will wait longer amount of time.)
Even if the outcome is poor, autonomous navigation try to take over the control. Why autonomous doesn't wait for 8 seconds? If it goes like this then adding dynamic reconfigure server will not be fruitful for my experiment.
What may be the reason that the robot is not following exactly the example_cfg.yaml? Is it yocs_cmd_vel is for only Kobuki control system?
You've specified a timeout of 0.8 seconds... not sure why you're expecting that to be 8 seconds.
@ahendrix, I want to give more priority to teleoperation. Before declaring the /teleop_cmd_vel to be inactive topic for multiplexing, I want the timeout period to be more. So, that autonomous navigator of ROS will not snatch away the driving control. But, I am not getting the proper behavior that I am expecting. The autonomous controller snatch away the control before the 0.8 second (after setting the goal through rviz)
@ahendrix, I have updated the question.
yes. yes I see. Perhaps you can check out output rate from your teleop node? It may be timing out because the teleop isn't transmitting fast enough.
@ahendrix, I have made the timeout parameter of teleoperation to be 180 seconds that is 2 minutes, but still the robot is not smoothly following the commands of teleoperation. I will add a video, then you may have a good idea about the whole scenario. What may be the reason behind this?
@ahendrix, I have added a new question http://answers.ros.org/question/155326/proper-working-of-cmd_vel_mux-for-velocity-multiplexing/