在完成了车辆适配后,接下来第二阶段就需要校验网络配置是否完整,传感器数据是否正常,最后通过标定传感器让系统完整地运行起来。
设备权限
在引入新的硬件设备过程中,由于需要将设备映射到docker环境中,所以设备的挂载很重要,权限是个重要的问题:
- 需要让设备在docker;
- 有可以读写的权限;所以需要用到udev的设备挂载机制。可以参考如下的配置,为你的新设备增加新的规则:
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="novatel_gps", ATTRS{port_number}=="0", MODE="0666", SYMLINK+="novatel0", OWNER="apollo", GROUP="apollo"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="novatel_gps", ATTRS{port_number}=="1", MODE="0666", SYMLINK+="novatel1", OWNER="apollo", GROUP="apollo"
SUBSYSTEM=="tty", SUBSYSTEMS=="usb-serial", DRIVERS=="novatel_gps", ATTRS{port_number}=="2", MODE="0666", SYMLINK+="novatel2", OWNER="apollo", GROUP="apollo"
udev 添加Udev规则,让Linux自动挂载U盘「或你的其他设备」可以参考:添加Udev规则,让Linux自动挂载U盘(转载) - 陈建的专栏 - CSDN博客
MobaIterm中连接远程IPC工控机服务器
服务器 IP:192.168.116.111,apollo,apollo


