lvsn / CameraNetwork

ROS camera network system
2 stars 0 forks source link

Camera Network is a camera sensor project developped with ROS (Robotic Operating System) to communicate easily with multiple camera device on the network.

For now, Camera Network is compatible with gphoto and the picamera module.

You can communicate with the network directly with ROS, or with the WebGUI (if the master-server is launched with the right webserver url)

The system is mainly used for still pictures. The ROS interface is made of two abstraction layers : Camera's driver and Camera controller.

Camera Driver

This layer interact directly with the camera, it is used by camera controller so it need to implement right services to make it compatible with the system. The two actual drivers are : gphoto and picamera.A mobile prototype is implemented (only capture feature). USB could be supported in the futur.

The services are :

This layer is normally not launched directly by the user. Camera controller's launcher will do it

Camera Controller

This layer interact with the Camera drivers. It can handle network task and individual task. The user should never call camera driver services (ROS give no protection although) but always call Camera Controller. The webGUI is entirely communicating with Camera Controller, so it dont care what kind of camera each device are using. The button with (beta) mean that it interact with the device, using it wrongly could lead to errors

To launch the controller you need to make a ROS launchfile with these steps (use the one in this repo as templates):

Here is the services,actions and subscribe the camera Controller offer: Subscriber:

Services:

Action:

Camera Master

Camera Master is an interface to control the whole network at once with extra network features: Actions:

Its Launchfile call mjpeg_server for streaming and rosbridge_websocket for javascript bridge. This node have master as namespace.

Special

pigpio is a special feature for raspberry pi only. It enable the use of three buttons with its gpio interface to call ROS services. It can be added in camera controller launch file. The three buttons must be interfaced on:

The pins are software debounced, and react on falling edge, no need of super user access to call them, see INSTALL.

Parameter Server

None of these are dynamic parameter