在 docker 镜像中使用 rviz
可以通过在镜像中安装 x11vnc 来实现.
apt install -y x11vnc xvfb
mkdir ~/.vnc
x11vnc -storepasswd 1234 ~/.vnc/passwd
x11vnc -forever -usepw -create -shared
最后一行启动时带上了 -shared 参数表示允许多个 vncviewer 客户端同时连接. 使用这种方式打开的 GUI 界面可能在最上方缺少最小化, 全屏以及关闭按钮. 如果软件本身没有关闭按钮的话, 可能需要在命令行终端找到对应的进程然后通过 kill 命令进行关闭了.
参考资料:
使用 rqt_reconfigure 动态调整 ros 节点参数
apt update
apt install -y ros-${ROS_DISTRO}-rqt-reconfigure
其中 ${ROS_DISTRO} 替换成对应的 ROS 名称, 如 humble. 安装之后执行 ros2 run rqt_reconfigure rqt_reconfigure 启动, 在界面中选择需要修改的 ros 节点即可操作修改参数, 最后点击保存即可.
sensor_msgs/Image 和 sensor_msgs/CompressedImage 之间的互相转换
首先使用如下命令安装图像转换所需要的包:
apt install ros-${ROS_DISTRO}-image-transport-plugins
# 或者使用如下的命令安装所有图像转换所需的包
apt install ros-${ROS_DISTRO}-image-transport* -y
其中 ${ROS_DISTRO} 为 ROS 对应的版本,如 humble。然后使用 ros2 topic list -t 列出所有话题,找到需要转换的话题,执行以下命令即可:
# 对于 image 转 compressed image
ros2 run image_transport republish raw compressed --ros-args --remap in:=/target --remap out/compressed:=/target/compressed`
# 对于 compressed image 转 image
ros2 run image_transport republish compressed raw --ros-args --remap in/compressed:=image_raw/compressed --remap out:=image_raw/uncompressed
其中的 /target, /target/compressed, image_raw/compressed, image_raw/uncompressed 需要对应的修改成实际需要转换的输入输出话题名称。
参考资料:
常用命令速查
创建命令
- 创建包:
ros2 pkg create --build-type ament_camke <package_name>。 - 创建包时指定依赖(省去了手动修改 xml 和 cmake 文件的时间):
ros2 pkg create <pakcage_name> --build-type ament_cmake --dependencies <dep_pkg1> rclcpp std_msgs <dep_pkg2>,如依赖的包为自己开发的则需要先首先source对应的脚本。 - 创建时同时创建一个 node:
ros2 pkg create <package_name> --build-type ament_camke --node-name <node_name>。 - 官方的教程都是创建以可执行程序为结果的节点,若需要创建库文件,可以参考 How to create a ros2 C++ Library, How to create a ROS2 library。
编译命令
- 编译所有包:
colcon build。 - 编译指定包:
colcon build --packages-select <package_name>,若希望强制重新配置 cmake 可以额外带上--cmake-force-configure参数。若编译时需要显示完整的 cmake 编译信息加上--event-handlers console_direct+参数。