草庐IT

基于ROS搭建仿真环境——B站苏的一休抓取环境复现

qq_38620941 2023-09-01 原文

大佬链接:https://www.bilibili.com/video/BV19f4y1h73E?vd_source=6f2fc443cc3323efe0300c7cb662e8a8

搭建

此功能包在Ubuntu16.04上经过测试,应该适用于其他Linux版本。在你的Catkin工作空间中需要有

  • 负责计算aruco二维码位姿态的aruco_ros
  • 使用点云的基于深度学习的抓取位姿检测gpd_ros(这个包还需要编译安装GPD library);
  • 手眼标定功能包easy_handeye
  • UR机械臂的ROS功能包universal_robot
  • 此外在robot_sim/package中有一些需要用到的但我在上面进行过一些修改的包,如解决gazebo中抓取物体会莫名抖动的包gazebo-pkgs,大寰机器人二指抓手AG-95的ROS功能包dh_gripper_ros以及其他依赖等。

安装easy_handeye及其依赖

按照官方步骤:

  • clone this repository into your catkin workspace:
cd ~/catkin_ws/src  # replace with path to your workspace
git clone https://github.com/IFL-CAMP/easy_handeye
git clone -b melodic-devel https://github.com/pal-robotics/aruco_ros
  • 安装依赖 (aruco_ros,visp_hand2eye_calibration)
cd ..  # now we are inside ~/catkin_ws
rosdep install -iyr --from-paths src

若安装不成功,可手动安装。或去github下载功能包源码至~/catkin_ws/src,catkin_make编译即可。

sudo -H apt-get install -y ros-melodic-visp-hand2eye-calibration
sudo -H apt-get install -y ros-melodic-aruco-ros
  • build
catkin_make

至此,这里已经自动安装好了aruco_ros!

下载vision_opencv

https://github.com/ros-perception/vision_opencv

再是aruco_ros安装:

https://blog.csdn.net/qq_33328642/article/details/122267004

ERROR:

/usr/include/python2.7/numpy/__multiarray_api.h:1537:144: error: return-statement with no value, in function returning ‘void*’ [-fpermissive]

cv_bridge python 版本编译问题!

解决方案:

https://blog.csdn.net/qq_44876051/article/details/112370423

安装GPD 及GPD_ROS

Clone the repository into some folder:

git clone https://github.com/atenpas/gpd

Build the package:

cd gpd
mkdir build && cd build
cmake ..
make -j

You can optionally install GPD with sudo make install so that it can be used by other projects as a shared library.

If building the package does not work, try to modify the compiler flags, CMAKE_CXX_FLAGS, in the file CMakeLists.txt.

检测:./detect_grasps ../cfg/eigen_params.cfg ../tutorials/krylon.pcd

这里出现段错误问题可以把CMakeList文件下的find pcl 1.9改为 find pcl! 还有set部分!

gpd_ros:

