目标检测与跟踪 (Debug)-- 问题集锦
1. 多usb设备以及摄像头端口地址分配问题
https://blog.csdn.net/xp_fangfei/article/details/129516515?spm=1001.2014.3001.5506
从以上两图可以知道同一个摄像头的video0和video1或video0和video1两个的ATTR{index}是不一样的,索引可以加上这一项进行区分。
在/etc/udev/rules.d/下,创建.rules 规则配置文件;
在该文件中写入以下内容完成绑定:
KERNEL=="video0", ATTR{index}=="0", KERNELS=="2-4.2:1.0", MODE:="0777", SYMLINK+="video_right"
完成绑定后重启计算机,就完成了USB 口的映射;
2. 双版本ROS兼容性问题
2.1 版本切换
使用鱼香肉丝配置终端交互式版本切换及选择:
# >>> fishros initialize >>>
echo "ros:foxy(1) noetic(2) ?"
read choose
case $choose in
1) source /opt/ros/foxy/setup.bash;
source ~/cyclonedds_ws/install/setup.bash;
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp;
export CYCLONEDDS_URI=~/cyclonedds_ws/cyclonedds.xml;
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH;;
2) source /opt/ros/noetic/setup.bash;
source /home/unitree/catkin_ws/devel/setup.bash;;
esac
2.2 python环境配置
参考:
1. Jetson Xavier NX / Orin NX ROS及视觉检测环境配置、移植、部署指南
https://blog.csdn.net/hhaowang/article/details/159160567?spm=1001.2014.3001.5501
https://blog.csdn.net/hhaowang/article/details/159160567?spm=1001.2014.3001.5501https://blog.csdn.net/hhaowang/article/details/159487452?spm=1001.2014.3001.5501
https://blog.csdn.net/hhaowang/article/details/159487452?spm=1001.2014.3001.55012. 目标检测与跟踪(10)-- Jetson Xavier NX刷机、移植&部署YOLOv8量化模型(中)
https://blog.csdn.net/hhaowang/article/details/159553905?spm=1001.2014.3001.5501
https://blog.csdn.net/hhaowang/article/details/159553905?spm=1001.2014.3001.55013. 目标检测与跟踪(13)-- Jetson Xavier NX / Orin NX 松灵机械臂PiPer SDK、ROS功能包、官方文档解读
2.3 异构通信ros1_bridge配置
针对 Ubuntu 20.04 + ROS1 Noetic + ROS2 Foxy 给出完整步骤。
一、前提条件
- 系统:Ubuntu 20.04(必须)
- 已安装:
- ROS1 Noetic:
/opt/ros/noetic - ROS2 Foxy:
/opt/ros/foxy
- ROS1 Noetic:
- 确认环境正常:
# ROS1
source /opt/ros/noetic/setup.bash
roscore --version
# ROS2
source /opt/ros/foxy/setup.bash
ros2 --version
二、方式 1:直接安装二进制(简单、推荐)
# 更新
sudo apt update
# 安装 foxy 版 ros1_bridge
sudo apt install ros-foxy-ros1-bridge
安装后会自动放在
/opt/ros/foxy里,可直接使用,无需编译。
三、方式 2:源码编译安装(适合自定义 / 最新版)
1. 创建工作空间
mkdir -p ~/ros1_bridge_ws/src
cd ~/ros1_bridge_ws/src
# 拉取 foxy 分支源码
git clone -b foxy https://github.com/ros2/ros1_bridge.git
2. 同时导入 ROS1 + ROS2 环境
关键:编译前必须同时 source 两个环境!
cd ~/ros1_bridge_ws
# 载入 ROS1 Noetic
source /opt/ros/noetic/setup.bash
# 载入 ROS2 Foxy
source /opt/ros/foxy/setup.bash
3. 编译 ros1_bridge
colcon build --packages-select ros1_bridge \
--cmake-force-configure \
--cmake-args -DBUILD_TESTING=OFF
- 成功后会生成:
~/ros1_bridge_ws/install
4. 生效环境
source ~/ros1_bridge_ws/install/setup.bash
四、运行测试(必做)
终端 1:启动 ROS1 Core
source /opt/ros/noetic/setup.bash
roscore
终端 2:启动 ros1_bridge
# 若用二进制安装:
source /opt/ros/foxy/setup.bash
# 若用源码编译:
# source ~/ros1_bridge_ws/install/setup.bash
ros2 run ros1_bridge dynamic_bridge --bridge-all-topics
终端 3:ROS1 发消息
source /opt/ros/noetic/setup.bash
rostopic pub /test std_msgs/String "data: 'hello from ros1'" -r 1
终端 4:ROS2 收消息
source /opt/ros/foxy/setup.bash
ros2 topic echo /test std_msgs/String
能看到 hello from ros1 即成功。
五、常见问题
- 编译报错:找不到 ROS1 头文件
- 确认编译前 同时 source 了 noetic 和 foxy
- 运行时提示:ROS_MASTER_URI not set
- 桥接端需能访问 ROS1 Core,默认
http://localhost:11311 - 可手动 export:
export ROS_MASTER_URI=http://localhost:11311
- 桥接端需能访问 ROS1 Core,默认
3. 编译时需要对自定义消息类型做先后编译:
ros1-ros2-ros1_bridge的顺序进行编译
运行脚本
#!/bin/bash
# 先加载ROS1
source /opt/ros/noetic/setup.bash
source /home/unitree/catkin_ws/devel/setup.bash
# 再加载ROS2
source /opt/ros/foxy/setup.bash
source /home/unitree/ros1_bridge_ws/install/setup.bash
source /home/unitree/ros2_msg_bridge/install/setup.bash
# 启动动态双向桥
ros2 run ros1_bridge dynamic_bridge --bridge-all-topics
更多推荐


所有评论(0)