ROS driver for the Atlas Scientific water sampler
This ROS package provides a driver for Atlas Scienfitic's EZO-PMP water dosing pumps (in python), as well as a ROS node for advertising services for operations with the pump, such as check pump state, fill pump, etc. Specifically, the PMP driver implements functions which issue commands to the pumps via I2C (e.g., report dosing volume, fill doser up to X mL), and the ROS sampler service node externalizes these functions as ROS services, so any system in the ROS environment can call them.
This package was primarily designed to be used on a Raspberry Pi Zero, controlling four pumps on a Platypus Lutra Prop autonomous boat, for water quality monitoring applications. Although the water sampler was designed and built by Platypus LLC, the electronics and software were replaced compared to the original. The hardware and electrical connection schematics required to use it are illustrated below in Fritzing.
We named the four pumps with numbers from 0 to 3, and address them internally in the PMP driver. Some modification may be required to use the package with other platforms and/or pump addresses. Our conventions for naming and addressing the pumps are:
- Pump 0 <--> Address 0x01
- Pump 1 <--> Address 0x02
- Pump 2 <--> Address 0x03
- Pump 3 <--> Address 0x04
When fully assembled, the Sampler should look like the figure below. The four pumps are each connected to a container, with a diameter and height of aproximately 82.6 mm and 96 mm, respectively.
With a roscore running, simply run the sampler_srv_node.py node:
rosrun water_sampler_ros sampler_srv_node.py
This will advertise the sampler services, which can be seen with the "rosservice list" command. The services and their arguments are:
- /sampler/fill_pump ----> Args: pump_number mL
- /sampler/check_pump_state ----> Args: pump_number
- /sampler/empty_pump ----> Args: pump_number
- /sampler/stop_pump ----> Args: pump_number
- Clone the package to your catkin workspace
cd ~/catkin_ws/src
git clone https://github.com/disaster-robotics-proalertas/water-sampler-ros
- Make the catkin environment
cd ~/catkin_ws/
catkin_make
- Source your catkin environment
source ~/catkin_ws/devel/setup.bash
- Raspberry Pi + debian-based OS (e.g., Ubuntu for raspberry with ROS installed)
- Robot Operating System for Raspberry PiROS
- Python I2C library for Raspberry Pi: smbus
Test the package on-site (river or basin) in the autonomous boat[DONE]- Advertise the PMP driver functions as actions instead of services (can interrupt, halt or abort actions, with appropriate feedback)
- Platypus LLC: Mechanical design and physical construction of the water sampler
- Igor Souza: Python PMP Driver
- Renan Maidana: ROS Sampler package, sampler service node
- Guilherme Heck: Testing and knowledge of the Lutra boat system
- Alexandre Amory: Guidance and logistics