系统:ubuntu20
ros:noetic
gazebo:11
编译项目前先安装一些相关的库以及软件:
sudo apt install ros-noetic-libfranka ros-noetic-ros-control ros-noetic-ros-controllers ros-noetic-boost-sml ros-noetic-moveit
mkdir -p catkin_ws/src
cd catkin_ws/src
git clone https://github.com/zyxhmn/ROSArmVision.git
cd ..
catkin_make
打开gazebo+rviz+moveit:
roslaunch panda_moveit_config demo_gazebo.launch world:=<your_path>src/zyxhmn_gazebo/worlds/room.world
打开视觉检测节点:
rosrun zyxhmn_gazebo object_detect.py
打开机械臂拾取控制节点:
rosrun zyxhmn_gazebo pick_node.py
在src/franka/franka_description/robots/panda/panda.urdf.xacro
文件合适位置添加代码:
</xacro:franka_robot>
<xacro:include filename="$(find realsense_gazebo_description)/urdf/_d435i.urdf.xacro"/>
<xacro:sensor_d435i parent="world" name="D435i_camera" topics_ns="D435i_camera">
<!-- <origin xyz="0.4 0.85 1.5" rpy="0 -1.5708 0"/> -->
<origin xyz="0 0 1.5" rpy="3.14159 1.5708 0"/>
</xacro:sensor_d435i>
作用为在环境中深度相机。
修改src/realsense/realsense_gazebo_description/urdf/_d435i.urdf.xacro
以及src/realsense/realsense_gazebo_description/urdf/_d435i.gazebo.xacro
中的align_depth:=false
为align_depth:=true
。
目的是为了使用已配准的深度图像 (Aligned Depth Image)
Intel RealSense ROS 包通常会提供一个已经处理过的深度图像话题,该话题中的每个深度像素值都直接对应于彩色图像相同坐标位置的深度。这省去了我们手动配准的麻烦。
此时使用rostopic list | grep aligned
输出如下:
❯ rostopic list | grep aligned
/D435i_camera/aligned_depth_to_color/camera_info
/D435i_camera/aligned_depth_to_color/image_raw
/D435i_camera/aligned_depth_to_color/image_raw/compressed
/D435i_camera/aligned_depth_to_color/image_raw/compressed/parameter_descriptions
/D435i_camera/aligned_depth_to_color/image_raw/compressed/parameter_updates
/D435i_camera/aligned_depth_to_color/image_raw/compressedDepth
/D435i_camera/aligned_depth_to_color/image_raw/compressedDepth/parameter_descriptions
/D435i_camera/aligned_depth_to_color/image_raw/compressedDepth/parameter_updates
/D435i_camera/aligned_depth_to_color/image_raw/theora
/D435i_camera/aligned_depth_to_color/image_raw/theora/parameter_descriptions
/D435i_camera/aligned_depth_to_color/image_raw/theora/parameter_updates
文件位于zyxhmn_gazebo/worlds/room.world
,下载自gazebo模型库的living room,并对其进行修改。
通过opencv识别颜色以及轮廓来检测目标物体,并且发布其相对与world坐标的位置。
具体可见视频