I am working with Ubuntu 12.04 LTS. We are having problems receiving a non-noisy image from an eye-in-hand camera on a mobile robot.
The camera image is collected with a BTTV PCI device, specifically the bt878 driver. The BTTV device is a PCI-104 card based on a Bt848 chip, and is supported under Linux by the bttv and associated kernel driver modules. The devices is a capture-only card - which means video is taken directly from a video source without the use of a tuner. The frame grabber is connected to the on-board computer Sensorary 311 (so bttv card=73)
The bttv driver installed is version 0.9.19. The webcam is present in dev/video0.
$ dmesg |grep bttv
[ 1.937779] bttv: driver version 0.9.19 loaded
[ 1.937783] bttv: using 8 buffers with 2080k (520 pages) each for capture
[ 1.937850] bttv: Bt8xx card found (0)
[ 1.937873] bttv: 0: Bt878 (rev 17) at 0000:04:01.0, irq: 16, latency: 32, mmio: 0xdfdfe000
[ 1.937888] bttv: 0: detected: Sensoray 311 [card=73], PCI subsystem ID is 6000:0311
[ 1.937890] bttv: 0: using: Sensoray 311/611 [card=73,autodetected]
[ 1.940185] bttv: 0: tuner absent
[ 1.940313] bttv: 0: registered device video0
[ 1.940591] bttv: 0: registered device vbi0
The modules loaded are as follows:
$ lsmod | grep video
videodev 105518 2 bttv,v4l2_common
media 20516 1 videodev
videobuf_dma_sg 18711 1 bttv
videobuf_core 25098 2 bttv,videobuf_dma_sg
video 19117 1 i915
$ lsmod
Module Size Used by
bt878 13588 0
rfcomm 38104 0
bnep 17791 2
bluetooth 189585 10 rfcomm,bnep
parport_pc 32115 0
ppdev 12850 0
coretemp 13362 0
kvm 365588 0
snd_hda_codec_idt 60238 1
gpio_ich 13160 0
snd_hda_intel 32983 3
snd_hda_codec 116477 2 snd_hda_codec_idt,snd_hda_intel
snd_hwdep 13277 1 snd_hda_codec
snd_pcm 81124 2 snd_hda_intel,snd_hda_codec
microcode 18396 0
snd_seq_midi 13133 0
snd_rawmidi 25426 1 snd_seq_midi
psmouse 91381 0
snd_seq_midi_event 14476 1 snd_seq_midi
snd_seq 51594 2 snd_seq_midi,snd_seq_midi_event
bttv 116393 1 bt878
v4l2_common 20517 1 bttv
videodev 105518 2 bttv,v4l2_common
media 20516 1 videodev
videobuf_dma_sg 18711 1 bttv
serio_raw 13032 0
snd_timer 28932 2 snd_pcm,snd_seq
snd_seq_device 14138 3 snd_seq_midi,snd_rawmidi,snd_seq
videobuf_core 25098 2 bttv,videobuf_dma_sg
btcx_risc 13401 1 bttv
rc_core 21172 1 bttv
tveeprom 17010 1 bttv
mac_hid 13078 0
snd 62675 15 snd_hda_codec_idt,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_rawmidi,snd_seq,snd_timer,snd_seq_device
i915 479158 2
drm_kms_helper 47459 1 i915
lpc_ich 16993 0
drm 240232 3 i915,drm_kms_helper
i2c_algo_bit 13317 2 bttv,i915
soundcore 14636 1 snd
snd_page_alloc 14109 2 snd_hda_intel,snd_pcm
video 19117 1 i915
lp 17456 0
parport 40931 3 parport_pc,ppdev,lp
e1000e 177679 0
We believe that the bt878 driver is loaded correctly, and that the frame grabber is working properly. When the camera is powered off the frame-grabber (viewed in either camorama, vlc or gstreamer-properties programs) is blue, and when the camera is powered on, the image received from the camera is very noisy. No features can be detected but changes in light can be seen.
We have had the camera working before properly (implying that the drivers are ok), however it appears that it is almost random, and dependent on what viewing programs we use and in what order. Once the camera is working, it remains working until we power off the robot. We think this means that the camera is not initialised properly, and so is sending noisy data. Does anyone know of a good way to initialise a camera linked to a BTTV PCI device, besides just ensuring the camera is powered on?
Specifically the camera is part of a manipulator which is installed on a SeekurJr robot from Mobile Robotics. It is required that the manipulator is initialised (turning the camera on) before viewing the stream, which we do.
The camera is a RVision SEE camera.
Questions: How can we initialise the camera? Any other ideas on how to fix the noise?