ROS noetic 使用 apriltag_ros 功能包检测相机位姿

1. apriltag_ros 功能包安装

1.1 安装依赖库apriltag

(不要放到ROS工作空间里)

git clone https://github.com/AprilRobotics/apriltag.git      

1.2 编译依赖库apriltag 

cd apriltag
mkdir build
cd build
cmake ..  
make
sudo make install  #安装到ros中

1.3 安装 apriltag_ros 功能包,参考官方教程:http://wiki.ros.org/apriltag_ros

mkdir -p apriltag_ws/src
cd apriltag_ws/src
git clone https://github.com/AprilRobotics/apriltag_ros.git 
catkin_make

2. apriltag_ros 功能包使用

2.1 编辑运行的配置文件

cd apriltag_ros/apriltag_ros/config
sudo gedit settings.yaml

settings.yaml 文件 (配置apriltag算法)内容修改如下:

     I. tag_family:时设置检测的标签类型,一般用’tag36h11’ 。
     II. 如果想发布TF坐标,需要把 publish_tf 设置为 true .

# AprilTag 3 code parameters
# Find descriptions in apriltag/include/apriltag.h:struct apriltag_detector
#                      apriltag/include/apriltag.h:struct apriltag_family
tag_family:        'tag36h11' # options: tagStandard52h13, tagStandard41h12, tag36h11, tag25h9, tag16h5, tagCustom48h12, tagCircle21h7, tagCircle49h12
tag_threads:       2          # default: 2
tag_decimate:      1.0        # default: 1.0
tag_blur:          0.0        # default: 0.0
tag_refine_edges:  1          # default: 1
tag_debug:         0          # default: 0
max_hamming_dist:  2          # default: 2 (Tunable parameter with 2 being a good choice - values >=3 consume large amounts of memory. Choose the largest value possible.)
# Other parameters
publish_tf:        true       # default: false
transport_hint:    "raw"      # default: raw, see http://wiki.ros.org/image_transport#Known_Transport_Packages for options

sudo gedit tags.yaml

   tags.yaml 文件(定义要查找的标签和标签簇)内容修改如下:

standalone_tags:
  [
    {id: 0, size: 0.095, name: Tag36h11_0 } # id 对应于生成标签的ID号,size对应标签的大小(单位:米)
  ]

注意添加你要设定的二维码标签的ID,和size(单位:m)

2.2 修改launch 文件

这里主要是为了启用对应的相机话题(/usb_cam)和图像话题(/usb_cam/image_raw)

cd apriltag_ros/apriltag_ros/launch
sudo gedit continuous_detection.launch

<launch>
  <arg name="launch_prefix" default="" /> <!-- set to value="gdbserver localhost:10000" for remote debugging -->
  <arg name="node_namespace" default="apriltag_ros_continuous_node" />
  <arg name="camera_name" default="/usb_cam" />
  <arg name="image_topic" default="image_raw" />

 <arg name="camera_frame" default="usb_cam" />   #发布一个坐标系

  <!-- Set parameters -->
  <rosparam command="load" file="$(find apriltag_ros)/config/settings.yaml" ns="$(arg node_namespace)" />
  <rosparam command="load" file="$(find apriltag_ros)/config/tags.yaml" ns="$(arg node_namespace)" />
 
  <node pkg="apriltag_ros" type="apriltag_ros_continuous_node" name="$(arg node_namespace)" clear_params="true" output="screen" launch-prefix="$(arg launch_prefix)" >
    <!-- Remap topics from those used in code to those on the ROS network -->
    <remap from="image_rect" to="$(arg camera_name)/$(arg image_topic)" />
    <remap from="camera_info" to="$(arg camera_name)/camera_info" />

    <param name="publish_tag_detections_image" type="bool" value="true" />      <!-- default: false -->
  </node>
</launch>

 3. 运行检测

3.1 打开相机

roslaunch usb_cam usb_cam-test.launch  

注:若没安装过usb_cam包的话先执行以下命令安装:

sudo apt-get install ros-noetic-usb-cam

然后配置launch文件相关参数:

cd /opt/ros/noetic/share/usb_cam/launch
sudo gedit usb_cam-test.launch

<launch>
  <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" >
    <param name="video_device" value="/dev/video2" />
    <param name="image_width" value="1920" />
    <param name="image_height" value="1080" />

    <param name="pixel_format" value="yuyv" />
    <param name="color_format" value="yuv422p" />
    <param name="camera_frame_id" value="usb_cam" />
    <param name="io_method" value="mmap"/>
  </node>
  <node name="image_view" pkg="image_view" type="image_view" respawn="false" output="screen">
    <remap from="image" to="/usb_cam/image_raw"/>
    <param name="autosize" value="true" />
  </node>
</launch>

param name=“video_device” value="/dev/video0" 参数用于指定发布的摄像头设备,可以用ls指令查看摄像头的设备名称:

ls /dev/video*

本文外接的webcam对应的是video2

3.2 发布ROS节点

roslaunch apriltag_ros continuous_detection.launch

3.3 打印检测消息

source ./devel/setup.bash  #新开一个终端一定要先source一下!
rostopic echo /tag_detections

 3.4 可视化

rviz

打开rviz,修改Fixed Frame 为 usb_cam, 点击Add添加Image和TF, Image Topic 选择 /tag_detections_image,如下图所示:

 检测结果如图所示:

 

ROS Noetic中,常用的强化学习功能是rl-texplore-rosros_gym。下面是这两个的安装和使用方法: 1. 安装rl-texplore-ros功能 ``` sudo apt-get install ros-noetic-rl-texplore-ros ``` 2. 安装ros_gym功能 ``` sudo apt-get install ros-noetic-ros-gym ``` 3. 使用rl-texplore-ros进行强化学习 rl-texplore-ros是一个用于强化学习的ROS功能,它提供了一个通用的框架,可以用于快速开发和测试各种强化学习算法。使用rl-texplore-ros进行强化学习的步骤如下: - 创建一个新的ROS,例如"my_rl_package",并进入该的目录。 ``` mkdir my_rl_package && cd my_rl_package ``` - 创建一个新的强化学习任务,例如"my_rl_task"。 ``` rosrun rl_texplore_ros rl_texplore_node.py -e my_rl_task ``` - 编写一个强化学习算法,并使用rl-texplore-ros进行测试和评估。 4. 使用ros_gym进行强化学习 ros_gym是一个ROS接口,可以将ROS机器人和环境集成到OpenAI Gym中,从而可以使用OpenAI Gym中的各种强化学习算法。使用ros_gym进行强化学习的步骤如下: - 创建一个新的ROS,例如"my_gym_package",并进入该的目录。 ``` mkdir my_gym_package && cd my_gym_package ``` - 创建一个新的Gym环境,例如"my_gym_env"。在这个环境中,需要实现reset、step和render等函数,以控制机器人的行为并返回环境的状态和奖励。 ``` roscd ros_gym && python scripts/create_gym_env.py my_gym_env ``` - 在OpenAI Gym中使用自己的环境和强化学习算法进行测试和评估。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值