cd <location_of_your_workspace>/src
git clone https://github.com/atenpas/gpd_ros`
#Build your catkin workspace:
cd <location_of_your_workspace>
catkin_make`

ERROR: 编译期间pcl冲突

https://blog.csdn.net/m0_53621852/article/details/121915687

解决方案

sudo apt-get install ros-melodic-pcl-conversions

后续环境出现问题更换后选择gpd-forword(类似gpd1.5)和gpg同时编译,过程略过
https://blog.csdn.net/flyfish1986/article/details/85791714?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-5-85791714-blog-122412170.pc_relevant_downloadblacklistv1&spm=1001.2101.3001.4242.4&utm_relevant_index=8
更改gpd-forword里的CMakelist文件,记得重命名为gpd

问题没解决,莫名其妙又编译通过了

其他功能包:

#git clone -b melodic-devel https://github.com/pal-robotics/aruco_ros

git clone -b kinetic-devel https://github.com/ros-industrial/universal_robot.git    #universal_robot

git clone https://github.com/Suyixiu/robot_sim                                      #本功能包
cd ..
#rosdep install --from-paths src --ignore-src --rosdistro=kinetic                    #安装依赖
rosdep install --from-paths src --ignore-src --rosdistro=melodic  

catkin_make
cp -r ./src/robot_sim/experiment/hand_eye_calibration/urdf/aruco/ ~/.gazebo/models  #复制aruco模型到gazebo默认模型文件夹中

ERROR:

CMake Error at robot_sim/experiment/CMakeLists.txt:61 (find_package): Could not find a configuration file for package “OpenCV” that is compatible with requested version “3.3.1”.

将CMakeList文件中这一行的代码改为

#set(OpenCV_DIR /opt/ros/kinetic/share/OpenCV-3.3.1-dev)
#find_package( OpenCV 3.3.1 REQUIRED )
find_package(OpenCV REQUIRED)

ERROR:

解决方案:

https://github.com/Suyixiu/robot_sim/issues/2

moveit melodic版本问题

将11行内容改为

#include <moveit/move_group_interface/move_group_interface.h>

29行改为

moveit::planning_interface::MoveGroupInterface group(“manipulator”);

ERROR:

tf代码声明问题:

reset_robot_pose.cpp添加头文件

#include <tf/transform_broadcaster.h>

ERROR:

  • /home/xty/robot_sim_ws/src/robot_sim/package/dh_robotics_gripper/dh_robotics_ag95_gripper/dh_robotics_ag95_simulation/roboticsgroup_gazebo_plugins/src/mimic_joint_plugin.cpp:38:18: error: ‘DisconnectWorldUpdateBegin’ is not a member of ‘gazebo::event::Events’
    event::Events::DisconnectWorldUpdateBegin(this->updateConnection);
    ^~~~~~~~~~~~~~~~~~~~~~~~~~

gazebo 版本问题(本人用9 代码为7)

https://blog.csdn.net/Mike_69/article/details/117479477

https://blog.csdn.net/weixin_44584250/article/details/108569842

event::Events::DisconnectWorldUpdateBegin(this->updateConnection);
to
this->updateConnection.reset();
GetPhysicsEngine()->
to
Physics()
GetAngle(0).Radian();
to
Position ( 0 )
gazebo::math::clamp
to
ignition::math::clamp

ERROR:

  • error: ‘cvMoveWindow’ was not declared in this scope

把代码中的cv去掉!改为cv::moveWindow()

将xacuo文件移植

cp -r ./src/robot_sim/experiment/hand_eye_calibration/urdf/aruco/ ~/.gazebo/models

编译结束!!!!!!!撒花!!! 😆

相机标定

cd ~/your_catkin_ws/
roslaunch robot_sim camera_calibration.launch

cameracalibrator.py脚本为例。你可以选择你所需要标定的相机。

(暂时不用)

rosrun camera_calibration cameracalibrator.py --size 7x6 --square 0.01 image:=/camera/rgb/image_raw camera:=/camera/rgb     #RGB相机
rosrun camera_calibration cameracalibrator.py --size 7x6 --square 0.01 image:=/camera/ir/image_raw camera:=/camera/ir       #IR相机

接下来是移动标定板,程序中设定的是1秒钟产生一个随机位置并移动标定板,若相机能正确识别出标定板角点则将此时的照片保存,有深度图,红外相机的图还有RGB图存放在save_checkboard_img目录中。当你觉得采的图片足够多之后即可停止这个程序。

cd ~/your_catkin_ws/
rosrun robot_sim camera_calibration

这里我们提供了一个python的脚本camera_calibration.py,位于robot_sim/experiment/camera_calibration/scripts,用于载入前面保存的图片以计算RGB相机与IR相机的内参并分别保存在IR_cameraintrinsic_parameters.npzRGB_cameraintrinsic_parameters.npz中,直接python运行此脚本即可。你也可以自己写程序来计算内参,并与前面公式计算的结果像对比以验证你的标定算法的准确性与误差。

cd ~/your_catkin_ws/src/robot_sim/experiment/camera_calibration/scripts
python3 camera_calibration.py`

注意!! 代码中需要将#sys.path.append(“/opt/ros/kinetic/lib/python2.7/dist-packages”)注释掉

标定文件保存在

/home/xty/robot_sim_ws/src/robot_sim/experiment/camera_calibration/scripts/RGB_cameraintrinsic_parameters.npz

在仿真环境中进行深度图配准

此实验将用到实验一中采集的两个相机拍摄的标定板的图片,这里我们提供了一个python脚本depth_image_registration.py来计算配准矩阵并将其前两行存放在Registration_matrix.txt中,因为实际remap深度图的时候也只会用到前两行。

cd ~/your_catkin_ws/src/robot_sim/experiment/depth_image_registration/scripts
python3 depth_image_registration.py

