ros2(humble)+ArUco markers

本文详细指导如何在Ubuntu22.04系统上安装ROS2Humble版本,使用USB相机并配置aruco_ros,包括下载、工作空间创建、launch文件修改、构建与运行,以及查看aruco_pose输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、环境:

  • Ubuntu22.04
  • ros2 humble
  • USB camera

2、下载 aruco_ros

aruco_ros 下载地址

mkdir -p ros2_ws/aruco_ws/src && cd ros2_ws/aruco_ws/src # 创建工作空间

# 克隆分支; https://mirror.ghproxy.com为github代理
git clone https://mirror.ghproxy.com/https://github.com/pal-robotics/aruco_ros.git -b humble-devel

3、修改launch配置,

文件位置:ros2_ws/aruco_ws/src/aruco_ros/aruco_ros/launch/single.launch.py

修改前建议cp一下

3.1 修改remappings,为camera发布的topic

aruco_single = Node(
    package='aruco_ros',
    executable='single',
    parameters=[aruco_single_params],
    remappings=[('/camera_info', '/camera1/camera_info'),
               ('/image', '/camera1/image_raw')],
)

3.2 修改 marker_id,为生成的marker值

marker_id_arg = DeclareLaunchArgument(
    'marker_id', default_value='582',
    description='Marker ID. '
)

3.3 修改 marker_size,为生成的marker尺寸

marker_size_arg = DeclareLaunchArgument(
    'marker_size', default_value='0.10',
    description='Marker size in m. '
)

4、colcon build

cd ../ # 回到ros2_ws/aruco_ws目录
colcon build
source install/setup.bash

5、生成marker

marker 生成地址

6、运行程序

终端1:

ros2 launch usb_cam camera.launch.py # 终端1、启动相机

终端2:

ros2 launch aruco_ros single.launch.py # 终端2、启动aruco_ros

终端3:

ros2 topic echo /aruco_single/pose # 终端3、查看topic输出

7、运行效果

topic 为:/aruco_single/result

### ROS中解决`joint_state_publisher_gui`意外停止的问题 当遇到 `ERROR: cannot launch node of type [joint_state_publisher_gui/joint_state_publisher_gui]: joint_state_publisher_gui` 的错误时,通常是因为缺少必要的依赖项或者未正确安装该功能包。以下是详细的解决方案: #### 安装缺失的功能包 如果系统提示无法启动节点类型 `[joint_state_publisher_gui/joint_state_publisher_gui]`,则可能尚未安装 `joint_state_publisher_gui` 功能包。可以通过以下命令来安装它[^1]: ```bash sudo apt-get install ros-melodic-joint-state-publisher-gui ``` 对于其他版本的ROS(如Noetic或Humble),可以替换相应的发行版名称并执行类似的命令: ```bash sudo apt install ros-noetic-joint-state-publisher-gui # 对于ROS Noetic sudo apt install ros-humble-joint-state-publisher # 对于ROS Humble ``` 这些命令会自动下载并安装所需的软件包及其依赖项。 #### 配置launch文件 确保在 `.launch` 文件中正确定义了 `joint_state_publisher_gui` 节点。例如,下面是一个典型的配置方式[^2]: ```xml <node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui"/> ``` 如果没有正确指定此节点,则可能导致程序崩溃或其他异常行为。 #### 处理GUI不显示滑块的情况 有时即使成功加载了 `joint_state_publisher_gui`,也可能发现界面上并没有出现用于调整关节角度的滑动条。这可能是由于URDF模型中的某些参数设置不当引起的[^4]。为了排查此类问题,请检查以下几个方面: - **确认存在有效的joint定义**: 确保您的URDF文件包含了至少一个具有有限范围(`upper_limit`, `lower_limit`) 和初始位置 (`initial_position`) 属性的关节。 示例片段如下所示: ```xml <joint name="base_to_link_1" type="revolute"> <origin xyz="0 0 0" rpy="0 0 0"/> <parent link="base_link"/> <child link="link_1"/> <axis xyz="0 0 1"/> <limit lower="-3.14" upper="3.14" effort="1000.0" velocity="0.5"/> </joint> ``` - **验证rviz可视化插件已启用**: 如果您正在使用RVIZ查看机器人状态, 则还需要保证已经激活了“Interactive Markers” 插件以及选择了正确的TF帧作为参考系. 通过上述方法应该能够有效缓解乃至彻底消除因 `joint_state_publisher_gui` 导致的各种运行期错误现象。 ```python import rospy from sensor_msgs.msg import JointState def publish_joint_states(): pub = rospy.Publisher('joint_states', JointState, queue_size=10) rospy.init_node('custom_joint_state_publisher') rate = rospy.Rate(10) while not rospy.is_shutdown(): js = JointState() js.header.stamp = rospy.Time.now() js.name = ['joint1', 'joint2'] js.position = [0.1, -0.2] pub.publish(js) rate.sleep() if __name__ == '__main__': try: publish_joint_states() except rospy.ROSInterruptException: pass ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值