The A2 Ultra model is equipped with a variety of sensors, including cameras, radars, and IMUs. The specific positions of the sensors can be found in the component descriptions in the overview section of this document.
We provide ROS2 topic interfaces for the raw frame data of each sensor, all using standard ROS2 messages. Instead of listing each individual interface, we provide a unified table of topics, along with intrinsic and extrinsic parameter files and usage instructions.
On the P1 model, /aima/hal/camera/interactive/color is published by default using the iceoryx backend, which can be cumbersome to call. The following method is provided to modify its publishing backend to add a ROS2 backend (the 1.2/1.0 versions still retain compatibility with the iceoryx method, but it is recommended to modify and subscribe via the standard ROS2 interface in the new version). Note that after adding the ROS2 backend, the tz_camera module will have a 14% increase in CPU usage.
Method to add ROS2 backend on P1 model:
First, back up the corresponding configuration file on ORIN
Then, modify the file to add ros2 to the enable_backends of /aima/hal/camera/interactive/color in aimrt.channel.pub_topic_options, changing from [iceoryx] to [iceoryx, ros2]
Restart the robot
Under normal operation of the robot, all sensor topics should continuously publish data after initialization, with the following exception:
On the T3 model, /aima/hal/camera/interactive/color has no data in interactive silent mode.
For color images, an h264 encoding interface is provided (experimental interface, no example call script provided yet, familiarity with h264 and other image encoding knowledge is required):
The A2 Ultra model is equipped with a variety of sensors such as cameras, radars, and IMUs. The specific positions of the sensors can be found in the component description in the overview section of this document.
We provide ROS2 topic interfaces for the raw frame data of each sensor, all using standard ROS2 messages. Instead of listing each individual interface, we provide a unified topic description table along with the intrinsic and extrinsic parameter files and usage instructions.
Aligning depth and color images from a pinhole camera example can be found in examples/sensors/rgbd_align.py
Undistorting fisheye camera images example can be found in examples/sensors/fisheye_undistorted.py
The directory where the calibration results for the camera’s intrinsic and extrinsic parameters are saved (located on ORIN):
Terminal window
/agibot/data/param/calibration/
The folder contains the following files:
Extrinsic Parameters:
extrinsic_baselink_T_chest_left.txt: Represents the extrinsic parameters from base_link to the left fisheye camera (x, y, z, qw, qx, qy, qz)
extrinsic_chest_right_T_chest_left.txt: Represents the extrinsic parameters from the left camera to the right camera (x, y, z, qw, qx, qy, qz)
extrinsic_baselink_T_head_front.txt: Represents the extrinsic parameters from base_link to the front head camera (x, y, z, qw, qx, qy, qz)
estrinsic_waist_front_T_baselink.txt: Represents the extrinsic parameters from base_link to the front waist camera (x, y, z, qw, qx, qy, qz)
estrinsic_baselink_T_lidar.txt: Represents the extrinsic parameters from the lidar to base_link (x, y, z, qw, qx, qy, qz)
gravity_T_imu.txt: Represents the rotation from the IMU to base_link (qw, qx, qy, qz)
Intrinsic Parameters:
intrinsic_chest_left.yaml: Intrinsic parameters for the left fisheye camera
intrinsic_chest_right.yaml: Intrinsic parameters for the right fisheye camera
intrinsic_head_front.yaml: Intrinsic parameters for the front head camera
intrinsic_wasit_front.yaml: Intrinsic parameters for the front waist camera
Note:
x, y, z denote the translation; qw, qx, qy, qz represent the quaternion (Hamilton convention) for rotation.
The data in the extrinsic file describes a coordinate transformation. For instance, the extrinsic parameters in extrinsic_baselink_T_head_front.txt indicate the position and orientation of the base_link frame relative to the head camera frame.
7.4.3.1 Reading Pinhole Camera Intrinsic Parameters
Notice:Releasing the camera device is a high-risk operation and is generally not recommended. After releasing the camera, the Zhiyuan interaction will be affected regardless of whether it exits the Zhiyuan interaction link, resulting in no camera data. This operation should only be performed when the system’s ROS2 interface cannot meet development needs and the user has the underlying requirements and development capabilities for camera development.
The A2 flagship P1 model features three cameras on its chest (left and right fisheye cameras and a central interactive camera), which are occupied by system processes by default. Users can release and take over control of the cameras using the following steps (the T3 model does not currently have this camera release function). The following example demonstrates the specific process of releasing the central interactive camera.
Modify the file /agibot/software/v0/config/tzcamera/tzcamera_config.yaml in the orin directory, and delete the configuration entries for the cameras that need to be accessed separately (in this case, the intermediate interactive camera).
Make the changes take effect:
Choose any of the following methods to apply the configuration changes:
If the command runs normally, it indicates that the camera has been successfully released.
Device name:
The device nodes corresponding to each camera are as follows:
Left fisheye camera:/dev/gmslcam4
Right side fisheye camera:/dev/gmslcam5
Interactive camera in the middle:/dev/gmslcam6
References
The P1 model uses the G3-ISX031C-GMSL2F-H100F1 camera for the center chest and the Sensing SG3-ISX031C-GMSL2F-H190X camera for the left and right fisheye lenses. Development materials are available on the Sensing website: https://www.sensing-world.com/h-pd-307.html