启动Dreamview后台服务程序
进入Docker,启动Dreamview,命令如下:
cd ~/work/apollo/
# 如果没有启动Docker,首先启动,否则忽略该步
bash docker/scripts/dev_start.sh -C
# 进入Docker
bash docker/scripts/dev_into.sh
# 启动Dreamview后台服务
bash scripts/bootstrap.sh
sudo python docs/demo_guide/rosbag_helper.py demo_2.0.bag #下载demo_2.0.bag录制数据包
rosbag play demo_2.0.bag --loop
选项 --loop 用于设置循环回放模式.
打开Chrome浏览器,在地址栏输入localhost:8888即可访问Apollo Dreamview
摄像头安装配置
- 型号:HD USB Camera 长焦短焦6mm摄像头
- 摄像头与工控机连接:两个6mm短焦摄像头分别插在工控机USB扩展板的第一个以及第二个USB接口上,25mm摄像头接在扩展板的第三个接口上(这个摄像头连接位置也可调整,只需与规则文件rules文件中对应即可)
摄像头规则文件的配置
摄像头规则文件的作用是在linux启动时,根据规则文件设置的规则,自动生成对应的软链接文件。
- 在docker环境外部,执行如下命令,进入apollo项目工程的setup_host中,打开默认的规则文件99-webcam.rules
vim ~/work/apollo/docker/setup_host/etc/udev/rules.d/99-webcam.rules
- 根据实际配置的摄像头的情况,修改rules文件,先将三个摄像头分别插入工控机的usb接口上,用
v4l2-ctl --list-devices
命令查看摄像头在/dev下对应的设备信息(可通过sudo apt-get install v4l-utils
进行安装)
apollo@in_dev_docker:/apollo/modules/drivers/usb_cam/launch$ v4l2-ctl --list-devices
HD USB Camera: HD USB Camera (usb-0000:00:14.0-1):
/dev/video0
/dev/video1
HD USB Camera: HD USB Camera (usb-0000:00:14.0-12):
/dev/video4
/dev/video5
HD USB Camera: HD USB Camera (usb-0000:00:14.0-3):
/dev/video2
/dev/video3
apollo@in_dev_docker:/apollo$ v4l2-ctl --device=/dev/video0 --all
Driver Info (not using libv4l2):
Driver name : uvcvideo
Card type : HD USB Camera: HD USB Camera
Bus info : usb-0000:00:14.0-1
Driver version: 5.4.73
Capabilities : 0x84A00001
Video Capture
Streaming
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
Width/Height : 640/360
Pixel Format : 'MJPG'
Field : None
Bytes per Line: 0
Size Image : 460800
Colorspace : SRGB
Custom Info : feedcafe
Crop Capability Video Capture:
Bounds : Left 0, Top 0, Width 640, Height 360
Default : Left 0, Top 0, Width 640, Height 360
Pixel Aspect: 1/1
Selection: crop_default, Left 0, Top 0, Width 640, Height 360
Selection: crop_bounds, Left 0, Top 0, Width 640, Height 360
Streaming Parameters Video Capture:
Capabilities : timeperframe
Frames per second: 30.000 (30/1)
Read buffers : 0
brightness (int) : min=0 max=127 step=1 default=0 value=0
contrast (int) : min=0 max=95 step=1 default=2 value=2
saturation (int) : min=0 max=100 step=1 default=48 value=48
hue (int) : min=-2000 max=2000 step=1 default=0 value=0
white_balance_temperature_auto (bool) : default=1 value=1
gamma (int) : min=80 max=176 step=1 default=100 value=100
gain (int) : min=1 max=176 step=1 default=32 value=32
power_line_frequency (menu) : min=0 max=2 default=1 value=0
white_balance_temperature (int) : min=2806 max=6500 step=1 default=4600 value=4600 flags=inactive
sharpness (int) : min=0 max=100 step=1 default=0 value=0
backlight_compensation (int) : min=16 max=240 step=1 default=62 value=62
exposure_auto (menu) : min=0 max=3 default=3 value=3
exposure_absolute (int) : min=1 max=8188 step=1 default=166 value=8188 flags=inactive
focus_absolute (int) : min=0 max=1023 step=1 default=1 value=1 flags=inactive
focus_auto (bool) : default=1 value=1
apollo@in_dev_docker:/apollo$ v4l2-ctl --device=/dev/video1 --all
Driver Info (not using libv4l2):
Driver name : uvcvideo
Card type : HD USB Camera: HD USB Camera
Bus info : usb-0000:00:14.0-1
Driver version: 5.4.73
Capabilities : 0x84A00001
Video Capture
Streaming
Device Capabilities
Device Caps : 0x04A00000
Streaming
Priority: 2
SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", KERNELS=="1-1:1.0", MODE="0666", SYMLINK+="camera/obstacle", OWNER="apollo", GROUP="apollo"
SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", KERNELS=="1-3:1.0", MODE="0666", SYMLINK+="camera/lanemark", OWNER="apollo", GROUP="apollo"
SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", KERNELS=="1-12:1.0", MODE="0666", SYMLINK+="camera/trafficlights", OWNER="apollo", GROUP="apollo"
其中第一行代表连接到usb端口号为1-1:1.0
的摄像头对应的软链接文件为camera/trafficlights
;第二条代表连接到USB端口号为1-3:1.0
的摄像头对应的软链接文件为camera/obstacle
;第三条代表连接到USB端口号为1-12:1.0
的摄像头对应的软链接文件为camera/lanemark
。
USB端口号可以通过如下dmesg
命令查看相机在/dev下对应的device,其中1-1:1.0就是设备号了放于规则文件的KERNELS字段中。
dmesg
[ 2006.255182] usb 1-10: new high-speed USB device number 7 using xhci_hcd
[ 2006.407291] usb 1-10: New USB device found, idVendor=32e4, idProduct=4689, bcdDevice=41.04
[ 2006.407296] usb 1-10: New USB device strings: Mfr=1, Product=2, SerialNumber=5
[ 2006.407300] usb 1-10: Product: HD USB Camera
[ 2006.407303] usb 1-10: Manufacturer: HD USB Camera
[ 2006.407307] usb 1-10: SerialNumber: 2020042001
[ 2006.412118] uvcvideo: Found UVC 1.00 device HD USB Camera (32e4:4689)
[ 2006.427578] input: HD USB Camera: HD USB Camera as /devices/pci0000:00/0000:00:14.0/usb1/1-10/1-10:1.0/input/input23
[ 2038.143121] usb 1-9: new high-speed USB device number 8 using xhci_hcd
[ 2038.295336] usb 1-9: New USB device found, idVendor=32e4, idProduct=4689, bcdDevice=41.04
[ 2038.295341] usb 1-9: New USB device strings: Mfr=1, Product=2, SerialNumber=5
[ 2038.295345] usb 1-9: Product: HD USB Camera
[ 2038.295348] usb 1-9: Manufacturer: HD USB Camera
[ 2038.295350] usb 1-9: SerialNumber: 2020042001
[ 2038.299945] uvcvideo: Found UVC 1.00 device HD USB Camera (32e4:4689)
[ 2038.315531] input: HD USB Camera: HD USB Camera as /devices/pci0000:00/0000:00:14.0/usb1/1-9/1-9:1.0/input/input24
[ 2088.195134] usb 1-5: new high-speed USB device number 9 using xhci_hcd
[ 2088.351453] usb 1-5: New USB device found, idVendor=32e4, idProduct=4689, bcdDevice=41.04
[ 2088.351458] usb 1-5: New USB device strings: Mfr=1, Product=2, SerialNumber=5
[ 2088.351462] usb 1-5: Product: HD USB Camera
[ 2088.351465] usb 1-5: Manufacturer: HD USB Camera
[ 2088.351468] usb 1-5: SerialNumber: 2020042001
[ 2088.356134] uvcvideo: Found UVC 1.00 device HD USB Camera (32e4:4689)
[ 2088.371650] input: HD USB Camera: HD USB Camera as /devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0/input/input25
- 执行如下命令,使得配置的规则文件在系统中生效,每次开机都会自动生成软链接
bash ~/apollo/docker/setup_host/setup_host.sh
sudo reboot

