ROS Noetic install (from source) chokes on BlueRov2
ROS newbie here
I have installed ROS Noetic desktop-full following directions at http://wiki.ros.org/noetic/Installation/Source
(This is actually a re-installation; on my first try I did not realize ROS desktop-full includes Gazebo, and installed Gazebo before ROS. After finding the above Wiki page, I realized my mistake and removed it all, including environment variables.)
Things seemed to go without problems, so I tested the gazebo freebouyancy plugin by running gazebo --verbose worlds/freebuoyancy.world -u and it worked. Then I tried testing the BlueRov2 model with Gazebo stand-alone gazebo --verbose worlds/underwater.world -u within a previously installed bluerovrosplayground. That behaved as I expected, similar to the freebuoyancy demo.
However when I tried to run with ArduSub and QGroundControl, things looked okay until I clicked "play" on Gazebo, and then it started spewing endless errors and warnings:
{Err} [Joint.cc:941] Calling Joint::SetForcewith an index [0] out of range
[Err] [ODEJoint.cc:1153] Something's wrong, joint [BlueRov2::thruster6_joint] index [0] out of range
[Wrn] [ODEFixedJoint.cc:110] ODEFixedJoint: called method SetForceImpl that is not valid for joints of type fixed.
cycling through thrusters 1 to 6 forever.
This was what I saw with the former binary installation, and why I went to install from source, to see if I could glean anything from looking at Joint.cc. But I cannot find any mention of source files with these names.
I also mention that I was able to connect and start flying in QGroundControl, but the controls had no effect, I could not maneuver the vehicle in any way.
BTW I have no requirement to model bluerov2, any underwater vehicle with thrusters would do as a starting point.
Any help would be greatly appreciated.
Asked by Hugh-B-Rove on 2023-01-17 15:55:56 UTC
Comments
Based on reading the source code, I suspected that the errors were triggered by the joints defined in the Ardupilot plugin section of the BlueRov2.sdf model file. I removed the declaration in all 6 control channels, leaving only the .for each. This eliminated the errors and warning messages from Gazebo, but at start-up it reports two new errors:
[Err] [ArduPilotPlugin.cc:488] [BlueRov2] Please specify a jointName, where the control channel is attached.
[Err] [ArduPilotPlugin.cc:497] [BlueRov2] Couldn't find specified joint []. This plugin will not run.
It appears that Gazebo won't work with the jointNames, and ArdupilotPlugin won't work without them.
In addition, I checked another Ubuntu laptop on which a colleague had installed Gazebo 9 (with ArduSub and QGroundControl, but not by way of ros-desktop-full); in that environment,everything plays together, and the BlueRov2.sdf file does not declare jointNames in the Ardupilot plugin section.
Asked by Hugh-B-Rove on 2023-01-19 15:30:46 UTC
Asked by Hugh-B-Rove on 2023-01-23 17:55:22 UTC
We have decided that at present Gazebo 11 does not support BlueRov2 and are stepping back to ROS Melodic with Gazebo 9. This decision was reinforced when we discovered that the uuv_simulator plugin which provides the Fossen equations is only available in ROS Kinetic, Lunar, or Melodic. Our understanding is that this plugin is essential for simulating added mass effects. (As mentioned above, we are not married to BlueRov2, as we aim to simulate a slender ROV, but we certainly need to take added mass into account.)
If anyone has reason to believe we have misjudged this, please let us know.
Asked by Hugh-B-Rove on 2023-02-08 13:11:22 UTC