1. The first place i am giving to a bunch of ROS with Gazebo (this is a simulator). The script is as follows: by the launch file the gazebo starts with the needed world, the robot model are spawned there, and then the controllers are started. You sit in the console, start the launch, look rostopic list – everything is fine, but when trying to listen any topic (rostopic echo /joint_states) – silence.
You are sitting, you are thinking .. Gazebo is started, topics are, the console without errors. So again I forgot to press the play sim button in gazebo. So you can also specify arg name = ‘paused’ value = ‘false’ you will say. If it is wheeled robot – ok, but for example for a bipedal before the start you need to wait loading of controllers, otherwise it will be on the ground. You can think of bicycles, but how to make beautiful startup of the controllers in the launch file, and then start the simulation – I did not find (as the launch file starts the nodes asynchronously – making a separate call to start the simulation after loading the controllers does not rock, it will run faster than loading the controllers).
2. Another mistake that pleased:
[ERROR]: This robot has a joint named "ABC" which is not in the gazebo model. [FATAL]: Could not initialize robot simulation interface
Here the script is similar – you start gazebo with the robot, only earlier one of the joins was revolute, and now you decided that you do not need to jerk and did joint name = “RForearmPitch” type = “fixed” … (an example from the xacro description or urdf ). In my case, after describing all joints, there was a description of transmission , which i have to remove also. Well, at the end you will see this:
[ERROR]: Exception thrown while initializing controller ABC_position_controller. Could not find resource 'ABC' in 'hardware_interface::EffortJointInterface'. [ERROR]: Initializing controller 'ABC_position_controller' failed [ERROR]: Failed to load ABC_position_controller
which already quite explicitly says that you forgot to remove another controller, which is obviously not needed for a fixed joint.
3. Quite understandable one:
Error [Param.cc:451] Unable to set value [-inf -inf inf -5.3e-05 -0.001924 0] for key [pose] gzclient: /build/ogre-1.9-mqY1wq/ogre-1.9-1.9.0+dfsg1/OgreMain/include/OgreAxisAlignedBox.h:252: void Ogre::AxisAlignedBox::setExtents(const Ogre::Vector3&, const Ogre::Vector3&): Assertion `(min.x <= max.x && min.y <= max.y && min.z <= max.z) && "The minimum corner of the box must be less than or equal to the maximum corner." failed.
suggests looking at the minimum and maximum value (limits) for the joint in description. For example, min = 0.7 and max = 0.5 are invalid, and I just lost minus.
4. Also i remember looking for a funny mistake - i was dabbling with rtabmap , there are a lot of different settings, and in two of them (like remap from ="rgb/image" and remap from ="depth/image") accidentally indicated the same URL in target. As a result, I searched for a long time why rqt or rviz are falling when trying to display images from the camera. Logs said this:
[ERROR]: Input type must be image=mono8,mono16,rgb8,bgr8 and image_depth=32FC1,16UC1,mono16 [ERROR]: Could not convert rgb/depth msgs! Aborting rtabmap update...
5. Also, be careful with the namespace parameter. In one of the examples that I copied and tried to make work, he was listed and disturb rqt, which was tightly hung. Without it, everything is fine.
For today, enough, if I decide that something else worthy of the list - look for new records.