As of 2025-03-12 we have two HIK robotics cameras: the MV-CS050-PRO and the MV-CS004-11GC. Both form part of the ARCOS-Lab humanoid robot. The first one has high resolution (2448x2048) and it is reffered to in launchfiles and URDFs as hik_camera
(static IP address: 192.168.18.40
). The second one has high FPS (300 fps) so it is reffered to in launch files and URDFs as hik_fast
(static IP address 192.168.18.41
).
Both cameras use the GenICam standard to communicate over gigabit-ethernet. We use an opensource implementation of the interface called aravis.
All the packages we need are already available as .deb so installation is very easy.
sudo apt install aravis-tools aravis-tools-cli ros-humble-camera-aravis2
Connect the camera to a switch with PoE capabilities.
Be careful, this cameras can get quite hot when on for long periods of time.
Connect your compuiter to the same netwok as the cameras. In the particular case of our robot, that would be the network of the ARCOS-Lab humanoid robot: 192.168.18.x
. You can do so by using any of the computers located at the humanoid robot control table or by connecting to the ARCOSWIFI-INII-INV-5G
network with a laptop or mobile device.
To use the camera on your computer:
arv-viewer-0.8
You will get a window similar to this one. Select the camera you want to use.
To use the camera in ROS2, just add it to your launchfile. Here is an example of our launchfile for the hik_camera
that we use in our Humanoid robot:
import launch
from ament_index_python.packages import get_package_share_directory
namespace = "humanoid"
humanoid_startup_dir = get_package_share_directory(
'arcos_lab_humanoid_startup')
def generate_launch_description():
return launch.LaunchDescription([
Node(
package="camera_aravis2",
executable="camera_driver_gv",
name="hik_camera",
namespace=namespace,
parameters=[{
"guid": "192.168.18.40",
"camera_info_urls": [
"file://"+humanoid_startup_dir+"/config/hik_calibration_1920x1080@264x484.yaml"],
"frame_id": "hik_camera_frame",
"AcquisitionControl": {
"AcquisitionFrameRateEnable": True,
"AcquisitionFrameRate": 45.0,
"ExposureMode": "Timed",
"ExposureAuto": "Off",
"ExposureTime": 8280.0
},
"ImageFormatControl": {
"PixelFormat": "BayerRG8",
"ReverseX": False,
"ReverseY": False,
"Width": 1920,
"Height": 1080,
"OffsetX": 264,
"OffsetY": 484,
},
"AnalogControl": {
"GainAuto": "Continuous",
# "BalanceWhiteAuto": "Continuous",
"BlackLevelAuto": "Continuous",
},
}]
)
])