I was wondering if there was a supported ROS package for BlueROV2.
We are looking into buying a small AUV for the department. However, as the use would be mainly for path planning and manoeuvring research, we would like an extensible platform. In particular, we would be keen to use the on-board camera to estimate position, merge the data from multiple sensors and store it, test different control strategies, etc. These would be possible under a ROS framework, but I have never tried ArduSub before.
Has anyone in a similar position managed to build a ROS package or created similar tools within ArduSub? Any tips?
Hi Enrico, we made a ros package for the bluerov quite some time ago, and it is out of date and unmaintained at this point. There has been some interest/work recently by a few folks who have picked up where we left off and started using ROS with ArduSub.
I recommend reaching out on gitter, and trying out this patch of our ros package that is waiting on a review.
It is our goal to have excellent ROS integration in the future, but it has not been regarded as a priority. We have been getting more and more interest recently though, so that may change soon.
Hello Clyde, I’ve tried to use your driver since I’m also interested in using the BlueROV with ROS Kinetic.
However, it seems like it is not connecting with the ROV. Could it be because of the OS? I’m using the default software that comes with the robot. Maybe it needs to have ubuntu 16 and ROS also in the ROV’s RPi?
The topside computer will communicate with the ROV using UDP port 14550, if you want to check the topside computer communication is working with the ROV, try QGC.
Hi, Olaya – the orca driver doesn’t use the Pixhawk at all, so it requires a different motor controller. I’m currently experimenting with the Pololu Maestro. I’m happy to discuss this on gitter or github.
If you’re looking for a less invasive way to connect ROS to the BlueROV2 I recommend looking at http://wiki.ros.org/mavros, which provides a bridge between the MAV (ArduSub) message bus and ROS message bus.
If you want to try, we have a WIP ROS package, it includes a gazebo simulation with/without ROS integration and a bridge to control the ROV via ROS topics.
@patrickelectric I’am testing your package, but i have a problem, i cannot override in every channel just in 3 and 5. Did you know what is the problem?
Are you sending rc values like this ? rostopic pub -r 10 /BlueRov2/rc_channel2/set_pwm std_msgs/UInt16 1100
Can you say exactly what are you performing and how ?
Yes, it’s strange. Now when i send PWM to RC 5 channel, i have two motors spinning.
I have the configuration with Pixhawk, RPI3 with the original image in ArduSub website, connected by Ethernet to a Top side PC (like as in above image). In the top side PC i’am running the just the ROS core and the node of BlueRov2. In this moment i’am just testing and try to control motors individual.
Oh, now i understand! Grateful It will help me for my propose. My misunderstanding was when i “override” to a RC channel i was thinking that this action is a Digital Pin Write function (Arduino). But, if i understand, ArduSub works in some high level abstraction (in a concept of radio modelism), channels controls the “movement” not a digital pin, right?
But, with curiosity, I have already try with mavros without success too:
Hello Patrick,
Regarding this channel configuration, I’ve consulted this link where it says that:
there are 8 main outputs and 6 auxiliary outputs. It is important not to connect analog servos to the main outputs, because the very fast update rate can cause the servo to burn itself out.
However, it is not clear to me which are the “main” and which the “auxiliar”.
I added an additional thruster to my bluerov2, and I want to run it when pressing the directional pad up and down. I decided to connect it to the light level channels, and modify the ROS node user_mav in order to run it.
However, I found that mavros/rc/override only publishes in 8 channels. How is the correspondence with the channels you mentioned above? Is there any other way that the light level channels should be accessed?
Oh sorry, I didn’t realize that rc_channel9-10 referred to the 8th field of the mavros override topic!
About the values, do all of them need to be between 1100 and 1900?
I have the camera servo connected to MAIN8 in the pixhawk, and it presents a very strange behavior, very different to when it is commanded through the QGroundControl.
On the other hand, the lights should be in MAIN7, so I connected the additional thruster there, but nothing happens! maybe I have the connections wrong? I did them according to this page.
Additionally, is there a way to send commands to the aux ports through ROS? I didn’t find any documentation on this!