Visualisation and simulation tools for Kobuki
yujinrobot / kobuki_desktop Goto Github PK
View Code? Open in Web Editor NEWVisualisation and simulation tools for Kobuki
Home Page: http://www.ros.org/wiki/kobuki_desktop
Visualisation and simulation tools for Kobuki
Home Page: http://www.ros.org/wiki/kobuki_desktop
It's a slow process, but it's on its way. Let's gather here all the issues we encounter.
So far:
Sometimes it move, but very erratically. I thought this was solved with #42 for Jade-Gazebo5 (also merged in kinetic).
Hi all,
Is it posible to create a branch for Melodic? I don't know if your are planning to release all your kobuki packages for Melodic (pleeeease), but it would be the first step.
I have it running in Melodic from sources, compiling also from sources, with no changes:
But a package would save some time ;)
Best
Francisco
Currently it's buggy - set to the battery percantage!
But is this even used by the graphical display?
I use the melodic branch of this repo, and start up the simulation with roslaunch kobuki_gazebo kobuki_playground.launch
.
I get the topics for the events for the bumper and cliff sensors under the namespace /mobile_base/events
, but not the wheel drop sensors.
Is there any easy way I can expose this data via a topic as well?
Else, if I need to write some source code to make this happen, could I please be pointed to the right files to edit? This would save me the many hours required to study the architecture of this stack and trace the origin point.
Same thing happened in Gazebo:
https://bitbucket.org/osrf/gazebo/issue/581/boost-shared_-_cast-are-deprecated-removed
This is the error I get (on my mac) with Boost 1.55.0:
/Users/william/hydro_tb_sim/src/kobuki_desktop/kobuki_gazebo_plugins/src/gazebo_ros_kobuki.cpp:251:31: error: no member named 'shared_dynamic_cast' in namespace 'boost'
cliff_sensor_left_ = boost::shared_dynamic_cast<sensors::RaySensor>(
~~~~~~~^
/Users/william/hydro_tb_sim/src/kobuki_desktop/kobuki_gazebo_plugins/src/gazebo_ros_kobuki.cpp:251:69: error: expected '(' for function-style cast or type construction
cliff_sensor_left_ = boost::shared_dynamic_cast<sensors::RaySensor>(
~~~~~~~~~~~~~~~~~~^
/Users/william/hydro_tb_sim/src/kobuki_desktop/kobuki_gazebo_plugins/src/gazebo_ros_kobuki.cpp:253:33: error: no member named 'shared_dynamic_cast' in namespace 'boost'
cliff_sensor_center_ = boost::shared_dynamic_cast<sensors::RaySensor>(
~~~~~~~^
/Users/william/hydro_tb_sim/src/kobuki_desktop/kobuki_gazebo_plugins/src/gazebo_ros_kobuki.cpp:253:71: error: expected '(' for function-style cast or type construction
cliff_sensor_center_ = boost::shared_dynamic_cast<sensors::RaySensor>(
~~~~~~~~~~~~~~~~~~^
/Users/william/hydro_tb_sim/src/kobuki_desktop/kobuki_gazebo_plugins/src/gazebo_ros_kobuki.cpp:255:32: error: no member named 'shared_dynamic_cast' in namespace 'boost'
cliff_sensor_right_ = boost::shared_dynamic_cast<sensors::RaySensor>(
~~~~~~~^
/Users/william/hydro_tb_sim/src/kobuki_desktop/kobuki_gazebo_plugins/src/gazebo_ros_kobuki.cpp:255:70: error: expected '(' for function-style cast or type construction
cliff_sensor_right_ = boost::shared_dynamic_cast<sensors::RaySensor>(
~~~~~~~~~~~~~~~~~~^
/Users/william/hydro_tb_sim/src/kobuki_desktop/kobuki_gazebo_plugins/src/gazebo_ros_kobuki.cpp:301:20: error: no member named 'shared_dynamic_cast' in namespace 'boost'
bumper_ = boost::shared_dynamic_cast<sensors::ContactSensor>(
~~~~~~~^
/Users/william/hydro_tb_sim/src/kobuki_desktop/kobuki_gazebo_plugins/src/gazebo_ros_kobuki.cpp:301:62: error: expected '(' for function-style cast or type construction
bumper_ = boost::shared_dynamic_cast<sensors::ContactSensor>(
~~~~~~~~~~~~~~~~~~~~~~^
/Users/william/hydro_tb_sim/src/kobuki_desktop/kobuki_gazebo_plugins/src/gazebo_ros_kobuki.cpp:325:17: error: no member named 'shared_dynamic_cast' in namespace 'boost'
imu_ = boost::shared_dynamic_cast<sensors::ImuSensor>(
~~~~~~~^
/Users/william/hydro_tb_sim/src/kobuki_desktop/kobuki_gazebo_plugins/src/gazebo_ros_kobuki.cpp:325:55: error: expected '(' for function-style cast or type construction
imu_ = boost::shared_dynamic_cast<sensors::ImuSensor>(
~~~~~~~~~~~~~~~~~~^
8 warnings and 10 errors generated.
Bugs & ideas for Kobuki's dashboard
Traceback (most recent call last):
File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_plot/plot_widget.py", line 168, in update_plot
self.data_plot.redraw()
File "/opt/turtlebot/kobuki_desktop/kobuki_qtestsuite/plugins/../src/kobuki_qtestsuite/full_size_data_plot.py", line 54, in redraw
data_x, data_y, plot = curve
ValueError: too many values to unpack
Is it possible to instantiate multiple Kobuki models so as to have a single tf tree organized by model names? Organization could be based on prefixes to frame IDs, as with tf_prefix
in robot_state_publisher. Similarly, how can the odom
topic be pushed into a private namespace?
I have not found a way to achieve these. I suspect that my difficulty is due to a bug in how gazebo_ros_kobuki.cpp
handles naming of the topic odom
and the frame base_footprint
.
I am happy to try to fix it and open a pull request, but I want to first be sure this is indeed an issue. Below is a diff for gazebo_ros_kobuki.cpp
(as of 9f509a5) that is a first step toward correction, though it would be better to provide a parameter regarding whether and what to use as a prefix for frame IDs.
--- a/kobuki_gazebo_plugins/src/gazebo_ros_kobuki.cpp
+++ b/kobuki_gazebo_plugins/src/gazebo_ros_kobuki.cpp
@@ -195,7 +195,7 @@ void GazeboRosKobuki::Load(physics::ModelPtr parent, sdf::ElementPtr sdf)
odom_pose_[0] = 0.0;
odom_pose_[1] = 0.0;
odom_pose_[2] = 0.0;
- odom_pub_ = nh_.advertise<nav_msgs::Odometry>("odom", 1);
+ odom_pub_ = nh_priv_.advertise<nav_msgs::Odometry>("odom", 1);
odom_reset_sub_ = nh_priv_.subscribe("commands/reset_odometry", 10, &GazeboRosKobuki::resetOdomCB, this);
/*
@@ -395,7 +395,7 @@ void GazeboRosKobuki::OnUpdate()
*/
odom_.header.stamp = joint_state_.header.stamp;
odom_.header.frame_id = "odom";
- odom_.child_frame_id = "base_footprint";
+ odom_.child_frame_id = node_name_+"/base_footprint";
// Distance travelled by main wheels
double d1, d2;
Same as here: turtlebot/turtlebot_create_desktop#7
Fix it!
Details here: yujinrobot-release/kobuki_desktop-release#1
Env: ros kinetic + gazebo 7
when I use hardware_interface/EffortJointInterface
for joint transmission_interface/SimpleTransmission
,
following error can be found when start gazebo:
[ WARN] [1537083452.199473832, 0.330000000]: Gazebo ROS Kobuki plugin: NaN in d1. Step time: 0.01, WD: 0.07, velocity: -nan
[ WARN] [1537083452.199515712, 0.330000000]: Gazebo ROS Kobuki plugin: NaN in d2. Step time: 0.01, WD: 0.07, velocity: -nan
[ WARN] [1537083452.299705087, 0.430000000]: Gazebo ROS Kobuki plugin: NaN in d1. Step time: 0.01, WD: 0.07, velocity: -nan
[ WARN] [1537083452.299738738, 0.430000000]: Gazebo ROS Kobuki plugin: NaN in d2. Step time: 0.01, WD: 0.07, velocity: -nan
I guess, the reason is we have to ensure the consistency of kobuki wheel hardware interface and joint interface in gazebo, and kobuki wheel hardware is based on velocity as implemented in https://github.com/yujinrobot/kobuki_desktop/blob/devel/kobuki_gazebo_plugins/src/gazebo_ros_kobuki_updates.cpp#L230-L231.
So we can not choose hardware_interface/EffortJointInterface
, which applies setForce()
Is it right?
It moves very weirdly. After looking for it a lot, I found this commit in a fork:
MayfieldRoboticsPublic@4246c6e
That seems to solve it. The changes in Gazebo5 are: https://bitbucket.org/osrf/gazebo/pull-request/1218/change-behavior-of-odejoint-setvelocity/diff
and point 14 Gazebo 5.0.0: https://bitbucket.org/osrf/gazebo/src/default/Changelog.md
Please solve this issue. Thanks!
I met a problem when i make my space. It stopped here:
[ 98%] Built target kobuki_nodelet
/bin/sh: 1: pyrcc5: not found
make[2]: *** [kobuki_desktop/kobuki_qtestsuite/CMakeFiles/kobuki_qtestsuite] 错误 127
make[1]: *** [kobuki_desktop/kobuki_qtestsuite/CMakeFiles/kobuki_qtestsuite.dir/all] 错误 2
make: *** [all] 错误 2
Invoking "make -j1 -l1" failed
Can you tell me the reason and help me solve it? Thank you.
Maybe?
Since we stopped using robot_pose_ekf for the real robot, we should do the same for simulation. This requires adding processing of IMU data to the kobuki plugin.
<node pkg="diagnostic_aggregator" type="aggregator_node" name="diagnostic_aggregator" >
<rosparam command="load" file="$(find turtlebot_bringup)/param/kobuki/diagnostics.yaml" />
</node>
It seems that https://github.com/ros/rosdistro/blob/master/hydro/distribution.yaml is missing the source
entry for kobuki_desktop
and also others, like kobuki_core
or kobuki_soft
. I did not check the other ROS distros.
Update with extra features that help non-developers exhibit kobuki for us.
As we test over the next two-three weeks, list here things we think should be in it.
Currently they are always grey, although https://github.com/ros-visualization/rqt_robot_plugins/tree/hydro-devel/rqt_robot_dashboard/images holds coloured icons.
Follow up from #4. Add nav view to the kobuki dashboard.
We no longer use pointcloud_to_laserscan, update accordingly.
When i catkin_make my workspace,the error happened in the end:
/bin/sh: 1: pyrcc5: not found
make[2]: *** [kobuki_desktop/kobuki_qtestsuite/CMakeFiles/kobuki_qtestsuite] 错误 127
make[1]: *** [kobuki_desktop/kobuki_qtestsuite/CMakeFiles/kobuki_qtestsuite.dir/all] 错误 2
make: *** [all] 错误 2
Invoking "make -j1 -l1" failed
Can you help me solve it?Thank you.
Just as implemented in the kobuki_node:
$ rostopic info /mobile_base/commands/reset_odometry
Type: std_msgs/Empty
Publishers: None
Subscribers:
* /mobile_base_nodelet_manager (http://pirate-nest:51105/)
Kobuki's gazebo plugin has a spin() function, which doesn't seem to be used. Check this and remove the function, if not used.
When first loading a world file with models from the online model database, Gazebo can't find those resources (e.g. dae files).
However, once one adds the unknown objects from the online database manually to the world, the next loading of that world file works. I guess, that is because a local copy of the model exists now.
Maybe we have the wrong resource links in our world files?
E.g. the cinder block from the playground.world
<model name='cinder_block'>
[...]
<visual name='visual'>
<geometry>
<mesh>
<uri>model://cinder_block/meshes/cinder_block.dae</uri>
</mesh>
</geometry>
</visual>
[...]
</model>
Maybe good to implement in the future.
For example:
/opt/kobuki_workspace/catkin_ws/src/turtlebot_create_desktop/create_gazebo_plugins/src/gazebo_ros_create.cpp: In member function ‘virtual void gazebo::GazeboRosCreate::Load(gazebo::physics::ModelPtr, sdf::ElementPtr)’:
/opt/kobuki_workspace/catkin_ws/src/turtlebot_create_desktop/create_gazebo_plugins/src/gazebo_ros_create.cpp:54:80: warning: ‘std::string sdf::Element::GetValueString(const string&)’ is deprecated (declared at /usr/include/sdformat-1.4/sdf/SDFImpl.hh:226) [-Wdeprecated-declarations]
There was a dependency cleanup in gazebo_ros_pkgs ros/rosdistro#14563
There's a known issue in catkin
ros/catkin#856
Currently its a copy of create.
Remove the dependency for the create from manifest and stack.xml's once done.
rqt_plot API has been changed by this commit.
ros-visualization/rqt_common_plugins@f7a485e
kobuki_qtestsuite is crashing with this error
PluginManager._load_plugin() could not load plugin "kobuki_qtestsuite/Kobuki Test Suite":
Traceback (most recent call last):
File "/opt/ros/indigo/lib/python2.7/dist-packages/qt_gui/plugin_handler.py", line 98, in load
self._load()
File "/opt/ros/indigo/lib/python2.7/dist-packages/qt_gui/plugin_handler_direct.py", line 54, in _load
self._plugin = self._plugin_provider.load(self._instance_id.plugin_id, self._context)
File "/opt/ros/indigo/lib/python2.7/dist-packages/qt_gui/composite_plugin_provider.py", line 71, in load
instance = plugin_provider.load(plugin_id, plugin_context)
File "/opt/ros/indigo/lib/python2.7/dist-packages/qt_gui/composite_plugin_provider.py", line 71, in load
instance = plugin_provider.load(plugin_id, plugin_context)
File "/opt/ros/indigo/lib/python2.7/dist-packages/rqt_gui_py/ros_py_plugin_provider.py", line 60, in load
return super(RosPyPluginProvider, self).load(plugin_id, plugin_context)
File "/opt/ros/indigo/lib/python2.7/dist-packages/qt_gui/composite_plugin_provider.py", line 71, in load
instance = plugin_provider.load(plugin_id, plugin_context)
File "/opt/ros/indigo/lib/python2.7/dist-packages/rqt_gui/ros_plugin_provider.py", line 94, in load
return class_ref(plugin_context)
File "/home/jihoonl/research/ros/kobuki/src/kobuki_desktop/kobuki_qtestsuite/src/kobuki_qtestsuite/testsuite.py", line 43, in __init__
self._widget.setupUi()
File "/home/jihoonl/research/ros/kobuki/src/kobuki_desktop/kobuki_qtestsuite/src/kobuki_qtestsuite/testsuite_widget.py", line 43, in setupUi
self._ui.battery_profile_frame.setupUi(self._ui.configuration_dock.cmd_vel_topic_name())
File "/home/jihoonl/research/ros/kobuki/src/kobuki_desktop/kobuki_qtestsuite/src/kobuki_qtestsuite/battery_profile_frame.py", line 51, in setupUi
self._plot_widget.switch_data_plot_widget(FullSizeDataPlot(self._plot_widget))
File "/opt/ros/indigo/lib/python2.7/dist-packages/rqt_plot/plot_widget.py", line 150, in switch_data_plot_widget
self.data_plot.autoscroll(self.autoscroll_checkbox.isChecked())
AttributeError: 'FullSizeDataPlot' object has no attribute 'autoscroll'
$ rosrun rqt_plot rqt_plot
rqt_plot.plot: importing PyQtGraphDataPlot
rqt_plot.plot: import of PyQtGraphDataPlot failed
rqt_plot.plot: importing MatDataPlot
rqt_plot.plot: importing QwtDataPlot
WARNING: Package name "swig-wx" does not follow the naming conventions. It should start with a lower case letter and only contain lower case letters, digits and underscores.
WARNING: Package name "swig-wx" does not follow the naming conventions. It should start with a lower case letter and only contain lower case letters, digits and underscores.
Traceback (most recent call last):
File "/opt/ros/groovy/lib/rqt_plot/rqt_plot", line 10, in <module>
sys.exit(main.main(standalone=plugin, plugin_argument_provider=Plot.add_arguments))
File "/opt/ros/groovy/lib/python2.7/dist-packages/rqt_gui/main.py", line 57, in main
return super(Main, self).main(argv, standalone=standalone, plugin_argument_provider=plugin_argument_provider)
File "/opt/ros/groovy/lib/python2.7/dist-packages/qt_gui/main.py", line 468, in main
plugins = plugin_manager.find_plugins_by_name(plugin)
File "/opt/ros/groovy/lib/python2.7/dist-packages/qt_gui/plugin_manager.py", line 118, in find_plugins_by_name
for plugin_id, plugin_full_name in self.get_plugins().items():
File "/opt/ros/groovy/lib/python2.7/dist-packages/qt_gui/plugin_manager.py", line 124, in get_plugins
self.discover()
File "/opt/ros/groovy/lib/python2.7/dist-packages/qt_gui/plugin_manager.py", line 108, in discover
self._plugin_menu.add_plugin(plugin_descriptor)
File "/opt/ros/groovy/lib/python2.7/dist-packages/qt_gui/plugin_menu.py", line 79, in add_plugin
self._enrich_action(action, action_attributes, base_path)
File "/opt/ros/groovy/lib/python2.7/dist-packages/qt_gui/plugin_menu.py", line 130, in _enrich_action
raise UserWarning('icon "%s" not found' % str(path))
UserWarning: icon "../src/kobuki_qtestsuite/resources/images/kobuki_icon.png" not found
Somehow the bumpers stopped working. Fix it!
I got an error when compiling the kobuki_gazebo_plugin at NVIDIA TK1. such as
/usr/include/c++/4.8/bits/c++0x_warning.h:32: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options. #error This file requires compiler and library support for the \
and I fixed it when I add following code at ./kobukin_gazebo_plugins/CMakeLists.txt.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLUGS} -std=c++11")
It may useful for any other use kobuki at ARM.
From indigo, Publisher complains not having queue_size arguement..
KGP - Kobuki Gazebo Plugin
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.