### Summary
Using `$ catkin build my_node`, the reconfigure headers are not generated on some computer (even though the build works on others). It just seems like `generate_dynamic_reconfigure_options()` is ignored.
### More details
I have a node using catkin and a CMakeLists.txt (i.e. not rosbuild), **successfully building** from an Ubuntu 16.04 docker container. When I follow **exactly** all the steps of the "working" Dockerfile into a brand new Ubuntu 16.04 install in VirtualBox, catkin fails with the following error:
Errors << my_node:make /root/catkin_ws/logs/my_node/build.make.008.log
In file included from /root/catkin_ws/src/my_node/src/nodes/path_handler_node.cpp:1:0:
/root/catkin_ws/src/my_node/src/nodes/path_handler_node.h:16:50: fatal error: my_node/PathHandlerNodeConfig.h: No such file or directory
compilation terminated.
make[2]: * * * [CMakeFiles/path_handler_node.dir/src/nodes/path_handler_node.cpp.o] Error 1
make[1]: * * * [CMakeFiles/path_handler_node.dir/all] Error 2
make: * * * [all] Error 2
From what I observe in the working config (the docker container), I expect `PathHandlerNodeConfig.h` to be generated in `devel/my_node/PathHandlerNodeConfig.h`, but it is not. However, `cfg/path_handle_node.cfg` is present in the `generate_dynamic_reconfigure_options(...)` in the CMakeLists.txt of `my_node`, and there are `dynamic_reconfigure` build_depend and run_depend in "package.xml". Again, it works on other computers.
One could be the reason for the config file to not get generated? How could I get more information about what is happening? The error I get says that the config header is missing, but there is no complaint at the time of generating it (if generation is ever started). `$ catkin build --verbose my_node` doesn't seem to say anything about the dynamic_reconfigure generation, either.
I have created a small test node following [this tutorial](http://wiki.ros.org/dynamic_reconfigure/Tutorials/HowToWriteYourFirstCfgFile) and the header file is correctly generated, which makes me even more confused: my code works on other platforms, and this platform that fails with my code works for a small example...
**UPDATE:**
After a lot of testing, I realized that the config headers are generated when I remove the last two commands of the CMakeLists.txt:
add_executable(path_handler_node src/nodes/path_handler_node.cpp)
target_link_libraries(path_handler_node ${catkin_LIBRARIES})
I would expect the config headers to be generated before `path_handler_node` gets compiled (I guess that's the whole point, right?). And because they are not, I get the build error above.
And the problem is really that somehow, the headers are not generated at the right time: if I comment out the two lines above and build, I get the headers generated. Then, if put back the two lines above and compile again, it works...
↧
Dynamic reconfigure headers not generated
↧
Multiple instances of a dynamic_reconfigure server in the same client node
Hello,
I'm using ROS Kinetic.
I'd like to have multiple instances of a dynamic_reconfigure server in a node, and I'm wondering how to achieve that.
I have different robots that I define in YAML files with a specific number of motors for each robot.
I have a dynamic_reconfigure config file in my package that allows me to set min, max, offset and enable parameters for a motor.
But I need to be able to tune those parameters for each motor defined in the YAML file, and that is unknown at compile time. I can't dynamically allocate some array of server because at runtime I don't have the callbacks created.
A way, which I don't really like, could be to add a string or int field to the parameters, and type the motor name or index to apply the values to that specific motor in the code. There could be a bool parameter also to apply the new values in the client node when set to true.
Another way could be to create a nodelet class of a motor with its own dynamic reconfigure server and callback, and have a vector of them in the main node, and push back as many as needed.
The other way could be to use services instead, but then I couldn't use the rqt_reconfigure gui.
Is there a good practice for doing this kind of thing ?
Thanks!
↧
↧
Changing dynamic_reconfigure parameters using rosbridge
I'm developing a node that includes some dynamically-reconfigurable parameters. Eventually, I will write a JavaScript GUI that uses [roslibjs](http://wiki.ros.org/roslibjs) and [rosbridge](http://wiki.ros.org/rosbridge_suite/) to interface with this node and the rest of my robot. I understand that [dynamic_reconfigure](http://wiki.ros.org/dynamic_reconfigure) uses ROS services to change the parameters during runtime.
Are there any examples of using roslibjs (or anything that talks to rosbridge) to change dynamically reconfigurable parameters? I would be grateful to know if this is even possible, because if it isn't, I will have to design my node differently.
↧
dynamic reconfigure in ros2
Hi,
I was trying to understand how to implement something similar to dynamic reconfigure's .cfg file method of configuring a node in ros2. If anyone has tried, or any ideas please let me know.
↧
Using groups with dynamic_reconfigure, rqt_reconfigure
Reading about and playing around the almost secret concept of using "groups" with [dynamic_reconfigure](http://wiki.ros.org/dynamic_reconfigure).
I have the following questions:
1. What is the group "state" attribute used for? [rqt_reconfigure](http://wiki.ros.org/rqt_reconfigure) plugin does not seem to do anything with it.
2. [rqt_reconfigure](http://wiki.ros.org/rqt_reconfigure) has classes called CollapseGroup, TabGroup, etc.... Can I use "groups" in a way so that they can appear tabbed, collapsed, hidden etc...?
3. Save/reload yaml from rqt_configure works fine, except when the configuration contains groups. Then the loading generates an error on the server side:
> [ERROR] [1527081248.063225]> [/dynamic_tutorials]: Error processing> request: 'list' object has no> attribute 'items' ['Traceback (most> recent call last):\n', ' File> "/opt/ros/kinetic/lib/python2.7/dist-packages/rospy/impl/tcpros_service.py",line> 625, in _handle_request\n response> = convert_return_to_response(self.handler(request),> self.response_class)\n', ' File> "/opt/ros/kinetic/lib/python2.7/dist-packages/dynamic_reconfigure/server.py",> line 135, in _set_callback\n return> encode_config(self.update_configuration(decode_config(req.config,> self.type.config_description)))\n', ' > File> "/opt/ros/kinetic/lib/python2.7/dist-packages/dynamic_reconfigure/encoding.py",> line 312, in decode_config\n > add_params(d[\'groups\'],> description)\n', ' File> "/opt/ros/kinetic/lib/python2.7/dist-packages/dynamic_reconfigure/encoding.py",> line 308, in add_params\n for nr,> dr in descr[\'groups\'].items():\n',> "AttributeError: 'list' object has no> attribute 'items'\n"]
My cfg looks like:
#!/usr/bin/env python
PACKAGE = "dynamic_tutorials"
from dynamic_reconfigure.parameter_generator_catkin import *
gen = ParameterGenerator()
gen.add("my_int_param", int_t, 0, "An Integer parameter", 50, 0, 100)
gen.add("my_bool_param", bool_t, 0, "A Boolean parameter", True)
mygroup = gen.add_group("MyGroup")
mygroup.add("my_double_param", double_t, 0, "Some double param", 100, 0, 200)
exit(gen.generate(PACKAGE, "dynamic_tutorials", "Tutorials"))
↧
↧
Order and hide parameters from dynamic reconfigure
I have a ROS kinetic node, using dynamic reconfigure with this .cfg file.
#!/usr/bin/env python
PACKAGE='mec_transmission'
from dynamic_reconfigure.parameter_generator import *
par = ParameterGenerator()
gen = par.add_group("General")
con = par.add_group("Connection")
par.add("active", bool_t, 0, "Activates/Deactivates the node.", True)
gen.add("debug", bool_t, 0, "Activates the debug mode, which will generate debug messages from a file.", False)
gen.add("sensorID", int_t, 0, "ID of the sensor within the MEC framework", 1)
con.add("ip", str_t, 0, "IP of the MEC-server", "127.0.0.1")
con.add("port", str_t, 0, "Port of the MEC-server", "2000")
exit(par.generate(PACKAGE, "mec_sensor_node", "mec_sensor_params"))
I now have two questions:
1. How are the parameters and the groups ordered in `rqt_reconfigure`? Connection is always shown above General, which is different to what I want.
2. Is it possible to hide or gray out groups? So for example I want the sensorID parameter being fixed or unchangeable if debug mode is activated.
↧
How to use dynamic_reconfigure for /gazebo vs. /gazebo_gui?
I'm starting Gazebo 7 via ROS Kinetic, which is working fine so far.
Now I need to adjust the `time_step` and `max_update_rate` parameters to get a real-time simulation.
But when I open the reconfigure GUI, I get two sections: /gazebo and /gazebo_gui. Both contain the same parameters with the same values. Unexpectedly, they are not mirrored. If I change something for /gazebo, it doesn't get synced to /gazebo_gui even after refreshing.
To be even more confusing: Gazebo behaves totally different if I change a setting in /gazebo or in /gazebo_gui. At least regarding the two time parameters I mentioned above which are of interest to me.
How is the reconfiguration supposed to be used? Is there a deeper sense I missed? I'm totally unsure whether this is more related to ROS or Gazebo.
Screenshot of the two sections:

↧
dynamic reconfigure specific directory
Using
generate_dynamic_reconfigure_options(ros/config/params.cfg)
in my `CMakeLists.txt` of a package, some strange directories within the package are created and I don't know why. Here is my structure before a build (top level is the catkin workspace with the toplevel CMakeLists.txt).
├── CMakeLists.txt -> /opt/ros/kinetic/share/catkin/cmake/toplevel.cmake
└── src
└── pack_template
├── CMakeLists.txt
├── library
│ ├── include
│ │ └── lib.hpp
│ └── src
│ └── lib.cpp
├── package.xml
└── ros
├── config
│ └── params.cfg
├── include
│ └── template
│ └── template.hpp
└── src
└── template.cpp
I then use `catkin build` with this CMakeLists.txt
cmake_minimum_required(VERSION 2.8.3)
project(pack_template)
add_compile_options(-std=c++11)
find_package(catkin REQUIRED
roscpp
rospy
std_msgs
dynamic_reconfigure
)
generate_dynamic_reconfigure_options(
ros/config/params.cfg
)
catkin_package(
LIBRARIES ${PROJECT_NAME}
CATKIN_DEPENDS std_msgs
)
include_directories(
include
ros/include
library/include
${catkin_INCLUDE_DIRS}
cfg/cpp
${Boost_INCLUDE_DIRS}
)
add_library(${PROJECT_NAME} STATIC
library/src/lib.cpp
)
add_executable(${PROJECT_NAME}_node
ros/src/template.cpp
)
set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME "example_node" PREFIX "")
add_dependencies(${PROJECT_NAME}_node
${${PROJECT_NAME}_EXPORTED_TARGETS}
${catkin_EXPORTED_TARGETS}
)
target_link_libraries(${PROJECT_NAME}
${catkin_LIBRARIES}
)
target_link_libraries(${PROJECT_NAME}_node
${PROJECT_NAME}
${catkin_LIBRARIES}
${Boost_LIBRARY_DIR}
)
and my folder structure after a build looks (deleted some hopefully uninteresting things)
├── build
│ ├── (...)
├── CMakeLists.txt -> /opt/ros/kinetic/share/catkin/cmake/toplevel.cmake
├── devel
│ ├── env.sh -> ~/catkin/dynamic_reconfigure_test/devel/.private/catkin_tools_prebuild/env.sh
│ ├── etc
│ │ └── (...)
│ ├── include
│ ├── lib
│ │ ├── libpack_template.a -> ~/catkin/dynamic_reconfigure_test/devel/.private/pack_template/lib/libpack_template.a
│ │ ├── pack_template
│ │ │ └── example_node -> ~/catkin/dynamic_reconfigure_test/devel/.private/pack_template/lib/pack_template/example_node
│ │ ├── pkgconfig
│ │ │ ├── catkin_tools_prebuild.pc -> ~/catkin/dynamic_reconfigure_test/devel/.private/catkin_tools_prebuild/lib/pkgconfig/catkin_tools_prebuild.pc
│ │ │ └── pack_template.pc -> ~/catkin/dynamic_reconfigure_test/devel/.private/pack_template/lib/pkgconfig/pack_template.pc
│ │ └── python2.7
│ │ └── dist-packages
│ │ └── pack_template
│ │ ├── cfg
│ │ │ └── __init__.py -> ~/catkin/dynamic_reconfigure_test/devel/.private/pack_template/lib/python2.7/dist-packages/pack_template/cfg/__init__.py
│ │ └── __init__.py -> ~/catkin/dynamic_reconfigure_test/devel/.private/pack_template/lib/python2.7/dist-packages/pack_template/__init__.py
│ ├── setup.bash -> ~/catkin/dynamic_reconfigure_test/devel/.private/catkin_tools_prebuild/setup.bash
│ ├── setup.sh -> ~/catkin/dynamic_reconfigure_test/devel/.private/catkin_tools_prebuild/setup.sh
│ ├── _setup_util.py -> ~/catkin/dynamic_reconfigure_test/devel/.private/catkin_tools_prebuild/_setup_util.py
│ ├── setup.zsh -> ~/catkin/dynamic_reconfigure_test/devel/.private/catkin_tools_prebuild/setup.zsh
│ └── share
│ ├── catkin_tools_prebuild
│ │ └── cmake
│ │ ├── catkin_tools_prebuildConfig.cmake -> ~/catkin/dynamic_reconfigure_test/devel/.private/catkin_tools_prebuild/share/catkin_tools_prebuild/cmake/catkin_tools_prebuildConfig.cmake
│ │ └── catkin_tools_prebuildConfig-version.cmake -> ~/catkin/dynamic_reconfigure_test/devel/.private/catkin_tools_prebuild/share/catkin_tools_prebuild/cmake/catkin_tools_prebuildConfig-version.cmake
│ └── pack_template
│ └── cmake
│ ├── pack_templateConfig.cmake -> ~/catkin/dynamic_reconfigure_test/devel/.private/pack_template/share/pack_template/cmake/pack_templateConfig.cmake
│ └── pack_templateConfig-version.cmake -> ~/catkin/dynamic_reconfigure_test/devel/.private/pack_template/share/pack_template/cmake/pack_templateConfig-version.cmake
├── logs
│ ├── (...)
└── src
└── pack_template
├── cfg
│ └── cpp
│ └── pack_template
│ └── templateConfig.h
├── CMakeLists.txt
├── docs
│ ├── templateConfig.dox
│ ├── templateConfig-usage.dox
│ └── templateConfig.wikidoc
├── library
│ ├── include
│ │ └── lib.hpp
│ └── src
│ └── lib.cpp
├── package.xml
├── ros
│ ├── config
│ │ └── params.cfg
│ ├── include
│ │ └── template
│ │ └── template.hpp
│ └── src
│ └── template.cpp
└── src
└── pack_template
├── cfg
│ ├── __init__.py
│ └── templateConfig.py
└── __init__.py
Is there a way to define a target location to create these directories? I want them
1. to be created in the subfolder `ros`, where all my ros dependent things are.
2. the paramsConfig.h should go to `ros/include` not in `src`
Edit: There was a mistake in my original post, I edited the package structure. My plan was to put all ros-dependent stuff in `package_main/ros/`, hence there are an include and src directory. Second my ros-independent code should go to `package_main/library` src and include. Unfortunately by using the dynamic_reconfigure command ros creates the two directories `package_main/cfg` and `package_main/src`. Both is a bit awkward to me, since one may expect the `*.cfg` file in the `cfg` directory and the sources in the `src` directory.
Edit 2: Output of tree for better readability
Edit 3: Since it seems to be more complex, I created a minimal example, and edited respectively.
↧
'Use the cfg File' tutorial last command unclear
Hi. Working through the tutorials in sequence. Following the last section 'Use the cfg File' on this page I edited CMakeLists.txt and added the following at line 13:
generate_dynamic_reconfigure_options(
cfg/Tutorials.cfg
)
Ran `$ ~/catkin_ws$ catkin_make` and this did a build with no errors.
When I ran `$ rosrun rqt_gui rqt_gui -s reconfigure`, the gui opens but is blank and is missing any fields similar to that shown at the end of the tutorial page - http://wiki.ros.org/dynamic_reconfigure/Tutorials/HowToWriteYourFirstCfgFile
When I then add the rest of the CMakeLists.txt entries listed in the section 'Use the cfg File' ...
// make sure configure headers are built before any node using them
add_dependencies(server dynamic_tutorials_gencfg)
... I get this build CMake Error:
CMake Error at dynamic_tutorials/CMakeLists.txt:18 (add_dependencies):
Cannot add target-level dependencies to non-existent target "server".
The add_dependencies works for top-level logical targets created by the
add_executable, add_library, or add_custom_target commands. If you want to
add file-level dependencies see the DEPENDS option of the add_custom_target
and add_custom_command commands.
The tutorial is not clear on how to use `add_dependencies()` in CMakeLists.txt i.e. is tells the reader ...
// make sure configure headers are built before any node using them
add_dependencies(example_node ${PROJECT_NAME}_gencfg)
Does anyone know how to use this command correctly to get the server.py node show correctly in the gui?
↧
↧
Remove slider bar from dynamic_reconfigure
For doubles and Ints I'd like to remove slider bar from the dynamic reconfigure to only be able to change values via the text box. For long lists of values I find myself often accidentally bumping the slider (when scrolling with mouse).
Would this difficult to do? I haven't looked too deep into the dyn_reconf code to see whats possible. Any recommendations?
↧
Dynamically reconfiguring parameters from other nodes
Hello everyone!
So, I'm running `nodeA` with a dynamic_reconfigure server, that's working just fine. I'm using `rqt_reconfigure` and everything's ok. Now I have a new node, `nodeB`, from where I want to modify parameters in `nodeA`. I've figured out there are 2 topics: `/nodeA/parameter_descriptions[dynamic_reconfigure/ConfigDescription]` and `/nodeA/parameter_updates[dynamic_reconfigure/Config]`. So, I've created a publisher that complies with that interface and now I'm publishing to that topic. I can publish exactly what I want to the updates topic (if I echo it, I get the values I want for each parameter), but the callback that should be called in `nodeA` is not getting called, ergo ignoring the updates. It's important to say that this callback works just fine when modifying parameters using `rqt_reconfigure`.
Any ideas? Thanks!
↧
Dynamic Reconfigure Keep Publishing
Hi, I used dynamic reconfigure with rqt and I found that the topics keep publishing even there is no change in the value. Is there any way to configure dynamic reconfigure to publish topic only when there is an update? I am using Kinetic on a PC. Thanks!
↧
How to read the data from dynamic reconfigure
Does anyone have an example code on how to read the data from "/node/parameter_updates"? Thanks a lot!
↧
↧
Dynamic Reconfigure is called automatically in ros_control
Hi everyone
I have a problem when I launch the ros_control node.
In one computer the code works without problems:
javier@JavierPortatil:~$ roslaunch sara_control control_launch.launch
... logging to /home/javier/.ros/log/1be9aa56-a24f-11e8-934b-5435303f8ae2/roslaunch-JavierPortatil-3099.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://JavierPortatil:44657/
SUMMARY
========
PARAMETERS
* /diff_drive_controller/angular/z/has_acceleration_limits: True
* /diff_drive_controller/angular/z/has_jerk_limits: True
* /diff_drive_controller/angular/z/has_velocity_limits: True
* /diff_drive_controller/angular/z/max_acceleration: 1.0
* /diff_drive_controller/angular/z/max_jerk: 2.5
* /diff_drive_controller/angular/z/max_velocity: 3.0
* /diff_drive_controller/base_frame_id: base_link
* /diff_drive_controller/cmd_vel_timeout: 0.5
* /diff_drive_controller/left_wheel: wheel_left_joint
* /diff_drive_controller/linear/x/has_acceleration_limits: True
* /diff_drive_controller/linear/x/has_jerk_limits: True
* /diff_drive_controller/linear/x/has_velocity_limits: True
* /diff_drive_controller/linear/x/max_acceleration: 0.4
* /diff_drive_controller/linear/x/max_jerk: 1.0
* /diff_drive_controller/linear/x/max_velocity: 0.6
* /diff_drive_controller/linear/x/min_acceleration: -0.4
* /diff_drive_controller/linear/x/min_velocity: -0.1
* /diff_drive_controller/pose_covariance_diagonal: [0.001, 0.001, 10...
* /diff_drive_controller/publish_rate: 50.0
* /diff_drive_controller/right_wheel: wheel_right_joint
* /diff_drive_controller/twist_covariance_diagonal: [0.001, 0.001, 10...
* /diff_drive_controller/type: diff_drive_contro...
* /diff_drive_controller/wheel_radius: 0.161
* /diff_drive_controller/wheel_radius_multiplier: 1.0
* /diff_drive_controller/wheel_separation: 0.525
* /diff_drive_controller/wheel_separation_multiplier: 1.0
* /rosdistro: kinetic
* /rosversion: 1.12.7
* /use_sim_time: False
NODES
/
SARA_control_interface (sara_control/control_node)
SARA_controller_manager (controller_manager/spawner)
SARA_interface (sara_control/hwinterface_script.py)
cmd_vel_relay (topic_tools/relay)
auto-starting new master
process[master]: started with pid [3110]
ROS_MASTER_URI=http://localhost:11311
setting /run_id to 1be9aa56-a24f-11e8-934b-5435303f8ae2
process[rosout-1]: started with pid [3123]
started core service [/rosout]
process[SARA_interface-2]: started with pid [3127]
process[SARA_control_interface-3]: started with pid [3138]
process[SARA_controller_manager-4]: started with pid [3143]
process[cmd_vel_relay-5]: started with pid [3144]
[ INFO] [1534532129.501378306]: Nodo control_iterface iniciado
[ INFO] [1534532129.579602490]: upate_frec :0.100000
[ INFO] [1534532129.579678093]: threshold_frec :0.010000
[INFO] [1534532129.796961]: Controller Spawner: Waiting for service controller_manager/load_controller
[INFO] [1534532129.801200]: Controller Spawner: Waiting for service controller_manager/switch_controller
[INFO] [1534532129.803069]: Controller Spawner: Waiting for service controller_manager/unload_controller
[INFO] [1534532129.804514]: Loading controller: diff_drive_controller
[ INFO] [1534532129.818424988]: Controller state will be published at 50Hz.
[ INFO] [1534532129.820278650]: Wheel separation will be multiplied by 1.
[ INFO] [1534532129.821801685]: Wheel radius will be multiplied by 1.
[ INFO] [1534532129.822550316]: Velocity rolling window size of 10.
[ INFO] [1534532129.824035132]: Velocity commands will be considered old if they are older than 0.5s.
[ INFO] [1534532129.825167609]: Allow mutiple cmd_vel publishers is enabled
[ INFO] [1534532129.826987248]: Base frame_id set to base_link
[ INFO] [1534532129.827955590]: Odometry frame_id set to odom
[ INFO] [1534532129.828735530]: Publishing to tf is enabled
[ INFO] [1534532129.850198489]: Odometry params : wheel separation 0.525, wheel radius 0.161
[ INFO] [1534532129.853101519]: Adding left wheel with joint name: wheel_left_joint and right wheel with joint name: wheel_right_joint
[INFO] [1534532129.880613]: Controller Spawner: Loaded controllers: diff_drive_controller
[INFO] [1534532129.980640]: Started controllers: diff_drive_controller
But in another computer **Dynamic Reconfigure** is called and change all the parameters.
javier@javier-desktop:~/catkin_ws$ roslaunch sara_control control_launch.launch
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://javier-desktop:35357/
SUMMARY
========
PARAMETERS
* /diff_drive_controller/angular/z/has_acceleration_limits: True
* /diff_drive_controller/angular/z/has_jerk_limits: True
* /diff_drive_controller/angular/z/has_velocity_limits: True
* /diff_drive_controller/angular/z/max_acceleration: 2.0
* /diff_drive_controller/angular/z/max_jerk: 2.5
* /diff_drive_controller/angular/z/max_velocity: 3.0
* /diff_drive_controller/base_frame_id: base_link
* /diff_drive_controller/cmd_vel_timeout: 0.5
* /diff_drive_controller/left_wheel: wheel_left_joint
* /diff_drive_controller/linear/x/has_acceleration_limits: True
* /diff_drive_controller/linear/x/has_jerk_limits: True
* /diff_drive_controller/linear/x/has_velocity_limits: True
* /diff_drive_controller/linear/x/max_acceleration: 0.4
* /diff_drive_controller/linear/x/max_jerk: 1.0
* /diff_drive_controller/linear/x/max_velocity: 0.6
* /diff_drive_controller/linear/x/min_acceleration: -0.4
* /diff_drive_controller/linear/x/min_velocity: -0.1
* /diff_drive_controller/pose_covariance_diagonal: [0.001, 0.001, 10...
* /diff_drive_controller/publish_rate: 50.0
* /diff_drive_controller/right_wheel: wheel_right_joint
* /diff_drive_controller/twist_covariance_diagonal: [0.001, 0.001, 10...
* /diff_drive_controller/type: diff_drive_contro...
* /diff_drive_controller/wheel_radius: 0.161
* /diff_drive_controller/wheel_radius_multiplier: 1.0
* /diff_drive_controller/wheel_separation: 0.525
* /diff_drive_controller/wheel_separation_multiplier: 1.0
* /rosdistro: kinetic
* /rosversion: 1.12.13
* /use_sim_time: False
NODES
/
SARA_control_interface (sara_control/control_node)
SARA_controller_manager (controller_manager/spawner)
SARA_interface (sara_control/hwinterface_script.py)
cmd_vel_relay (topic_tools/relay)
auto-starting new master
process[master]: started with pid [9794]
ROS_MASTER_URI=http://localhost:11311
setting /run_id to 18129470-a2d5-11e8-8bea-d850e6e4d88f
process[rosout-1]: started with pid [9807]
started core service [/rosout]
process[SARA_interface-2]: started with pid [9810]
process[SARA_control_interface-3]: started with pid [9816]
process[SARA_controller_manager-4]: started with pid [9827]
process[cmd_vel_relay-5]: started with pid [9828]
[ INFO] [1534589676.195829132]: Nodo control_iterface iniciado
[ INFO] [1534589676.250602878]: upate_frec :0.100000
[ INFO] [1534589676.250661294]: threshold_frec :0.010000
[INFO] [1534589676.593053]: Controller Spawner: Waiting for service controller_manager/load_controller
[INFO] [1534589676.594501]: Controller Spawner: Waiting for service controller_manager/switch_controller
[INFO] [1534589676.596604]: Controller Spawner: Waiting for service controller_manager/unload_controller
[INFO] [1534589676.598377]: Loading controller: diff_drive_controller
[ INFO] [1534589676.618351435]: Controller state will be published at 50Hz.
[ INFO] [1534589676.621507450]: Wheel separation will be multiplied by 1.
[ INFO] [1534589676.623444413]: Left wheel radius will be multiplied by 1.
[ INFO] [1534589676.623505592]: Right wheel radius will be multiplied by 1.
[ INFO] [1534589676.624466274]: Velocity rolling window size of 10.
[ INFO] [1534589676.625891871]: Velocity commands will be considered old if they are older than 0.5s.
[ INFO] [1534589676.626673847]: Allow mutiple cmd_vel publishers is enabled
[ INFO] [1534589676.628431372]: Base frame_id set to base_link
[ INFO] [1534589676.629518026]: Odometry frame_id set to odom
[ INFO] [1534589676.630440359]: Publishing to tf is enabled
[ INFO] [1534589676.654955026]: Odometry params : wheel separation 0.525, left wheel radius 0.161, right wheel radius 0.161
[ INFO] [1534589676.659312399]: Adding left wheel with joint name: wheel_left_joint and right wheel with joint name: wheel_right_joint
[ WARN] [1534589676.675037135]: updateConfig() called on a dynamic_reconfigure::Server that provides its own mutex. This can lead to deadlocks if updateConfig() is called during an update. Providing a mutex to the constructor is highly recommended in this case. Please forward this message to the node author.
[ INFO] [1534589676.678907906]: Dynamic Reconfigure:
DynamicParams:
Odometry parameters:
left wheel radius: 1
right wheel radius: 1
wheel separation: 1
Publication parameters:
Publish executed velocity command: 0
Publication rate: 50
Publish frame odom on tf: 1
the rosdep view is empty: call 'sudo rosdep init' and 'rosdep update'
[INFO] [1534589676.751959]: Controller Spawner: Loaded controllers: diff_drive_controller
[INFO] [1534589676.851809]: Started controllers: diff_drive_controller
I tried to find a solution but I didn't know why this function is called in one computer as the code is the same.
Both computers are running ubuntu 16.04 x64, and the code is the same.
Thanks for the help, regards.
↧
Multiple dynamic_reconfigure servers in the same node? [Python]
It is possible to have multiple dynamic_reconfigure servers in the same node?
When I try that I get this error message:
Tried to advertise a service that is already advertised in this nodeMoreover, the first configuration server become unusable. I though that it should be possible since a set of nodelets can run on the same node with different dynamic configuration servers. Or it is more complex than it seems? --- Edit: Check a more updated question about this issue: https://answers.ros.org/question/289040/multiple-instances-of-a-dynamic_reconfigure-server-in-the-same-client-node/
↧
Remap client name for dynamic reconfigure
For setting up a dynamic reconfigure client I need to specify the name of the node I like to reconfigure, e.g. in Python:
self._client = dynamic_reconfigure.client.Client(some_node_name)
Now, I'd like to remap ```some_node_name``` in my roslaunch file to make it easy to use in different contexts, e.g.
However, this doesn't work. So far I only managed to modify ```some_node_name``` via parameters.
Is there a way to remap the node name of the dynamic reconfigure client?
↧
One callback interrupting another, is that possible?
Hi, I built a node with a class in it, the class has two callbacks one is bind to dynamic reconfigure server, the other is bind to a service. Both callbacks are class member. So it is something like this:
class A
{
bool param;
bool callback1 (node::service::Request &req, node::service::Response &res)
{
//some long computations
if (param)
//do something
else
//do something else
}
void callback2 (node::nodeConfig &config, uint32_t level)
{
//updating parameters...
param = config.param;
}
}
The service callback has some internal loop that requires user input to continue, my idea was to let user (re)configure parameters while the service executes. However this is not working because callback2 does not interrupt callback1 and param is only set AFTER callback1 terminates.
What would be the correct way to achieve this ? How can i rewrite the class so that callback2 can interrupt callback1 ?
I thought that maybe this happens because both callbacks are class members, what if callback2 is a global function ?
↧
↧
level value in dynamic reconfigure
Hello everyone, I am learning about creating a dynamic reconfigure server and I just do not understand what the level value is and how it is useful. Could you please briefly explain it and give a simple example?
Thank you!
↧
updateConfig() called on a dynamic_reconfigure::Server that provides its own mutex
when I added and load my controllers the differential driver controller i got the following error
My configuration file is very simple
mobile_base_controller:
type: "diff_drive_controller/DiffDriveController"
left_wheel: 'left_wheel_joint'
right_wheel: 'right_wheel_joint'
pose_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0]
twist_covariance_diagonal: [0.001, 0.001, 1000000.0, 1000000.0, 1000000.0, 1000.0]
the error causing Dead lock :-
[ WARN] [1544302051.671006910, 0.688000000]: updateConfig() called on a dynamic_reconfigure::Server that provides its own mutex. This can lead to deadlocks if updateConfig() is called during an update. Providing a mutex to the constructor is highly recommended in this case. Please forward this message to the node author.
I'm using Ros Kinetic , how can i fix this problem as it cause dead look *the robot moved for short time and stop)
↧
what is the replacement of dynamic_reconfigure in ros2.?
i am new to ros. I am building the rslidar sensor driver in ros2 form but i am stuck at dynamic_reconfigure. as it is not yet available for use in ros2(as much of my knowledge)...
↧