- 重启后,在/dev文件夹下会生成一个camera文件夹,里面会有三个软链接文件
lanemark obstacle trafficlights
,通过ls /dev/camera -al
可以看到软链接的指向实际的设备号情况。

apollo@apollo:/dev/camera$ ls -al
total 0
drwxr-xr-x 2 root root 100 12月 8 15:35 .
drwxr-xr-x 20 root root 4720 12月 8 15:35 ..
lrwxrwxrwx 1 root root 9 12月 8 15:35 lanemark -> ../video3
lrwxrwxrwx 1 root root 9 12月 8 15:35 obstacle -> ../video1
lrwxrwxrwx 1 root root 9 12月 8 15:35 trafficlights -> ../video5
apollo@apollo:/dev/camera$ sudo ln -s /dev/video0 /dev/camera/lanemark
apollo@apollo:/dev/camera$ sudo ln -s /dev/video2 /dev/camera/obstacle
apollo@apollo:/dev/camera$ sudo ln -s /dev/video4 /dev/camera/trafficlights
apollo@apollo:~$ sudo unlink /dev/camera/obstacle
apollo@apollo:~$ sudo unlink /dev/camera/trafficlights
apollo@apollo:~$ sudo unlink /dev/camera/lanemark



v4l2-ctl 常用操作
# 安装V4l2工具包
$ sudo apt install v4l-utils
# 通过v4l2查看摄像头设备
apollo@apollo:~$ sudo v4l2-ctl --list-devices
[sudo] password for apollo:
HD USB Camera: HD USB Camera (usb-0000:00:14.0-1):
/dev/video0
/dev/video1
HD USB Camera: HD USB Camera (usb-0000:00:14.0-12):
/dev/video4
/dev/video5
HD USB Camera: HD USB Camera (usb-0000:00:14.0-3):
/dev/video2
/dev/video3
# 查看当前摄像头支持的视频压缩格式
apollo@apollo:~$ sudo v4l2-ctl -d /dev/video0 --list-formats
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : Motion-JPEG
# 查看摄像头所有参数
$ sudo v4l2-ctl -d /dev/video0 --all
Driver Info (not using libv4l2):
Driver name : uvcvideo
Card type : HD USB Camera: HD USB Camera
Bus info : usb-0000:00:14.0-1
Driver version: 5.4.73
Capabilities : 0x84A00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
Width/Height : 1920/1080
Pixel Format : 'MJPG'
Field : None
Bytes per Line : 0
Size Image : 4147200
Colorspace : sRGB
Transfer Function : Default (maps to sRGB)
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
Quantization : Default (maps to Full Range)
Flags :
Crop Capability Video Capture:
Bounds : Left 0, Top 0, Width 1920, Height 1080
Default : Left 0, Top 0, Width 1920, Height 1080
Pixel Aspect: 1/1
Selection: crop_default, Left 0, Top 0, Width 1920, Height 1080
Selection: crop_bounds, Left 0, Top 0, Width 1920, Height 1080
Streaming Parameters Video Capture:
Capabilities : timeperframe
Frames per second: 60.000 (60/1)
Read buffers : 0
brightness 0x00980900 (int) : min=0 max=127 step=1 default=0 value=0
contrast 0x00980901 (int) : min=0 max=95 step=1 default=2 value=2
saturation 0x00980902 (int) : min=0 max=100 step=1 default=48 value=48
hue 0x00980903 (int) : min=-2000 max=2000 step=1 default=0 value=0
white_balance_temperature_auto 0x0098090c (bool) : default=1 value=1
gamma 0x00980910 (int) : min=80 max=176 step=1 default=100 value=100
gain 0x00980913 (int) : min=1 max=176 step=1 default=32 value=32
power_line_frequency 0x00980918 (menu) : min=0 max=2 default=1 value=0
white_balance_temperature 0x0098091a (int) : min=2806 max=6500 step=1 default=4600 value=4600 flags=inactive
sharpness 0x0098091b (int) : min=0 max=100 step=1 default=0 value=0
backlight_compensation 0x0098091c (int) : min=16 max=240 step=1 default=62 value=62
exposure_auto 0x009a0901 (menu) : min=0 max=3 default=3 value=3
exposure_absolute 0x009a0902 (int) : min=1 max=8188 step=1 default=166 value=8188 flags=inactive
focus_absolute 0x009a090a (int) : min=0 max=1023 step=1 default=1 value=1 flags=inactive
focus_auto 0x009a090c (bool) : default=1 value=1
# 查看摄像头所支持的分辨率
apollo@apollo:~$ sudo v4l2-ctl --list-framesizes=MJPG -d /dev/video0
ioctl: VIDIOC_ENUM_FRAMESIZES
Size: Discrete 640x360
Size: Discrete 1280x720
Size: Discrete 1920x1080








ln640
网友评论