ubuntu 20.04安装visp, vision_visp, visp_ros,配合realsense d453i教程

ubuntu 20.04安装visp, vision_visp, visp_ros,配合realsense d453i教程


本教程适用于利用visp视觉伺服平台在真实机器人上实现视觉伺服功能,visp_ros是方便visp与机器人之间通过ros进行通讯,通过ros topic的形式收发数据,vision_visp作为visp提供给ros的组件

安装visp以及librealsense

  1. 主要跟随visp官方网站的安装教程,参考 Advanced ViSP installation 步骤
    https://visp-doc.inria.fr/doxygen/visp-daily/tutorial-install-ubuntu.html
  2. 下面是复制官网教程并需要注意的点
$ sudo apt-get install git libssl-dev libusb-1.0-0-dev pkg-config libgtk-3-dev cmake-curses-gui
$ sudo apt-get install libglfw3-dev libgl1-mesa-dev libglu1-mesa-dev
$ mkdir -p $VISP_WS/3rdparty
$ cd $VISP_WS/3rdparty

$ git clone https://github.com/IntelRealSense/librealsense.git

$ cd librealsense
  • 运行权限脚本
$ sudo ./scripts/setup_udev_rules.sh
  • 编译并安装librealsense
$ mkdir build
$ cd build
$ cmake .. -DBUILD_EXAMPLES=ON -DCMAKE_BUILD_TYPE=Release
$ make -j4
$ sudo make install
  • 测试是否安装成功
$ ./examples/capture/rs-capture

上述步骤在visp adavanced installation中可找到
3. 安装完librealsense后下载安装visp,具体步骤如下

  • 安装一些推荐的库
$ sudo apt-get install libopencv-dev libx11-dev liblapack-dev libeigen3-dev libv4l-dev \
    libzbar-dev libpthread-stubs0-dev libdc1394-dev nlohmann-json3-dev
  • 安装并设置环境变量
 $ cd $VISP_WS
$ git clone https://github.com/lagadic/visp.git
$ mkdir -p $VISP_WS/visp-build
$ cd $VISP_WS/visp-build
$ cmake ../visp
$ make -j$(nproc)
$ echo "export VISP_DIR=$VISP_WS/visp-build" >> ~/.bashrc
$ source ~/.bashrc
  • 到此visp安装完成

安装visp_ros

  1. visp现在没有ros分支,但最新的visp_ros已经面向ros2,因此需要注意选择对应的版本,下载地址https://github.com/lagadic/visp_ros,选择noetic分支,并下载代码压缩包
  2. 参考readme文件的Install dependencies from source步骤,我们已经安装过visp,因此现在只需要下载vision_visp,具体步骤如下:
$ cd ~/catkin_ws/src
$ source /opt/ros/noetic/setup.bash
$ git clone https://github.com/lagadic/vision_visp.git -b noetic
  1. 下载并编译visp_ros,提前将下载的visp_ros包解压到src文件下,编译
$ cd ~/catkin_ws
$ catkin_make -DCMAKE_BUILD_TYPE=Release --pkg visp_ros
  1. 到此visp_ros安装完成

利用visp_ros进行编程

  1. 在visp_ros/tutorial/franka文件夹下改编程序,用到vpROSRobot类,需要在visp_ros文件夹下的CMakeList中加入如下语句:
  • 查找visp_ros外部依赖包
find_package(visp_ros REQUIRED)
  • 添加头文件目录
include_directories(
  include
  ${visp_ros_INCLUDE_DIRS}
  • 在对应添加了vpROSRobot头文件的可知性文件后面添加visp_ros库进行链接,如
target_link_libraries(tutorial-franka-real-ibvs-apriltag_test ${catkin_LIBRARIES} ${visp_ros_LIBRARIES})
  1. 修改完后保存,再导航到catkin_ws下进行catkin_make编译,编译通过后就可以运行程序了。对于程序中自带的一些libfranka注释掉即可。
### 使用 VispROS 进行机械臂仿真 #### 创建工作环境和配置依赖项 为了使用VispROS进行机械臂仿真,首先需要创建一个新的ROS工作区并安装必要的软件包。 ```bash mkdir -p ~/visp_ros_ws/src cd ~/visp_ros_ws/ catkin_init_workspace src wstool init src ``` 接着添加`visp_bridge`和其他所需的库到源文件夹中: ```bash echo "https://raw.githubusercontent.com/lagadic/visp/master/contrib/ros/package.xml" >> src/.rosinstall wstool update -j4 -t src sudo apt-get install ros-noetic-visp-* ``` 确保所有依赖关系都已解决之后编译整个工作空间: ```bash catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release source devel_isolated/setup.bash ``` #### 编写节点实现视觉伺服控制 接下来可以编写一个简单的ROS C++ 节点来利用Visp执行基本的任务。下面是一个基础模板例子,该节点订阅来自Realsense摄像头的话题,并尝试跟踪特定的对象。 ```cpp // visp_servo_node.cpp #include <ros/ros.h> #include <image_transport/image_transport.h> #include <cv_bridge/cv_bridge.h> #include <sensor_msgs/image_encodings.h> #include <visp3/core/vpConfig.h> class VispServoNode { public: VispServoNode() : it_(nh_) { image_sub_ = it_.subscribe("/camera/color/image_raw", 1, &VispServoNode::imageCb, this); // 初始化其他组件... } private: void imageCb(const sensor_msgs::ImageConstPtr& msg) { try { cv_image_ptr_ = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8); // 对图像数据做处理... if (cv_image_ptr_->image.empty()) return; // 显示结果帧 imshow("view", cv_image_ptr_->image); waitKey(30); } catch (cv_bridge::Exception& e) { ROS_ERROR("Could not convert from '%s' to 'bgr8'.", msg->encoding.c_str()); } } ros::NodeHandle nh_; image_transport::ImageTransport it_; image_transport::Subscriber image_sub_; cv_bridge::CvImagePtr cv_image_ptr_; }; int main(int argc, char** argv) { ros::init(argc, argv, "visp_servo"); VispServoNode node; ros::spin(); return 0; } ``` 此代码片段展示了如何设置基于Visp的视觉伺服控制系统[^1]。需要注意的是实际应用可能涉及更复杂的逻辑以及与物理硬件交互的部分。 #### 配置launch文件启动模拟器和服务端口 最后一步是准备.launch文件以便轻松运行上述节点以及其他任何辅助进程。这里提供了一个简化版的例子供参考: ```xml <launch> <!-- 启动realsense相机驱动 --> <include file="$(find realsense2_camera)/launch/rs_launch.py"/> <!-- 加载机械臂模型至参数服务器 --> <param name="robot_description" command="$(find xacro)/xacro '$(find my_robot_model)/urdf/my_robot.urdf.xacro'" /> <!-- 发布tf变换消息 --> <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher"> <remap from="/joint_states" to="/my_robot/joint_states"/> </node> <!-- 启动自定义vision servoing节点 --> <node pkg="visp_servo_example" type="visp_servo_node" name="visp_servo_node" output="screen"/> </launch> ``` 通过这种方式可以在RVIZ环境中观察到由Visp算法引导下的虚拟机械臂动作效果[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值