随后可以随便拿一对RGB图与深度图来观察配准矩阵对不对,因为后面会用到这个矩阵所以这里直接就是写成CPP了。

cd ../src
g++ ./depth_image_registration.cpp -o depth_image_registration $(pkg-config --cflags --libs opencv)
./depth_image_registration

在仿真环境中进行手眼标定

这里使用的手眼系统属于眼在手上的情况,即eye on hand,首先将我们提供的机械臂的moveit功能包跑起来,其中加载了UR10机械臂、大寰机器人的AG-95二指抓手还有D435i RGBD相机安装在UR10机械臂的末端。这里的手的link是yixiuge_ee_link,眼的link是相机的RGB光学framecamera_rgb_optical_frame。标定用到的Aruco二维码的大小是0.2m,ID是582。

roslaunch yixiuge_ur10_moveit_config yixiuge_ur_moveit.launch

ERROR:

ps: 注意可能会有文件不存在的报错 记得移到.gazebo文件夹下!!

ps: control + h 在主目录查看!

ERROR:

报错解决:

https://blog.csdn.net/weixin_46658421/article/details/116451344

sudo apt-get install ros-melodic-trac-ik-kinematics-plugin
sudo apt-get install ros-melodic-moveit-*
sudo apt-get install ros-melodic-trac-ik
#重新编译!

需要等moveit加载完之后再加载手眼标定包,因为大寰的二指抓手开起来有点费时,如果马上开hand_eye_calibration的话可能因为找不到moveit的group而报错。

roslaunch robot_sim hand_eye_calibration.launch

ERROR:

报错解决:文件未找到

https://blog.csdn.net/weixin_46658421/article/details/117033344

http://t.zoukankan.com/long5683-p-13847352.html(xml)

cd Downloads
git clone https://github.com/aquahika/rqt_virtual_joystick.git
sudo cp -r ~/Downloads/rqt_virtual_joystick/resource /opt/ros/melodic/share/rqt_virtual_joy/
rm -rf ~/Downloads/rqt_virtual_joystick

ERROR:

sudo: error in /etc/sudo.conf, line 0 while loading plugin ‘sudoers_policy’
sudo: /usr/lib/sudo/sudoers.so must only be writable by owner
sudo: fatal error, unable to load plugins

修改文件权限即可:

https://blog.csdn.net/lileihappy/article/details/79214156

sudo chmod 644 /usr/lib/sudo/sudoers.so
sudo chown -R root /usr/lib/sudo

ERROR:

报错解决:

原因是没有source。所以解决方案就是在编译完成之后添加source devel/setup.bash,问题解决。

ERROR:

error while loading shared libraries: libvisp_vision.so.3.5: cannot open shared object file: No such file or directory

报错解决:

sudo apt-get install libvisp-dev
sudo apt-get install ros-melodic-visp
sudo apt-get install ros-melodic-vision-visp

https://blog.csdn.net/qq_41535193/article/details/124237390#t9

ERROR: 点击Take Sample 闪退

Error processing request: “camera_marker” passed to lookupTransform argument source_frame does not exist.

报错解决:https://blog.csdn.net/gyxx1998/article/details/122238052#t16

打开rqt_image_view 显示对准二维码,然后让rviz中出现了这个坐标

注意realsense需要单独启动

ERROR: 点击Take Sample 闪退

点击check pose 报错

‘tuple‘ object has no attribute ‘joint_trajectory‘

https://blog.csdn.net/LWLGZY/article/details/121106934

修改代码

/home/xty/robot_sim_ws/src/easy_handeye/rqt_easy_handeye/src/rqt_easy_handeye/rqt_calibrationmovements.py 96行 108行

#plan = self.mgc.plan()
plan_success, plan, planning_time, error_code = self.mgc.plan()

ERROR: 点击next pose plan 闪退

挖坑! 这里用的是ag95抓手,以后有需要的话要手动替换其他抓手


结束!

基于几何学习的抓取实验

roslaunch robot_sim grasp_world.launch 
cd ~/your_catkin_ws/                                #这是必要的
rosrun robot_sim geometric_method_grasp             #因为这里要加载mask所以路径要对

wooden_peg ERROR

记得修改代码,然后catkin_make 生效!


点击两下第一个按钮自动执行,成功!

基于机器学习的抓取实验

