Kingfisher Unmanned Surface Vessel
ROS Software Maintainer: Clearpath Robotics
Kingfisher Unmanned Surface Vessel (USV) is an agile, battery operated boat designed for research and rapid prototyping. Fully equipped with a sensor station, an onboard Atom PC for running hardware drivers and intelligence, electric thrusters, GPS, wifi radio, and semi-planing hulls, Kingfisher serves as a marine research platform as well as a remote survey system for bathymetric and hyrometric data collection. This USV includes advanced payload capabilities, easy stow and portability, and can be easily customized to meet research requirements.
Kingfisher USV is ready for teleoperation out-of-the-box with integrated GPS, IMU, compass, and ROS drivers.
For more information or to receive a quote, please visit us online.
Working With Kingfisher
To get started, use apt to install the desktop support software:
sudo apt-get install ros-hydro-kingfisher-desktop
Please feel free to use the Kingfisher software from source and hack on it—we're always excited to merge patches from users.
Kingfisher's roscore launches from an upstart job with the following environment:
export ROS_IP=192.168.1.1 export ROS_MASTER_URI=http://$ROS_IP:11311
Where 192.168.1.1 is the static IP of the onboard ethernet port. This is so that the ROS upstart is not dependent on the availability or IP of the wireless connection. If the wireless requires configuration, SSH in via a wired connection to that port, and run wicd-curses.
All of this is great for the availability and reliability of the background ROS process, however, it does mean that to access the roscore over wireless, you'll need to set up a static route on your workstation:
route add -net 192.168.1.1 netmask 255.255.255.255 gw KINGFISHER_WIRELESS_IP export ROS_IP=WORKSTATION_WIRELESS_IP export ROS_MASTER_URI=http://192.168.1.1:11311
Now it should be possible to rostopic echo topics from onboard Kingfisher. If you plug in a USB joystick, you can run our basic teleop script:
roslaunch kingfisher_teleop joystick_teleop.launch
And, of course, you can view the camera feed using image_view:
rosrun image_view image_view image:=/camera/image_color compressed
Kingfisher's onboard IMU includes a magnetometer. For best performance, it's recommended to periodically re-calibrate the compass estimator which processes magnetometer data. To run the calibration routine, manually teleop Kingfisher into open water, >5m from ferrous objects and obstacles. Then, while connected by SSH, execute:
rosrun kingfisher_bringup calibrate_compass
Kingfisher should rotate slowly in place for 60 seconds, recording compass data. Once complete, you will be prompted to enter the user password in order to save the new calibration into /etc/ros/hydro/imu_compass.yaml. Once this is done, restart the ROS service to begin using the new calibration:
sudo service kingfisher-core restart
Calibration should be performed when Kingfisher is first received, and any time the platform is transported more than 50km to a new launch site. It is also recommended to recalibrate annually as part of seasonal maintenance.
Standard sensors include basic IMU, GPS, and a Point Grey camera, as well as voltage and current monitoring for the drive system.
Kingfisher also includes as standard kit provision for externally mounting ethernet and RS232-based payloads, as well as providing them a regulated 12V power supply. If you're interested in USB or other interfaces for payloads, please get in touch and we'll work something out.