Files
OrbbecSDK_ROS2/README.MD
T
2022-06-15 15:40:46 +08:00

201 lines
4.1 KiB
Markdown

# orbbec_camera
---
ORBBEC_SDK ROS2 wrapper for orbbec 3d camera
## Installation Instructions
---
Install ROS2
* Add ROS2 gpg key
```bash
sudo apt install curl gnupg2
sudo curl -sSL https://mirrors.tuna.tsinghua.edu.cn/rosdistro/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
```
* Add tuna ROS2 mirror
```bash
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update
```
* Install ROS2
```bash
sudo apt-get install ros-galactic-desktop
sudo apt-get install python3-colcon-common-extensions
```
>>If your ROS2 command does not auto-complete, put the following two lines into your `.bashrc`
or `.zshrc`
```bash
eval "$(register-python-argcomplete3 ros2)"
eval "$(register-python-argcomplete3 colcon)"
```
Create `colcon` workspace Ubuntu
```bash
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
```
Clone source code
```bash
git clone [email protected]:OrbbecSDK/orbbecros2sdk.git
```
Install deb dependencies
```bash
sudo apt install libgflags-dev nlohmann-json3-dev \
ros-galactic-image-transport ros-galactic-image-publisher
```
Install glog
```bash
cd orbbec_camera/dependencies
tar -xzvf glog-0.6.0.tar.gz
cd glog-0.6.0
mkdir build && cd build
cmake .. && make -j4
sudo make install
sudo ldconfig
```
Install `magic_enum`
```bash
cd orbbec_camera/dependencies
tar -xzvf magic_enum-0.8.0.tar.gz
cd magic_enum-0.8.0
mkdir build && cd build
cmake .. && make -j4
sudo make install
sudo ldconfig
```
Install `ORBBEC_SDK`,First remove old one if you have installed, **BE CAREFUL**
```bash
# remove old If you have already installed
cd /usr/local/lib/
sudo rm libOrbbecSDK.so* # BE CAREFUL
sudo rm libpostfilter.so
cd /usr/local/include/
sudo rm -fr libobsensor
# install
cd orbbec_camera/dependencies
tar -xzvf sensor_sdk_v1.2.8_linux.tar.gz
cd SDK/lib
sudo cp libOrbbecSDK.so.1.2.8 /usr/local/lib
sudo cp libpostfilter.so /usr/local/lib
sudo ln -s /usr/local/lib/libOrbbecSDK.so.1.2.8 /usr/local/lib/libOrbbecSDK.so.1.2
sudo ln -s /usr/local/lib/libOrbbecSDK.so.1.2.8 /usr/local/lib/libOrbbecSDK.so
cd ../include
sudo cp -frd libobsensor /usr/local/include
sudo ldconfig
```
---
## Getting start
---
```bash
cd ~/ros2_ws/
# build release, Default is Debug
colcon build --event-handlers console_direct+ -DCMAKE_BUILD_TYPE=Release
```
Launch camera node
* On terminal 1
```bash
. ./install/setup.bash
ros2 launch orbbec_camera ob_camera.launch.py
```
* On terminal 2
```bash
. ./install/setup.bash
rviz2 -d src/orbbec_camera/rviz/pointcloud.rviz
```
* List topics / services/ parameters ( on terminal 3)
```bash
ros2 topic list
ros2 service list
ros2 param list
```
* Show depth to color extrinsic
```bash
ros2 topic echo --qos-durability=transient_local /camera/extrinsic/depth_to_color --qos-profile=services_default
```
* Get device info
```bash
ros2 service call /camera/get_device_info orbbec_camera_msgs/srv/GetDeviceInfo '{}'
```
* Get SDK version
```bash
ros2 service call /camera/get_sdk_version orbbec_camera_msgs/srv/GetString '{}'
```
* Get exposure
```bash
ros2 service call /camera/get_color_exposure orbbec_camera_msgs/srv/GetInt32 '{}'
```
> If your check `ir` or `depth`, please change ` /camera/get_color_exposure`
to `/camera/get_ir_exposure` or `/camera/get_depth_exposure`, Same below.
* Get gain
```bash
ros2 service call /camera/get_color_gain orbbec_camera_msgs/srv/GetInt32 '{}'
```
* Get white balance
```bash
ros2 service call /camera/get_white_balance orbbec_camera_msgs/srv/GetInt32 '{}'
```
* Set auto exposure
```bash
ros2 service call /camera/set_color_auto_exposure std_srvs/srv/SetBool '{data: false}'
```
* Set white balance
```bash
ros2 service call /camera/set_white_balance orbbec_camera_msgs/srv/SetInt32 '{data: 4600}'
```
* Set laser enable
```bash
ros2 service call /camera/set_laser_enable std_srvs/srv/SetBool "{data: true}"
* ```
* toggle sensor
```bash
ros2 service call /camera/toggle_ir std_srvs/srv/SetBool "{data : true}"
* ```
---
## Known issues
* TODO: