ROS driver for the FLIR Ladybug5 360° camera. Supports both native Ubuntu 20.04 installation and Docker deployment.
catkin_ladybug_ws/
├── src/
│ └── ladybug_driver/ # ROS package
├── docker/ # Docker support files
├── Dockerfile # Docker build definition
└── docker-compose.yml # Docker compose config
- Clone the repository:
git clone https://github.com/Ali-Rizvi-1/catkin_ladybug_ws.git
cd catkin_ladybug_ws- Install ROS Noetic (if not already installed):
# Follow instructions at: http://wiki.ros.org/noetic/Installation/Ubuntu- Install Ladybug SDK:
# Obtain ladybug-1.20.0.79_amd64.deb from FLIR
sudo dpkg -i ladybug-1.20.0.79_amd64.deb- Setup udev rules:
sudo groupadd -f flirimaging
sudo usermod -aG flirimaging $USER
sudo bash -c 'echo "ATTRS{idVendor}==\"1e10\", ATTRS{idProduct}==\"3800\", MODE=\"0664\", GROUP=\"flirimaging\"" > /etc/udev/rules.d/40-pgr-ladybug.rules'
sudo udevadm control --reload-rules && sudo udevadm trigger- Build the workspace:
catkin_make
source devel/setup.bash- Launch the camera node:
roslaunch ladybug_driver ladybug.launch- Build and enter the container:
docker-compose run --rm ladybug /bin/bash- Inside the container, install the SDK:
cd /ladybug_sdk
sudo dpkg -i ladybug-1.20.0.79_modified.deb- Setup udev rules and groups:
# Create flirimaging group
sudo groupadd -f flirimaging
sudo usermod -aG flirimaging ladybug_user
# Create udev rules
sudo bash -c 'echo "ATTRS{idVendor}==\"1e10\", ATTRS{idProduct}==\"3800\", MODE=\"0664\", GROUP=\"flirimaging\"" > /etc/udev/rules.d/40-pgr-ladybug.rules'
sudo bash -c 'echo "KERNEL==\"raw1394\", MODE=\"0664\", GROUP=\"flirimaging\"" >> /etc/udev/rules.d/40-pgr-ladybug.rules'
sudo bash -c 'echo "KERNEL==\"video1394*\", MODE=\"0664\", GROUP=\"flirimaging\"" >> /etc/udev/rules.d/40-pgr-ladybug.rules'
sudo bash -c 'echo "SUBSYSTEM==\"firewire\", GROUP=\"flirimaging\"" >> /etc/udev/rules.d/40-pgr-ladybug.rules'
# Reload udev rules
sudo service udev restart- Build the ROS package:
cd ~/catkin_ws
catkin_make
source devel/setup.bash- Launch the node:
roslaunch ladybug_driver ladybug.launchTo open additional terminals for the running container:
- Find the container ID:
docker ps- Open a new terminal in the running container:
docker exec -it <container_id> /bin/bashThe driver publishes images to:
/ladybug/camera0/image_raw/ladybug/camera1/image_raw/ladybug/camera2/image_raw/ladybug/camera3/image_raw/ladybug/camera4/image_raw/ladybug/camera5/image_raw
| Parameter | Default | Description |
|---|---|---|
| scale | 100 | Image scale percentage |
| jpeg_percent | 80 | JPEG quality |
| framerate | 10 | Camera framerate |
| use_auto_framerate | false | Enable auto framerate |
| shutter_time | 0.5 | Shutter time (seconds) |
| use_auto_shutter_time | true | Enable auto shutter |
| gain_amount | 10 | Gain amount |
| use_auto_gain | true | Enable auto gain |
| trigger_enabled | false | Enable external trigger mode |
| trigger_delay | 0.0 | Trigger delay in milliseconds |
| trigger_polarity | true | Trigger polarity (true=rising edge, false=falling edge) |
| trigger_timeout | 5000 | Timeout for triggered capture (milliseconds) |
The Ladybug5 camera supports external triggering through its GPIO interface. To use the trigger functionality:
- Enable trigger mode in the launch file:
<param name="trigger_enabled" value="true" />- Configure trigger parameters:
trigger_polarity: Set totruefor rising edge,falsefor falling edgetrigger_delay: Add delay between trigger signal and capture (milliseconds)trigger_timeout: Maximum time to wait for trigger signal
- Connect your trigger source to the camera's GPIO pins
- Use GPIO 0 for trigger input
- Ensure correct voltage levels (compatible with 3.3V/5V TTL)
Example launch file with triggering enabled:
<launch>
<node name="ladybug_node" pkg="ladybug_driver" type="ladybug_node" output="screen">
<param name="scale" value="100" />
<param name="framerate" value="10" />
<param name="jpeg_percent" value="80" />
<!-- Trigger configuration -->
<param name="trigger_enabled" value="true" />
<param name="trigger_delay" value="0.0" />
<param name="trigger_polarity" value="true" />
<param name="trigger_timeout" value="5000" />
</node>
</launch>-
Camera Not Detected
- Check USB connection
- Verify udev rules are loaded
- Ensure user is in flirimaging group
-
Permission Issues
- Log out and back in after group changes
- Check device permissions:
ls -l /dev/bus/usb
-
Docker Issues
- Ensure Docker service is running
- Check USB device visibility:
lsusb
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request