ERROR:wooden_peg

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UmGucevJ-1655376229503)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/032e7e77-141d-479a-bf94-8f1a5bc64048/2022-06-15_00-57-56屏幕截图.png)]

同理,gpd_method里的main方法注释掉这部分,还要修改下面的循环遍历i < 4!

ERROR:

roslaunch robot_sim gpd_run.launch type:=2 topic:=/cloud_sample

作者写错了路径,在gpd_run.launch文件下,把config_file 的value改成对应gpd文件下的ros_eigen_params.cfg 里面的参数可以按照 eigen_param.cfg进行修改,因为detect_grasp就是用的这个!

使用过程要在那个窗口按q,直到出现selected grasps结果,再按q。

直到rosrun robot_sim GPD_method_grasp这个窗口出现receive grasp,就可以按照视频过程点击两下good grasp实现抓取!!!!!!!!

撒花!

有关基于ROS搭建仿真环境——B站苏的一休抓取环境复现的更多相关文章

  1. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  2. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  3. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  4. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  5. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  6. ruby-on-rails - ruby gem如何在rails环境下工作 - 2

    我试图在rails中了解rubygems是如何变得可以自动使用的,而不是在使用required的文件中gem? 最佳答案 这是通过bundler/setup完成的:http://bundler.io/v1.3/bundler_setup.html.它在您的config/boot.rb文件中是必需的。简而言之,它首先将环境变量设置为指向您的Gemfile:ENV['BUNDLE_GEMFILE']||=File.expand_path('../../Gemfile',__FILE__)然后它通过要求bundler/setup将所有ge

  7. ruby - 我需要从 facebook 游戏中抓取数据——使用 ruby - 2

    修改(澄清问题)我已经花了几天时间试图弄清楚如何从Facebook游戏中抓取特定信息;但是,我遇到了一堵又一堵砖墙。据我所知,主要问题如下。我可以使用Chrome的检查元素工具手动查找我需要的html-它似乎位于iframe中。但是,当我尝试抓取该iframe时,它​​是空的(属性除外):如果我使用浏览器的“查看页面源代码”工具,这与我看到的输出相同。我不明白为什么我看不到iframe中的数据。答案不是它是由AJAX之后添加的。(我知道这既是因为“查看页面源代码”可以读取Ajax添加的数据,也是因为我有b/c我一直等到我可以看到数据页面之后才抓取它,但它仍然不存在)。发生这种情况是因为

  8. RUBY - 网页抓取 - (OpenURI::HTTPError) - 2

    我正在尝试用ruby​​编写一个简单的网络抓取代码。它一直工作到第29个url,然后我收到此错误消息:C:/Ruby193/lib/ruby/1.9.1/open-uri.rb:346:in`open_http':500InternalServerError(OpenURI::HTTPError)fromC:/Ruby193/lib/ruby/1.9.1/open-uri.rb:775:in`buffer_open'fromC:/Ruby193/lib/ruby/1.9.1/open-uri.rb:203:in`blockinopen_loop'fromC:/Ruby193/lib/r

  9. ruby-on-rails - 我需要一个真正的 UNIX RoR 开发环境 - 2

    从一开始,我就是一个Windows高手。我从MS-DOS开始。我安装了Windows2.1以及此后的所有Windows。现在,我家里有10台不同的Windows机器在运行,从Windows7Ultimate到各种版本的WindowsServer。我还没有完成Windows8,也不想去那里。我在服务器和各种软件方面都有UNIX经验,但它并不是我的首选环境。但是,我想我正在转换。我试图假装使用Cygwin和MSYS在Windows下运行UNIX。我的目的是搭建一个开发环境。两者都让我失望了。我花了比开发更多的时间来解决一系列技术问题。这是NotAcceptable。到目前为止,我的Ruby

  10. ruby-on-rails - (Ruby,Rails) 基于角色的身份验证和用户管理...? - 2

    我正在寻找用于Rails的优质管理插件。似乎大多数现有的插件/gem(例如“restful_authentication”、“acts_as_authenticated”)都围绕着self注册等展开。但是,我正在寻找一种功能齐全的基于管理/管理角色的解决方案——但不是简单地附加到另一个非基于角色的解决方案。如果我找不到,我想我会自己动手......只是不想重新发明轮子。 最佳答案 RyanBates最近做了两个关于授权的railscast(注意身份验证和授权之间的区别;身份验证检查用户是否如她所说的那样,授权检查用户是否有权访问资源

随机推荐